use phf::{Map, phf_map};
use crate::gdobj::GDObjPropType;
pub const PROPERTY_TABLE: Map<u16, (&'static str, GDObjPropType)> = phf_map! {
1 => ("object ID", GDObjPropType::Int),
2 => ("x pos", GDObjPropType::Float),
3 => ("y pos", GDObjPropType::Float),
4 => ("is flipped horizontally?", GDObjPropType::Bool),
5 => ("is flipped vertically?", GDObjPropType::Bool),
6 => ("rotation", GDObjPropType::Float),
7 => ("Red", GDObjPropType::Int),
8 => ("Green", GDObjPropType::Int),
9 => ("Blue", GDObjPropType::Int),
10 => ("Fade time / chance to trigger group 1", GDObjPropType::Float),
11 => ("Touch triggerable", GDObjPropType::Bool),
15 => ("Using player colour 1", GDObjPropType::Bool),
16 => ("Using player colour 2", GDObjPropType::Bool),
17 => ("Blending enabled", GDObjPropType::Bool),
20 => ("Editor layer 1", GDObjPropType::Int),
21 => ("Object colour", GDObjPropType::ColourChannel),
22 => ("Secondary colour", GDObjPropType::ColourChannel),
23 => ("Colour channel", GDObjPropType::ColourChannel),
24 => ("Z layer", GDObjPropType::Int),
25 => ("Z order", GDObjPropType::Int),
28 => ("Move units x", GDObjPropType::Int),
29 => ("Move units y", GDObjPropType::Int),
30 => ("Move easing", GDObjPropType::Easing),
31 => ("Base64-encoded text", GDObjPropType::Text),
34 => ("Is group parent?", GDObjPropType::Bool),
35 => ("Opacity", GDObjPropType::Float),
36 => ("Is active trigger?", GDObjPropType::Bool),
45 => ("Pulse fade in time", GDObjPropType::Float),
46 => ("Pulse hold time", GDObjPropType::Float),
47 => ("Pulse fade out time", GDObjPropType::Float),
49 => ("Copy colour specs", GDObjPropType::Text),
50 => ("Copy colour from channel", GDObjPropType::Bool),
51 => ("Target group/item/channel", GDObjPropType::Group),
56 => ("Activate group", GDObjPropType::Bool),
57 => ("Groups", GDObjPropType::Group),
58 => ("Follow player's x movement", GDObjPropType::Bool),
59 => ("Follow player's y movement", GDObjPropType::Bool),
60 => ("Copy opacity", GDObjPropType::Bool),
61 => ("Editor layer 2", GDObjPropType::Int),
62 => ("Spawn triggerable", GDObjPropType::Bool),
64 => ("Don't fade", GDObjPropType::Bool),
67 => ("Don't enter", GDObjPropType::Bool),
71 => ("Target group 2", GDObjPropType::Group),
75 => ("Shake strength", GDObjPropType::Float),
80 => ("Group/item 1", GDObjPropType::Item),
84 => ("Shake interval", GDObjPropType::Float),
85 => ("Easing rate", GDObjPropType::Float),
86 => ("Exclusive pulse mode", GDObjPropType::Bool),
87 => ("Multitriggerable", GDObjPropType::Bool),
94 => ("Dynamic block?", GDObjPropType::Bool),
95 => ("Group/item 2", GDObjPropType::Item),
96 => ("No glow", GDObjPropType::Bool),
99 => ("Multi activate", GDObjPropType::Bool),
100 => ("Target move mode", GDObjPropType::Unknown),
101 => ("Target move mode axis lock", GDObjPropType::Unknown),
103 => ("Is high detail?", GDObjPropType::Bool),
116 => ("No object effects", GDObjPropType::Bool),
117 => ("Reverses gameplay", GDObjPropType::Bool),
120 => ("Timewarp amount", GDObjPropType::Float),
121 => ("No touch?", GDObjPropType::Bool),
128 => ("X scale", GDObjPropType::Float),
129 => ("Y scale", GDObjPropType::Float),
134 => ("Passable", GDObjPropType::Bool),
135 => ("Hidden", GDObjPropType::Bool),
136 => ("Non-stick X", GDObjPropType::Bool),
137 => ("Is ice block?", GDObjPropType::Bool),
138 => ("Controlling player 1", GDObjPropType::Bool),
141 => ("Follow camera's x movement", GDObjPropType::Bool),
142 => ("Follow camera's y movement", GDObjPropType::Bool),
143 => ("X movement multiplier", GDObjPropType::Float),
144 => ("Y movement multiplier", GDObjPropType::Float),
148 => ("Gravity", GDObjPropType::Float),
193 => ("Grip slope?", GDObjPropType::Bool),
200 => ("Controlling player 2", GDObjPropType::Bool),
201 => ("Controlling target player", GDObjPropType::Bool),
210 => ("No legacy HSV", GDObjPropType::Bool),
217 => ("Enter/Exit transition config", GDObjPropType::Unknown),
274 => ("Parent groups", GDObjPropType::Group),
279 => ("Is area parent?", GDObjPropType::Bool),
284 => ("Single player touch", GDObjPropType::Bool),
289 => ("Non-stick Y", GDObjPropType::Bool),
343 => ("Enter effect channel", GDObjPropType::Unknown),
344 => ("Target transition channel", GDObjPropType::Unknown),
356 => ("Scale stick", GDObjPropType::Bool),
369 => ("Center effect", GDObjPropType::Bool),
371 => ("Camera zoom", GDObjPropType::Float),
372 => ("No audio scale", GDObjPropType::Bool),
392 => ("Song ID", GDObjPropType::Int),
393 => ("Small step", GDObjPropType::Bool),
394 => ("Directional move mode", GDObjPropType::Bool),
395 => ("Center group id", GDObjPropType::Group),
397 => ("Dynamic move", GDObjPropType::Bool),
399 => ("Prep?", GDObjPropType::Bool),
400 => ("Load Prep?", GDObjPropType::Bool),
404 => ("Song speed", GDObjPropType::Int),
406 => ("Song volume", GDObjPropType::Int),
408 => ("Start offset in ms", GDObjPropType::Int),
409 => ("Fade in time in ms", GDObjPropType::Int),
410 => ("End offset in ms", GDObjPropType::Int),
411 => ("Fade out time in ms", GDObjPropType::Int),
413 => ("Loop song?", GDObjPropType::Bool),
432 => ("Song channel", GDObjPropType::Unknown),
445 => ("Claim touch?", GDObjPropType::Bool),
446 => ("Object material", GDObjPropType::Unknown),
460 => ("No end effects?", GDObjPropType::Bool),
461 => ("Instant end?", GDObjPropType::Bool),
467 => ("No end sound effects?", GDObjPropType::Bool),
472 => ("Stop time counter?", GDObjPropType::Bool),
473 => ("Target time for event", GDObjPropType::Float),
475 => ("Multiactivatable time event", GDObjPropType::Bool),
476 => ("First item type", GDObjPropType::Unknown),
477 => ("Second item type", GDObjPropType::Unknown),
479 => ("Modifier", GDObjPropType::Float),
480 => ("Left operator", GDObjPropType::Unknown),
481 => ("Right operator", GDObjPropType::Unknown),
482 => ("Compare operator", GDObjPropType::Unknown),
483 => ("Second modifier", GDObjPropType::Float),
484 => ("Tolerance", GDObjPropType::Float),
485 => ("Left round mode", GDObjPropType::Unknown),
486 => ("Right round mode", GDObjPropType::Unknown),
488 => ("Kerning", GDObjPropType::Int),
491 => ("Set persistent item", GDObjPropType::Bool),
492 => ("Target all persistent items", GDObjPropType::Bool),
493 => ("Reset item to 0", GDObjPropType::Bool),
494 => ("Timer", GDObjPropType::Item),
495 => ("Extra sticky", GDObjPropType::Bool),
496 => ("Don't boost Y?", GDObjPropType::Bool),
504 => ("Spawn only", GDObjPropType::Bool),
506 => ("Camera guide preview opacity", GDObjPropType::Float),
507 => ("No particles", GDObjPropType::Bool),
509 => ("Don't boost X?", GDObjPropType::Bool),
511 => ("Has extended collision", GDObjPropType::Bool),
534 => ("Material control ID", GDObjPropType::Int),
540 => ("Stop player jump", GDObjPropType::Bool),
541 => ("Stop player movement", GDObjPropType::Bool),
542 => ("Stop player rotation", GDObjPropType::Bool),
543 => ("Stop player sliding", GDObjPropType::Bool),
544 => ("Silent move", GDObjPropType::Bool),
547 => ("X offset of spawned particles", GDObjPropType::Int),
548 => ("Y offset of spawned particles", GDObjPropType::Int),
549 => ("X offset variation of spawned particles", GDObjPropType::Int),
550 => ("Y offset variation of spawned particles", GDObjPropType::Int),
551 => ("Match rotation of spawned particles?", GDObjPropType::Bool),
552 => ("Rotation of spawned particles", GDObjPropType::Int),
553 => ("Rotation variation of spawned particles", GDObjPropType::Int),
554 => ("Scale of spawned particles", GDObjPropType::Float),
555 => ("Scale variation of spawned particles", GDObjPropType::Float),
578 => ("Left sign mode", GDObjPropType::Unknown),
579 => ("Right sign mode", GDObjPropType::Unknown),
595 => ("Don't stop song on death", GDObjPropType::Bool),
10004 => ("Starting speed", GDObjPropType::Unknown),
10002 => ("Starting gamemode", GDObjPropType::Unknown),
10003 => ("Starting in mini mode?", GDObjPropType::Bool),
10008 => ("Starting in dual mode?", GDObjPropType::Bool),
10021 => ("Is disabled?", GDObjPropType::Bool),
10028 => ("Starting in mirror mode?", GDObjPropType::Bool),
10029 => ("Rotate gameplay?", GDObjPropType::Bool),
10020 => ("Reverse gameplay?", GDObjPropType::Bool),
10019 => ("Target order", GDObjPropType::Unknown),
10026 => ("Target channel", GDObjPropType::Unknown),
10035 => ("Reset camera?", GDObjPropType::Bool),
};
pub fn get_property_type(p: u16) -> Option<GDObjPropType> {
PROPERTY_TABLE.get(&p).map(|v| v.1)
}