4#include <spdlog/spdlog.h>
5#include <spdlog/fmt/ostr.h>
7enum class SpecialPresetTypes {
8 SPTYPE_NO_YROT_OR_PARAMS,
10 SPTYPE_PARAMS_AND_YROT,
12 SPTYPE_DEF_PARAM_AND_YROT,
15inline std::ostream& operator<<(std::ostream& out,
const SpecialPresetTypes& type) {
18 case SpecialPresetTypes::SPTYPE_NO_YROT_OR_PARAMS:
19 output =
"SPTYPE_NO_YROT_OR_PARAMS";
21 case SpecialPresetTypes::SPTYPE_YROT_NO_PARAMS:
22 output =
"SPTYPE_YROT_NO_PARAMS";
24 case SpecialPresetTypes::SPTYPE_PARAMS_AND_YROT:
25 output =
"SPTYPE_PARAMS_AND_YROT";
27 case SpecialPresetTypes::SPTYPE_UNKNOWN:
28 output =
"SPTYPE_UNKNOWN";
30 case SpecialPresetTypes::SPTYPE_DEF_PARAM_AND_YROT:
31 output =
"SPTYPE_DEF_PARAM_AND_YROT";
34 throw std::runtime_error(
"Unknown Special Preset Type");
39enum class SpecialPresets {
42 special_yellow_coin_2,
46 special_lll_moving_octagonal_mesh_platform,
48 special_lll_drawbridge_spawner,
50 special_lll_rotating_block_with_fire_bars,
51 special_lll_floating_wood_bridge,
52 special_tumbling_platform,
53 special_lll_rotating_hexagonal_ring,
54 special_lll_sinking_rectangular_platform,
55 special_lll_sinking_square_platforms,
56 special_lll_tilting_square_platform,
57 special_lll_bowser_puzzle,
66 special_moving_blue_coin,
74 special_wf_rotating_wooden_platform,
76 special_wf_sliding_platform,
77 special_tower_platform_group,
78 special_rotating_counter_clockwise,
79 special_wf_tumbling_bridge,
82 special_level_geo_03 = 0x65,
100 special_level_geo_15,
101 special_level_geo_16,
105 special_unknown_tree,
108 special_haunted_door = special_wooden_door,
109 special_unknown_door,
112 special_unknown2_door,
113 special_wooden_door_warp,
114 special_unknown1_door_warp,
115 special_metal_door_warp,
116 special_unknown2_door_warp,
117 special_unknown3_door_warp,
118 special_castle_door_warp,
125 special_null_end = 0xFF
128inline std::ostream& operator<<(std::ostream& out,
const SpecialPresets& preset) {
131 case SpecialPresets::special_null_start:
132 output =
"special_null_start";
134 case SpecialPresets::special_yellow_coin:
135 output =
"special_yellow_coin";
137 case SpecialPresets::special_yellow_coin_2:
138 output =
"special_yellow_coin_2";
140 case SpecialPresets::special_unknown_3:
141 output =
"special_unknown_3";
143 case SpecialPresets::special_boo:
144 output =
"special_boo";
146 case SpecialPresets::special_unknown_5:
147 output =
"special_unknown_5";
149 case SpecialPresets::special_lll_moving_octagonal_mesh_platform:
150 output =
"special_lll_moving_octagonal_mesh_platform";
152 case SpecialPresets::special_snow_ball:
153 output =
"special_snow_ball";
155 case SpecialPresets::special_lll_drawbridge_spawner:
156 output =
"special_lll_drawbridge_spawner";
158 case SpecialPresets::special_empty_9:
159 output =
"special_empty_9";
161 case SpecialPresets::special_lll_rotating_block_with_fire_bars:
162 output =
"special_lll_rotating_block_with_fire_bars";
164 case SpecialPresets::special_lll_floating_wood_bridge:
165 output =
"special_lll_floating_wood_bridge";
167 case SpecialPresets::special_tumbling_platform:
168 output =
"special_tumbling_platform";
170 case SpecialPresets::special_lll_rotating_hexagonal_ring:
171 output =
"special_lll_rotating_hexagonal_ring";
173 case SpecialPresets::special_lll_sinking_rectangular_platform:
174 output =
"special_lll_sinking_rectangular_platform";
176 case SpecialPresets::special_lll_sinking_square_platforms:
177 output =
"special_lll_sinking_square_platforms";
179 case SpecialPresets::special_lll_tilting_square_platform:
180 output =
"special_lll_tilting_square_platform";
182 case SpecialPresets::special_lll_bowser_puzzle:
183 output =
"special_lll_bowser_puzzle";
185 case SpecialPresets::special_mr_i:
186 output =
"special_mr_i";
188 case SpecialPresets::special_small_bully:
189 output =
"special_small_bully";
191 case SpecialPresets::special_big_bully:
192 output =
"special_big_bully";
194 case SpecialPresets::special_empty_21:
195 output =
"special_empty_21";
197 case SpecialPresets::special_empty_22:
198 output =
"special_empty_22";
200 case SpecialPresets::special_empty_23:
201 output =
"special_empty_23";
203 case SpecialPresets::special_empty_24:
204 output =
"special_empty_24";
206 case SpecialPresets::special_empty_25:
207 output =
"special_empty_25";
209 case SpecialPresets::special_moving_blue_coin:
210 output =
"special_moving_blue_coin";
212 case SpecialPresets::special_jrb_chest:
213 output =
"special_jrb_chest";
215 case SpecialPresets::special_water_ring:
216 output =
"special_water_ring";
218 case SpecialPresets::special_mine:
219 output =
"special_mine";
221 case SpecialPresets::special_empty_30:
222 output =
"special_empty_30";
224 case SpecialPresets::special_empty_31:
225 output =
"special_empty_31";
227 case SpecialPresets::special_butterfly:
228 output =
"special_butterfly";
230 case SpecialPresets::special_bowser:
231 output =
"special_bowser";
233 case SpecialPresets::special_wf_rotating_wooden_platform:
234 output =
"special_wf_rotating_wooden_platform";
236 case SpecialPresets::special_small_bomp:
237 output =
"special_small_bomp";
239 case SpecialPresets::special_wf_sliding_platform:
240 output =
"special_wf_sliding_platform";
242 case SpecialPresets::special_tower_platform_group:
243 output =
"special_tower_platform_group";
245 case SpecialPresets::special_rotating_counter_clockwise:
246 output =
"special_rotating_counter_clockwise";
248 case SpecialPresets::special_wf_tumbling_bridge:
249 output =
"special_wf_tumbling_bridge";
251 case SpecialPresets::special_large_bomp:
252 output =
"special_large_bomp";
254 case SpecialPresets::special_level_geo_03:
255 output =
"special_level_geo_03";
257 case SpecialPresets::special_level_geo_04:
258 output =
"special_level_geo_04";
260 case SpecialPresets::special_level_geo_05:
261 output =
"special_level_geo_05";
263 case SpecialPresets::special_level_geo_06:
264 output =
"special_level_geo_06";
266 case SpecialPresets::special_level_geo_07:
267 output =
"special_level_geo_07";
269 case SpecialPresets::special_level_geo_08:
270 output =
"special_level_geo_08";
272 case SpecialPresets::special_level_geo_09:
273 output =
"special_level_geo_09";
275 case SpecialPresets::special_level_geo_0A:
276 output =
"special_level_geo_0A";
278 case SpecialPresets::special_level_geo_0B:
279 output =
"special_level_geo_0B";
281 case SpecialPresets::special_level_geo_0C:
282 output =
"special_level_geo_0C";
284 case SpecialPresets::special_level_geo_0D:
285 output =
"special_level_geo_0D";
287 case SpecialPresets::special_level_geo_0E:
288 output =
"special_level_geo_0E";
290 case SpecialPresets::special_level_geo_0F:
291 output =
"special_level_geo_0F";
293 case SpecialPresets::special_level_geo_10:
294 output =
"special_level_geo_10";
296 case SpecialPresets::special_level_geo_11:
297 output =
"special_level_geo_11";
299 case SpecialPresets::special_level_geo_12:
300 output =
"special_level_geo_12";
302 case SpecialPresets::special_level_geo_13:
303 output =
"special_level_geo_13";
305 case SpecialPresets::special_level_geo_14:
306 output =
"special_level_geo_14";
308 case SpecialPresets::special_level_geo_15:
309 output =
"special_level_geo_15";
311 case SpecialPresets::special_level_geo_16:
312 output =
"special_level_geo_16";
314 case SpecialPresets::special_bubble_tree:
315 output =
"special_bubble_tree";
317 case SpecialPresets::special_spiky_tree:
318 output =
"special_spiky_tree";
320 case SpecialPresets::special_snow_tree:
321 output =
"special_snow_tree";
323 case SpecialPresets::special_unknown_tree:
324 output =
"special_unknown_tree";
326 case SpecialPresets::special_palm_tree:
327 output =
"special_palm_tree";
329 case SpecialPresets::special_wooden_door:
330 output =
"special_wooden_door";
332 case SpecialPresets::special_unknown_door:
333 output =
"special_unknown_door";
335 case SpecialPresets::special_metal_door:
336 output =
"special_metal_door";
338 case SpecialPresets::special_hmc_door:
339 output =
"special_hmc_door";
341 case SpecialPresets::special_unknown2_door:
342 output =
"special_unknown2_door";
344 case SpecialPresets::special_wooden_door_warp:
345 output =
"special_wooden_door_warp";
347 case SpecialPresets::special_unknown1_door_warp:
348 output =
"special_unknown1_door_warp";
350 case SpecialPresets::special_metal_door_warp:
351 output =
"special_metal_door_warp";
353 case SpecialPresets::special_unknown2_door_warp:
354 output =
"special_unknown2_door_warp";
356 case SpecialPresets::special_unknown3_door_warp:
357 output =
"special_unknown3_door_warp";
359 case SpecialPresets::special_castle_door_warp:
360 output =
"special_castle_door_warp";
362 case SpecialPresets::special_castle_door:
363 output =
"special_castle_door";
365 case SpecialPresets::special_0stars_door:
366 output =
"special_0stars_door";
368 case SpecialPresets::special_1star_door:
369 output =
"special_1star_door";
371 case SpecialPresets::special_3star_door:
372 output =
"special_3star_door";
374 case SpecialPresets::special_key_door:
375 output =
"special_key_door";
377 case SpecialPresets::special_null_end:
378 output =
"special_null_end";
381 throw std::runtime_error(
"Unknown Special Preset");
384 return out << output;