boseiju/ability_tree/object/
attached_to.rs1use crate::ability_tree::AbilityTreeNode;
2use crate::ability_tree::MAX_CHILDREN_PER_NODE;
3
4#[derive(serde::Serialize, serde::Deserialize)]
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
10pub struct ObjectAttachedTo {
11 #[cfg(feature = "spanned_tree")]
12 pub span: crate::ability_tree::span::TreeSpan,
13}
14
15impl AbilityTreeNode for ObjectAttachedTo {
16 fn node_id(&self) -> usize {
17 use crate::ability_tree::tree_node::TerminalNodeKind;
18 use idris::Idris;
19 crate::ability_tree::NodeKind::Terminal(TerminalNodeKind::ObjectAttachedTo).id()
20 }
21
22 fn children(&self) -> arrayvec::ArrayVec<&dyn AbilityTreeNode, MAX_CHILDREN_PER_NODE> {
23 arrayvec::ArrayVec::new()
24 }
25
26 fn display(&self, out: &mut crate::utils::TreeFormatter<'_>) -> std::io::Result<()> {
27 use std::io::Write;
28 write!(out, "object attached to")
29 }
30
31 fn node_tag(&self) -> &'static str {
32 "object attached to"
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 ObjectAttachedTo {
43 fn dummy_init() -> Self {
44 Self {
45 #[cfg(feature = "spanned_tree")]
46 span: Default::default(),
47 }
48 }
49}