boseiju/ability_tree/event/creature_action_event/
creature_dies_action.rs

1use crate::ability_tree::AbilityTreeNode;
2use crate::ability_tree::MAX_CHILDREN_PER_NODE;
3
4/// Action for a creature to deal combat damage.
5///
6/// Combat damage is the special kind of damage that creature deals when
7/// they fight each other, or when they attack a player.
8#[derive(serde::Serialize, serde::Deserialize)]
9#[derive(Debug, Clone, PartialEq, Eq)]
10pub struct CreatureDiesAction {
11    #[cfg(feature = "spanned_tree")]
12    pub span: crate::ability_tree::span::TreeSpan,
13}
14
15impl AbilityTreeNode for CreatureDiesAction {
16    fn node_id(&self) -> usize {
17        use idris::Idris;
18        crate::ability_tree::NodeKind::CreatureDiesAction.id()
19    }
20
21    fn children(&self) -> arrayvec::ArrayVec<&dyn AbilityTreeNode, MAX_CHILDREN_PER_NODE> {
22        arrayvec::ArrayVec::new_const()
23    }
24
25    fn display(&self, out: &mut crate::utils::TreeFormatter<'_>) -> std::io::Result<()> {
26        use std::io::Write;
27        write!(out, "creature dies")?;
28        Ok(())
29    }
30
31    fn node_tag(&self) -> &'static str {
32        "creature action: dies"
33    }
34
35    #[cfg(feature = "spanned_tree")]
36    fn node_span(&self) -> crate::ability_tree::span::TreeSpan {
37        self.span
38    }
39}
40
41#[cfg(feature = "parser")]
42impl crate::utils::DummyInit for CreatureDiesAction {
43    fn dummy_init() -> Self {
44        Self {
45            #[cfg(feature = "spanned_tree")]
46            span: Default::default(),
47        }
48    }
49}