use phf::{Map, phf_map};
use crate::gdobj::GDObjPropType;
pub static PROPERTY_TABLE: Map<u16, (&'static str, GDObjPropType)> = phf_map! {
1u16 => ("object ID", GDObjPropType::Int),
2u16 => ("x pos", GDObjPropType::Float),
3u16 => ("y pos", GDObjPropType::Float),
4u16 => ("is flipped horizontally?", GDObjPropType::Bool),
5u16 => ("is flipped vertically?", GDObjPropType::Bool),
6u16 => ("rotation", GDObjPropType::Float),
7u16 => ("Red", GDObjPropType::Int),
8u16 => ("Green", GDObjPropType::Int),
9u16 => ("Blue", GDObjPropType::Int),
10u16 => ("duration / group trigger chance", GDObjPropType::Float),
11u16 => ("Touch triggerable", GDObjPropType::Bool),
15u16 => ("Using player colour 1", GDObjPropType::Bool),
16u16 => ("Using player colour 2", GDObjPropType::Bool),
17u16 => ("Blending enabled", GDObjPropType::Bool),
20u16 => ("Editor layer 1", GDObjPropType::Int),
21u16 => ("Object colour", GDObjPropType::ColourChannel),
22u16 => ("Secondary colour", GDObjPropType::ColourChannel),
23u16 => ("Colour channel", GDObjPropType::ColourChannel),
24u16 => ("Z layer", GDObjPropType::Int),
25u16 => ("Z order", GDObjPropType::Int),
28u16 => ("Move units x", GDObjPropType::Int),
29u16 => ("Move units y", GDObjPropType::Int),
30u16 => ("Move easing", GDObjPropType::Easing),
31u16 => ("Base64-encoded text", GDObjPropType::Text),
32u16 => ("Scale", GDObjPropType::Float),
34u16 => ("Is group parent?", GDObjPropType::Bool),
35u16 => ("Opacity", GDObjPropType::Float),
36u16 => ("Is interactable?", GDObjPropType::Bool),
45u16 => ("Pulse fade in time", GDObjPropType::Float),
46u16 => ("Pulse hold time", GDObjPropType::Float),
47u16 => ("Pulse fade out time", GDObjPropType::Float),
48u16 => ("HSV is enabled", GDObjPropType::Bool),
49u16 => ("Copy colour specs", GDObjPropType::Text),
50u16 => ("Copy colour from channel", GDObjPropType::Bool),
51u16 => ("Target item", GDObjPropType::Group),
52u16 => ("Pulse group?", GDObjPropType::Bool),
56u16 => ("Activate group", GDObjPropType::Bool),
57u16 => ("Groups", GDObjPropType::Group),
58u16 => ("Follow player's x movement", GDObjPropType::Bool),
59u16 => ("Follow player's y movement", GDObjPropType::Bool),
60u16 => ("Copy opacity", GDObjPropType::Bool),
61u16 => ("Editor layer 2", GDObjPropType::Int),
62u16 => ("Spawn triggerable", GDObjPropType::Bool),
63u16 => ("Spawn delay", GDObjPropType::Float),
64u16 => ("Don't fade", GDObjPropType::Bool),
65u16 => ("Pulse main colour only", GDObjPropType::Bool),
66u16 => ("Pulse detail colour only", GDObjPropType::Bool),
67u16 => ("Don't enter", GDObjPropType::Bool),
68u16 => ("Rotate degrees", GDObjPropType::Float),
69u16 => ("Rotate x360", GDObjPropType::Int),
70u16 => ("Lock object rotation", GDObjPropType::Bool),
71u16 => ("Target item 2", GDObjPropType::Group),
72u16 => ("X-axis follow mod", GDObjPropType::Float),
73u16 => ("Y-axis follow mod", GDObjPropType::Float),
75u16 => ("Shake strength", GDObjPropType::Float),
76u16 => ("Animation ID", GDObjPropType::Int),
77u16 => ("Target count", GDObjPropType::Int),
80u16 => ("Input item 1", GDObjPropType::Item),
81u16 => ("Touch hold mode", GDObjPropType::Bool),
82u16 => ("Touch toggle on/off", GDObjPropType::Unknown),
84u16 => ("Shake interval", GDObjPropType::Float),
85u16 => ("Easing rate", GDObjPropType::Float),
86u16 => ("Exclusive pulse mode", GDObjPropType::Bool),
87u16 => ("Multitriggerable", GDObjPropType::Bool),
89u16 => ("Touch dual mode", GDObjPropType::Bool),
90u16 => ("Follow speed", GDObjPropType::Float),
91u16 => ("Follow delay", GDObjPropType::Float),
92u16 => ("Follow offset", GDObjPropType::Int),
93u16 => ("Trigger on exit", GDObjPropType::Bool),
94u16 => ("Dynamic block?", GDObjPropType::Bool),
95u16 => ("Input item 2", GDObjPropType::Item),
96u16 => ("No glow", GDObjPropType::Bool),
99u16 => ("Multi activate", GDObjPropType::Bool),
100u16 => ("Target move mode", GDObjPropType::Unknown),
101u16 => ("Target move mode axis lock", GDObjPropType::Unknown),
102u16 => ("Disable preview", GDObjPropType::Bool),
103u16 => ("Is high detail?", GDObjPropType::Bool),
104u16 => ("count trigger Multi activate", GDObjPropType::Bool),
105u16 => ("Max follow speed", GDObjPropType::Float),
116u16 => ("No object effects", GDObjPropType::Bool),
117u16 => ("Reverses gameplay", GDObjPropType::Bool),
120u16 => ("Timewarp amount", GDObjPropType::Float),
121u16 => ("No touch?", GDObjPropType::Bool),
128u16 => ("X scale", GDObjPropType::Float),
129u16 => ("Y scale", GDObjPropType::Float),
131u16 => ("Y warp angle", GDObjPropType::Float),
132u16 => ("X warp angle", GDObjPropType::Float),
133u16 => ("Only move", GDObjPropType::Bool),
134u16 => ("Passable", GDObjPropType::Bool),
135u16 => ("Hidden", GDObjPropType::Bool),
136u16 => ("Non-stick X", GDObjPropType::Bool),
137u16 => ("Is ice block?", GDObjPropType::Bool),
138u16 => ("Controlling player 1", GDObjPropType::Bool),
141u16 => ("Follow camera's x movement", GDObjPropType::Bool),
142u16 => ("Follow camera's y movement", GDObjPropType::Bool),
143u16 => ("X movement multiplier", GDObjPropType::Float),
144u16 => ("Y movement multiplier", GDObjPropType::Float),
148u16 => ("Gravity", GDObjPropType::Float),
150u16 => ("New X Scale", GDObjPropType::Float),
151u16 => ("New Y Scale", GDObjPropType::Float),
152u16 => ("Random probabilities list", GDObjPropType::ProbabilitiesList),
153u16 => ("Div by value X", GDObjPropType::Bool),
154u16 => ("Div by value Y", GDObjPropType::Bool),
193u16 => ("Grip slope?", GDObjPropType::Bool),
198u16 => ("Touch player only", GDObjPropType::Unknown),
200u16 => ("Controlling player 2", GDObjPropType::Bool),
201u16 => ("Controlling target player", GDObjPropType::Bool),
210u16 => ("No legacy HSV", GDObjPropType::Bool),
217u16 => ("Enter/Exit transition config", GDObjPropType::Unknown),
274u16 => ("Parent groups", GDObjPropType::Unknown),
279u16 => ("Is area parent?", GDObjPropType::Bool),
284u16 => ("Single player touch", GDObjPropType::Bool),
289u16 => ("Non-stick Y", GDObjPropType::Bool),
343u16 => ("Enter effect channel", GDObjPropType::Unknown),
344u16 => ("Target transition channel", GDObjPropType::Unknown),
356u16 => ("Scale stick", GDObjPropType::Bool),
369u16 => ("Center effect", GDObjPropType::Bool),
371u16 => ("Camera zoom", GDObjPropType::Float),
372u16 => ("No audio scale", GDObjPropType::Bool),
385u16 => ("X reference position", GDObjPropType::Unknown),
386u16 => ("Y reference position", GDObjPropType::Unknown),
387u16 => ("X reference is relative", GDObjPropType::Bool),
388u16 => ("Y reference is relative", GDObjPropType::Bool),
389u16 => ("Seconds only", GDObjPropType::Bool),
390u16 => ("Special counter mode", GDObjPropType::Unknown),
391u16 => ("Counter alignment", GDObjPropType::Int),
392u16 => ("Song ID", GDObjPropType::Int),
393u16 => ("Small step", GDObjPropType::Bool),
394u16 => ("Directional move mode", GDObjPropType::Bool),
395u16 => ("Center group id", GDObjPropType::Group),
396u16 => ("Directional mode distance", GDObjPropType::Int),
397u16 => ("Dynamic move", GDObjPropType::Bool),
399u16 => ("Prep?", GDObjPropType::Bool),
400u16 => ("Load Prep?", GDObjPropType::Bool),
401u16 => ("Rotation target ID", GDObjPropType::Int),
402u16 => ("Rotation offset", GDObjPropType::Float),
403u16 => ("Dynamic move easing", GDObjPropType::Int),
404u16 => ("Song speed", GDObjPropType::Int),
406u16 => ("Song volume", GDObjPropType::Float),
408u16 => ("Start offset in ms", GDObjPropType::Int),
409u16 => ("Fade in time in ms", GDObjPropType::Int),
410u16 => ("End offset in ms", GDObjPropType::Int),
411u16 => ("Fade out time in ms", GDObjPropType::Int),
413u16 => ("Loop song?", GDObjPropType::Bool),
430u16 => ("Event listeners", GDObjPropType::EventsList),
432u16 => ("Song channel", GDObjPropType::Unknown),
441u16 => ("Spawn ordered", GDObjPropType::Bool),
442u16 => ("Spawn ID remaps", GDObjPropType::SpawnRemapsList),
444u16 => ("No multiactivate platformer", GDObjPropType::Bool),
445u16 => ("Claim touch?", GDObjPropType::Bool),
446u16 => ("Object material", GDObjPropType::Unknown),
447u16 => ("Event extra ID", GDObjPropType::Group),
452u16 => ("Relative rotation", GDObjPropType::Bool),
460u16 => ("No end effects?", GDObjPropType::Bool),
461u16 => ("No end sound effects?", GDObjPropType::Bool),
466u16 => ("Is Timer?", GDObjPropType::Bool),
467u16 => ("Start time", GDObjPropType::Bool),
468u16 => ("Don't override", GDObjPropType::Bool),
469u16 => ("Ignore timewarp", GDObjPropType::Bool),
470u16 => ("Time value multipler", GDObjPropType::Float),
471u16 => ("Start paused timer", GDObjPropType::Float),
472u16 => ("Stop time counter?", GDObjPropType::Bool),
473u16 => ("Target time", GDObjPropType::Float),
474u16 => ("Pause at target time", GDObjPropType::Bool),
475u16 => ("Multiactivatable time event", GDObjPropType::Bool),
476u16 => ("First item type", GDObjPropType::Unknown),
477u16 => ("Second item type", GDObjPropType::Unknown),
478u16 => ("Target item type", GDObjPropType::Unknown),
479u16 => ("Modifier", GDObjPropType::Float),
480u16 => ("Left operator", GDObjPropType::Unknown),
481u16 => ("Right operator", GDObjPropType::Unknown),
482u16 => ("Compare operator", GDObjPropType::Unknown),
483u16 => ("Second modifier", GDObjPropType::Float),
484u16 => ("Tolerance", GDObjPropType::Float),
485u16 => ("Left round mode", GDObjPropType::Unknown),
486u16 => ("Right round mode", GDObjPropType::Unknown),
487u16 => ("Instant end?", GDObjPropType::Bool),
488u16 => ("Kerning", GDObjPropType::Int),
491u16 => ("Set persistent item", GDObjPropType::Bool),
492u16 => ("Target all persistent items", GDObjPropType::Bool),
493u16 => ("Reset item to 0", GDObjPropType::Bool),
494u16 => ("Timer", GDObjPropType::Item),
495u16 => ("Extra sticky", GDObjPropType::Bool),
496u16 => ("Don't boost Y?", GDObjPropType::Bool),
504u16 => ("Spawn only", GDObjPropType::Bool),
506u16 => ("Camera guide preview opacity", GDObjPropType::Float),
507u16 => ("No particles", GDObjPropType::Bool),
509u16 => ("Don't boost X?", GDObjPropType::Bool),
511u16 => ("Has extended collision", GDObjPropType::Bool),
516u16 => ("MinX ID", GDObjPropType::Group),
517u16 => ("MinY ID", GDObjPropType::Group),
518u16 => ("MaxX ID", GDObjPropType::Group),
519u16 => ("MaxY ID", GDObjPropType::Group),
525u16 => ("Event Extra ID 2", GDObjPropType::Bool),
533u16 => ("Middleground", GDObjPropType::Int),
534u16 => ("Material control ID", GDObjPropType::Int),
535u16 => ("Use control ID", GDObjPropType::Bool),
540u16 => ("Stop player jump", GDObjPropType::Bool),
541u16 => ("Stop player movement", GDObjPropType::Bool),
542u16 => ("Stop player rotation", GDObjPropType::Bool),
543u16 => ("Stop player sliding", GDObjPropType::Bool),
544u16 => ("Silent move", GDObjPropType::Bool),
547u16 => ("X offset of spawned particles", GDObjPropType::Int),
548u16 => ("Y offset of spawned particles", GDObjPropType::Int),
549u16 => ("X offset variation of spawned particles", GDObjPropType::Int),
550u16 => ("Y offset variation of spawned particles", GDObjPropType::Int),
551u16 => ("Match rotation of spawned particles?", GDObjPropType::Bool),
552u16 => ("Rotation of spawned particles", GDObjPropType::Int),
553u16 => ("Rotation variation of spawned particles", GDObjPropType::Int),
554u16 => ("Scale of spawned particles", GDObjPropType::Float),
555u16 => ("Scale variation of spawned particles", GDObjPropType::Float),
556u16 => ("Spawn delay variation", GDObjPropType::Float),
574u16 => ("Respawn time", GDObjPropType::Float),
577u16 => ("Relative scale", GDObjPropType::Bool),
578u16 => ("Left sign mode", GDObjPropType::Unknown),
579u16 => ("Right sign mode", GDObjPropType::Unknown),
580u16 => ("Stop mode", GDObjPropType::Unknown),
581u16 => ("Reset remap", GDObjPropType::Bool),
582u16 => ("X velocity modifier", GDObjPropType::Float),
583u16 => ("Y velocity modifier", GDObjPropType::Float),
595u16 => ("Don't stop song on death", GDObjPropType::Bool),
10002u16 => ("Starting gamemode", GDObjPropType::Unknown),
10003u16 => ("Starting in mini mode?", GDObjPropType::Bool),
10004u16 => ("Starting speed", GDObjPropType::Unknown),
10008u16 => ("Starting in dual mode?", GDObjPropType::Bool),
10019u16 => ("Target order", GDObjPropType::Unknown),
10020u16 => ("Reverse gameplay?", GDObjPropType::Bool),
10021u16 => ("Is disabled?", GDObjPropType::Bool),
10026u16 => ("Target channel", GDObjPropType::Unknown),
10028u16 => ("Starting in mirror mode?", GDObjPropType::Bool),
10029u16 => ("Rotate gameplay?", GDObjPropType::Bool),
10035u16 => ("Reset camera?", GDObjPropType::Bool),
};
pub fn get_property_type(p: u16) -> Option<GDObjPropType> {
PROPERTY_TABLE.get(&p).map(|v| v.1)
}