boseiju/ability_tree/event/
enters_the_battlefield_event.rs

1use crate::ability_tree::AbilityTreeNode;
2use crate::ability_tree::MAX_CHILDREN_PER_NODE;
3
4/// Fixme: doc
5#[derive(serde::Serialize, serde::Deserialize)]
6#[derive(Debug, Clone, PartialEq, Eq)]
7pub struct EntersTheBattlefieldEvent {
8    pub object: crate::ability_tree::object::ObjectReference,
9    #[cfg(feature = "spanned_tree")]
10    pub span: crate::ability_tree::span::TreeSpan,
11}
12
13impl crate::ability_tree::AbilityTreeNode for EntersTheBattlefieldEvent {
14    fn node_id(&self) -> usize {
15        use idris::Idris;
16        crate::ability_tree::NodeKind::EntersTheBattlefieldEvent.id()
17    }
18
19    fn children(&self) -> arrayvec::ArrayVec<&dyn AbilityTreeNode, MAX_CHILDREN_PER_NODE> {
20        let mut children = arrayvec::ArrayVec::new_const();
21        children.push(&self.object as &dyn AbilityTreeNode);
22        children
23    }
24
25    fn display(&self, out: &mut crate::utils::TreeFormatter<'_>) -> std::io::Result<()> {
26        use std::io::Write;
27        write!(out, "object enters the battlefield:")?;
28        out.push_final_branch()?;
29        self.object.display(out)?;
30        out.pop_branch();
31        Ok(())
32    }
33
34    fn node_tag(&self) -> &'static str {
35        "enters the battlefield event"
36    }
37
38    #[cfg(feature = "spanned_tree")]
39    fn node_span(&self) -> crate::ability_tree::span::TreeSpan {
40        self.span
41    }
42}
43
44#[cfg(feature = "parser")]
45impl crate::utils::DummyInit for EntersTheBattlefieldEvent {
46    fn dummy_init() -> Self {
47        Self {
48            object: crate::utils::dummy(),
49            #[cfg(feature = "spanned_tree")]
50            span: Default::default(),
51        }
52    }
53}