Torch
Loading...
Searching...
No Matches
Ghost.h
1#pragma once
2
3#include <string>
4#include <spdlog/spdlog.h>
5#include <spdlog/fmt/ostr.h>
6
7namespace FZX {
8enum class GhostType {
9 /* 0 */ GHOST_NONE,
10 /* 1 */ GHOST_PLAYER,
11 /* 2 */ GHOST_STAFF,
12 /* 3 */ GHOST_CELEBRITY,
13 /* 4 */ GHOST_CHAMP,
14};
15
16enum class Character {
17 /* 00 */ CAPTAIN_FALCON,
18 /* 01 */ DR_STEWART,
19 /* 02 */ PICO,
20 /* 03 */ SAMURAI_GOROH,
21 /* 04 */ JODY_SUMMER,
22 /* 05 */ MIGHTY_GAZELLE,
23 /* 06 */ MR_EAD,
24 /* 07 */ BABA,
25 /* 08 */ OCTOMAN,
26 /* 09 */ GOMAR_AND_SHIOH,
27 /* 10 */ KATE_ALEN,
28 /* 11 */ ROGER_BUSTER,
29 /* 12 */ JAMES_MCCLOUD,
30 /* 13 */ LEON,
31 /* 14 */ ANTONIO_GUSTER,
32 /* 15 */ BLACK_SHADOW,
33 /* 16 */ MICHAEL_CHAIN,
34 /* 17 */ JACK_LEVIN,
35 /* 18 */ SUPER_ARROW,
36 /* 19 */ MRS_ARROW,
37 /* 20 */ JOHN_TANAKA,
38 /* 21 */ BEASTMAN,
39 /* 22 */ ZODA,
40 /* 23 */ DR_CLASH,
41 /* 24 */ SILVER_NEELSEN,
42 /* 25 */ BIO_REX,
43 /* 26 */ DRAQ,
44 /* 27 */ BILLY,
45 /* 28 */ THE_SKULL,
46 /* 29 */ BLOOD_FALCON,
47};
48
49enum class CustomType {
50 /* 0 */ CUSTOM_MACHINE_DEFAULT,
51 /* 1 */ CUSTOM_MACHINE_EDITED,
52 /* 2 */ CUSTOM_MACHINE_SUPER_FALCON,
53 /* 3 */ CUSTOM_MACHINE_SUPER_STINGRAY,
54 /* 4 */ CUSTOM_MACHINE_SUPER_CAT,
55};
56
57enum class FrontType {
58 /* 0 */ FRONT_0,
59 /* 1 */ FRONT_1,
60 /* 2 */ FRONT_2,
61 /* 3 */ FRONT_3,
62 /* 4 */ FRONT_4,
63 /* 5 */ FRONT_5,
64 /* 6 */ FRONT_6,
65};
66
67enum class RearType {
68 /* 0 */ REAR_0,
69 /* 1 */ REAR_1,
70 /* 2 */ REAR_2,
71 /* 3 */ REAR_3,
72 /* 4 */ REAR_4,
73 /* 5 */ REAR_5,
74 /* 6 */ REAR_6,
75};
76
77enum class WingType {
78 /* 0 */ WING_NONE,
79 /* 1 */ WING_1,
80 /* 2 */ WING_2,
81 /* 3 */ WING_3,
82 /* 4 */ WING_4,
83 /* 5 */ WING_5,
84 /* 6 */ WING_6,
85};
86
87enum class Logo {
88 /* 0 */ LOGO_SHIELD,
89 /* 1 */ LOGO_ARROW_PLANE,
90 /* 2 */ LOGO_CIRCLE,
91 /* 3 */ LOGO_SKULL,
92 /* 4 */ LOGO_YELLOW_GREEN,
93 /* 5 */ LOGO_KANJI,
94 /* 6 */ LOGO_X,
95 /* 7 */ LOGO_N64,
96};
97
98enum class Decal {
99 /* 0 */ DECAL_STRIPE,
100 /* 1 */ DECAL_THIN_STRIPE,
101 /* 2 */ DECAL_DOUBLE_STRIPE,
102 /* 3 */ DECAL_TRIPLE_STRIPE_UNEVEN,
103 /* 4 */ DECAL_BLOCK,
104};
105
106
107inline std::ostream& operator<<(std::ostream& out, const GhostType& ghostType) {
108 std::string output;
109 switch (ghostType) {
110 case GhostType::GHOST_NONE:
111 output = "GHOST_NONE";
112 break;
113 case GhostType::GHOST_PLAYER:
114 output = "GHOST_PLAYER";
115 break;
116 case GhostType::GHOST_STAFF:
117 output = "GHOST_STAFF";
118 break;
119 case GhostType::GHOST_CELEBRITY:
120 output = "GHOST_CELEBRITY";
121 break;
122 case GhostType::GHOST_CHAMP:
123 output = "GHOST_CHAMP";
124 break;
125 }
126 return out << output;
127}
128
129inline std::ostream& operator<<(std::ostream& out, const Character& character) {
130 std::string output;
131 switch (character) {
132 case Character::CAPTAIN_FALCON:
133 output = "CAPTAIN_FALCON";
134 break;
135 case Character::DR_STEWART:
136 output = "DR_STEWART";
137 break;
138 case Character::PICO:
139 output = "PICO";
140 break;
141 case Character::SAMURAI_GOROH:
142 output = "SAMURAI_GOROH";
143 break;
144 case Character::JODY_SUMMER:
145 output = "JODY_SUMMER";
146 break;
147 case Character::MIGHTY_GAZELLE:
148 output = "MIGHTY_GAZELLE";
149 break;
150 case Character::MR_EAD:
151 output = "MR_EAD";
152 break;
153 case Character::BABA:
154 output = "BABA";
155 break;
156 case Character::OCTOMAN:
157 output = "OCTOMAN";
158 break;
159 case Character::GOMAR_AND_SHIOH:
160 output = "GOMAR_AND_SHIOH";
161 break;
162 case Character::KATE_ALEN:
163 output = "KATE_ALEN";
164 break;
165 case Character::ROGER_BUSTER:
166 output = "ROGER_BUSTER";
167 break;
168 case Character::JAMES_MCCLOUD:
169 output = "JAMES_MCCLOUD";
170 break;
171 case Character::LEON:
172 output = "LEON";
173 break;
174 case Character::ANTONIO_GUSTER:
175 output = "ANTONIO_GUSTER";
176 break;
177 case Character::BLACK_SHADOW:
178 output = "BLACK_SHADOW";
179 break;
180 case Character::MICHAEL_CHAIN:
181 output = "MICHAEL_CHAIN";
182 break;
183 case Character::JACK_LEVIN:
184 output = "JACK_LEVIN";
185 break;
186 case Character::SUPER_ARROW:
187 output = "SUPER_ARROW";
188 break;
189 case Character::MRS_ARROW:
190 output = "MRS_ARROW";
191 break;
192 case Character::JOHN_TANAKA:
193 output = "JOHN_TANAKA";
194 break;
195 case Character::BEASTMAN:
196 output = "BEASTMAN";
197 break;
198 case Character::ZODA:
199 output = "ZODA";
200 break;
201 case Character::DR_CLASH:
202 output = "DR_CLASH";
203 break;
204 case Character::SILVER_NEELSEN:
205 output = "SILVER_NEELSEN";
206 break;
207 case Character::BIO_REX:
208 output = "BIO_REX";
209 break;
210 case Character::DRAQ:
211 output = "DRAQ";
212 break;
213 case Character::BILLY:
214 output = "BILLY";
215 break;
216 case Character::THE_SKULL:
217 output = "THE_SKULL";
218 break;
219 case Character::BLOOD_FALCON:
220 output = "BLOOD_FALCON";
221 break;
222 }
223 return out << output;
224}
225
226inline std::ostream& operator<<(std::ostream& out, const CustomType& customType) {
227 std::string output;
228 switch (customType) {
229 case CustomType::CUSTOM_MACHINE_DEFAULT:
230 output = "CUSTOM_MACHINE_DEFAULT";
231 break;
232 case CustomType::CUSTOM_MACHINE_EDITED:
233 output = "CUSTOM_MACHINE_EDITED";
234 break;
235 case CustomType::CUSTOM_MACHINE_SUPER_FALCON:
236 output = "CUSTOM_MACHINE_SUPER_FALCON";
237 break;
238 case CustomType::CUSTOM_MACHINE_SUPER_STINGRAY:
239 output = "CUSTOM_MACHINE_SUPER_STINGRAY";
240 break;
241 case CustomType::CUSTOM_MACHINE_SUPER_CAT:
242 output = "CUSTOM_MACHINE_SUPER_CAT";
243 break;
244 }
245 return out << output;
246}
247
248inline std::ostream& operator<<(std::ostream& out, const FrontType& frontType) {
249 std::string output;
250 switch (frontType) {
251 case FrontType::FRONT_0:
252 output = "FRONT_0";
253 break;
254 case FrontType::FRONT_1:
255 output = "FRONT_1";
256 break;
257 case FrontType::FRONT_2:
258 output = "FRONT_2";
259 break;
260 case FrontType::FRONT_3:
261 output = "FRONT_3";
262 break;
263 case FrontType::FRONT_4:
264 output = "FRONT_4";
265 break;
266 case FrontType::FRONT_5:
267 output = "FRONT_5";
268 break;
269 case FrontType::FRONT_6:
270 output = "FRONT_6";
271 break;
272 }
273 return out << output;
274}
275
276inline std::ostream& operator<<(std::ostream& out, const RearType rearType) {
277 std::string output;
278 switch (rearType) {
279 case RearType::REAR_0:
280 output = "REAR_0";
281 break;
282 case RearType::REAR_1:
283 output = "REAR_1";
284 break;
285 case RearType::REAR_2:
286 output = "REAR_2";
287 break;
288 case RearType::REAR_3:
289 output = "REAR_3";
290 break;
291 case RearType::REAR_4:
292 output = "REAR_4";
293 break;
294 case RearType::REAR_5:
295 output = "REAR_5";
296 break;
297 case RearType::REAR_6:
298 output = "REAR_6";
299 break;
300 }
301 return out << output;
302}
303
304inline std::ostream& operator<<(std::ostream& out, const WingType& wingType) {
305 std::string output;
306 switch (wingType) {
307 case WingType::WING_NONE:
308 output = "WING_NONE";
309 break;
310 case WingType::WING_1:
311 output = "WING_1";
312 break;
313 case WingType::WING_2:
314 output = "WING_2";
315 break;
316 case WingType::WING_3:
317 output = "WING_3";
318 break;
319 case WingType::WING_4:
320 output = "WING_4";
321 break;
322 case WingType::WING_5:
323 output = "WING_5";
324 break;
325 case WingType::WING_6:
326 output = "WING_6";
327 break;
328 }
329 return out << output;
330}
331
332inline std::ostream& operator<<(std::ostream& out, const Logo& logo) {
333 std::string output;
334 switch (logo) {
335 case Logo::LOGO_SHIELD:
336 output = "LOGO_SHIELD";
337 break;
338 case Logo::LOGO_ARROW_PLANE:
339 output = "LOGO_ARROW_PLANE";
340 break;
341 case Logo::LOGO_CIRCLE:
342 output = "LOGO_CIRCLE";
343 break;
344 case Logo::LOGO_SKULL:
345 output = "LOGO_SKULL";
346 break;
347 case Logo::LOGO_YELLOW_GREEN:
348 output = "LOGO_YELLOW_GREEN";
349 break;
350 case Logo::LOGO_KANJI:
351 output = "LOGO_KANJI";
352 break;
353 case Logo::LOGO_X:
354 output = "LOGO_X";
355 break;
356 case Logo::LOGO_N64:
357 output = "LOGO_N64";
358 break;
359 }
360 return out << output;
361}
362
363inline std::ostream& operator<<(std::ostream& out, const Decal& decal) {
364 std::string output;
365 switch (decal) {
366 case Decal::DECAL_STRIPE:
367 output = "DECAL_STRIPE";
368 break;
369 case Decal::DECAL_THIN_STRIPE:
370 output = "DECAL_THIN_STRIPE";
371 break;
372 case Decal::DECAL_DOUBLE_STRIPE:
373 output = "DECAL_DOUBLE_STRIPE";
374 break;
375 case Decal::DECAL_TRIPLE_STRIPE_UNEVEN:
376 output = "DECAL_TRIPLE_STRIPE_UNEVEN";
377 break;
378 case Decal::DECAL_BLOCK:
379 output = "DECAL_BLOCK";
380 break;
381 }
382 return out << output;
383}
384
385}