gd_levels/
start_level_string.rs1use std::collections::HashMap;
2use crate::property_types::PropertyValueType;
3
4pub struct StartLevelString {
5 map: HashMap<String, String>
6}
7
8impl StartLevelString {
9 pub fn new() -> Self {
10 StartLevelString {
11 map: HashMap::new()
12 }
13 }
14
15 pub fn set_property(&mut self, key: impl ToStartLevelStringKey, value: impl PropertyValueType) {
16 self.map.insert(String::from(key.to_start_level_string_key()), value.to_object_string());
17 }
18
19 pub fn to_start_level_string(&self) -> String {
20 let mut obj_string = String::new();
21
22 for prop in self.map.iter() {
23 if !obj_string.is_empty() {
24 obj_string.push_str(",");
25 }
26
27 obj_string.push_str(prop.0.to_string().as_str());
28 obj_string.push_str(",");
29 obj_string.push_str(prop.1);
30
31 }
32
33 obj_string
34 }
35}
36
37pub trait ToStartLevelStringKey {
38 fn to_start_level_string_key(&self) -> &str;
39}
40
41pub enum StartLevelStringKeys {
42 AudioTrack,
43 Gamemode,
44 MiniMode,
45 Speed,
46 Obj2Blending,
47 BackgroundTextureId,
48 GroundTextureId,
49 DualMode,
50 LevelStartPosObject,
51 PlayerMode2,
53 FlipGravity,
54 SongOffset,
55 Guidelines,
56 FadeIn,
57 FadeOut,
58 GroundLine,
59 Font,
60 ReverseGameplay,
61 PlatformerMode,
62 MiddlegroundTextureId,
63 AllowMultiRotation,
64 MirrorMode,
65 RotateGameplay,
66 EnablePlayerSqueeze,
67 FixGravityBug,
68 FixNegativeScale,
69 FixRobotJump,
70 SpawnGroup,
71 DynamicLevelHeight,
72 SortGroups,
73 FixRadiusCollision,
74 Enable22Changes,
76 AllowStaticRotate,
77 ReverseSync,
78 NoTimePenalty,
79 DecreaseBoostSlide,
80 Colors,
81 ColorPage
82}
83
84impl ToStartLevelStringKey for StartLevelStringKeys {
85 fn to_start_level_string_key(&self) -> &str {
86 match self {
87 StartLevelStringKeys::AudioTrack => "kA1",
88 StartLevelStringKeys::Gamemode => "kA2",
89 StartLevelStringKeys::MiniMode => "kA3",
90 StartLevelStringKeys::Speed => "kA4",
91 StartLevelStringKeys::Obj2Blending => "kA5",
92 StartLevelStringKeys::BackgroundTextureId => "kA6",
93 StartLevelStringKeys::GroundTextureId => "kA7",
94 StartLevelStringKeys::DualMode => "kA8",
95 StartLevelStringKeys::LevelStartPosObject => "kA9",
96 StartLevelStringKeys::PlayerMode2 => "kA10",
97 StartLevelStringKeys::FlipGravity => "kA11",
98 StartLevelStringKeys::SongOffset => "kA13",
99 StartLevelStringKeys::Guidelines => "kA14",
100 StartLevelStringKeys::FadeIn => "kA15",
101 StartLevelStringKeys::FadeOut => "kA16",
102 StartLevelStringKeys::GroundLine => "kA17",
103 StartLevelStringKeys::Font => "kA18",
104 StartLevelStringKeys::ReverseGameplay => "kA20",
105 StartLevelStringKeys::PlatformerMode => "kA22",
106 StartLevelStringKeys::MiddlegroundTextureId => "kA25",
107 StartLevelStringKeys::AllowMultiRotation => "kA27",
108 StartLevelStringKeys::MirrorMode => "kA28",
109 StartLevelStringKeys::RotateGameplay => "kA29",
110 StartLevelStringKeys::EnablePlayerSqueeze => "kA31",
111 StartLevelStringKeys::FixGravityBug => "kA32",
112 StartLevelStringKeys::FixNegativeScale => "kA33",
113 StartLevelStringKeys::FixRobotJump => "kA34",
114 StartLevelStringKeys::SpawnGroup => "kA36",
115 StartLevelStringKeys::DynamicLevelHeight => "kA37",
116 StartLevelStringKeys::SortGroups => "kA38",
117 StartLevelStringKeys::FixRadiusCollision => "kA39",
118 StartLevelStringKeys::Enable22Changes => "kA40",
119 StartLevelStringKeys::AllowStaticRotate => "kA41",
120 StartLevelStringKeys::ReverseSync => "kA42",
121 StartLevelStringKeys::NoTimePenalty => "kA43",
122 StartLevelStringKeys::DecreaseBoostSlide => "kA45",
123 StartLevelStringKeys::Colors => "kS38",
124 StartLevelStringKeys::ColorPage => "kS39",
125 }
126 }
127}