@@ -27,15 +27,47 @@ fn default_icon_scale() -> f32 {
2727 0.25
2828}
2929
30- #[ derive( Default , Clone , Debug , Deserialize ) ]
30+ fn default_engine_values ( ) -> BTreeMap < u32 , TriggerValue > {
31+ BTreeMap :: from ( [
32+ (
33+ 0 ,
34+ TriggerValue :: new ( Some ( "Visual Object" ) , TrigDataType :: Hashcode ) ,
35+ ) ,
36+ ( 1 , TriggerValue :: new ( Some ( "File" ) , TrigDataType :: Hashcode ) ) ,
37+ (
38+ 2 ,
39+ TriggerValue :: new ( Some ( "Script Index" ) , TrigDataType :: U32 ) ,
40+ ) ,
41+ (
42+ 3 ,
43+ TriggerValue :: new ( Some ( "Collision Index" ) , TrigDataType :: U32 ) ,
44+ ) ,
45+ (
46+ 4 ,
47+ TriggerValue :: new ( Some ( "Trigger Color" ) , TrigDataType :: U32 ) ,
48+ ) ,
49+ ] )
50+ }
51+
52+ #[ derive( Clone , Debug , Deserialize ) ]
3153pub struct TriggerInformation {
3254 #[ serde( default = "default_icon_scale" ) ]
3355 pub icon_scale : f32 ,
34- #[ serde( default ) ]
56+ #[ serde( default = "default_engine_values" ) ]
3557 pub extra_values : BTreeMap < u32 , TriggerValue > ,
3658 pub triggers : BTreeMap < u32 , TriggerDefinition > ,
3759}
3860
61+ impl Default for TriggerInformation {
62+ fn default ( ) -> Self {
63+ Self {
64+ icon_scale : default_icon_scale ( ) ,
65+ extra_values : default_engine_values ( ) ,
66+ triggers : Default :: default ( ) ,
67+ }
68+ }
69+ }
70+
3971#[ derive( Clone , Debug , Deserialize ) ]
4072pub struct TriggerDefinition {
4173 pub name : String ,
@@ -51,6 +83,15 @@ pub struct TriggerValue {
5183 pub dtype : TrigDataType ,
5284}
5385
86+ impl TriggerValue {
87+ pub fn new ( name : Option < & str > , dtype : TrigDataType ) -> Self {
88+ Self {
89+ name : name. map ( |v| v. to_owned ( ) ) ,
90+ dtype,
91+ }
92+ }
93+ }
94+
5495#[ derive( Copy , Clone , Debug , Deserialize ) ]
5596#[ serde( rename_all = "lowercase" ) ]
5697pub enum TrigDataType {
0 commit comments