WorldSim  inDev
2D tile-based sandbox RPG with procedurally generated fantasy world simulator 🌏
Driver_Settings_Enums.hpp
Go to the documentation of this file.
1 #pragma once
2 #ifndef WORLDSIM_DRIVER_SETTINGS_ENUMS_CPP
3 #define WORLDSIM_DRIVER_SETTINGS_ENUMS_CPP
4 
5 /* WorldSim: Driver_Settings_Enums
6 #include "Driver_Settings_Enums.cpp"
7 
8  Lists of values go here. Functions and sets related to the enums also go here.
9 */
10 
11 #include <Container/Vector/Vector.hpp>
12 
13 #include <unordered_map>
14 
15 
16 // MAIN MENU ENUMS
18 {
26 };
27 
28 // Should be MENU_TITLE but I'm bypassing it for now because the main menu has no function atm.
30 
31 // DIRECTION ENUMS
33 {
38 };
39 
40 // RACE ENUM
42 {
43  NONE=0,
44  HUMAN=1,
47 };
48 
49 // BASE TERRAIN ENUM (I DON'T KNOW IF THIS IS BEING USED)
50 enum class eLocalTerrain
51 {
52  G=0,
53  GRASS=1,
54  WATER=2
55 };
56 
58 {
62  COMBAT=3,
65 };
66 
67 const std::string enumCauseOfDeathStr [5] =
68 {
69  "unknown",
70  "starvation",
71  "massacre",
72  "combat",
73  "old age"
74 };
75 
77 {
90 };
91 
92 const std::string enumLocationStr[LOCATION_COUNT] =
93 {
94  "unknown",
95  "none",
96  "outside",
97  "walls",
98  "hall",
99  "main hall",
100  "mine",
101  "dwelling",
102  "farm",
103  "wilderness"
104 };
105 
106 // Function to convert enumLocation to a string
107 const std::string locationToString(enumLocation location)
108 {
109  switch (location)
110  {
111  case LOCATION_NONE: return "None";
112  case LOCATION_OUTSIDE: return "Outside";
113  case LOCATION_WALLS: return "Walls";
114  case LOCATION_HALL: return "Hall";
115  case LOCATION_MAIN_HALL: return "Main Hall";
116  case LOCATION_MINE: return "Mine";
117  case LOCATION_DWELLING: return "Dwelling";
118  case LOCATION_FARM: return "Farm";
119  case LOCATION_WILDERNESS: return "Wilderness";
120  case LOCATION_WEAPONSMITH: return "Weaponsmith";
121  default: return "Unknown";
122  }
123 }
124 
126 {
143 };
144 
145 const std::string enumResourceStr[RESOURCE_COUNT] =
146 {
147  "unknown",
148  "iron",
149  "gold",
150  "silver",
151  "gem",
152  "diamond",
153  "adamantine",
154  "coal",
155  "stone",
156  "wood",
157  "magicka crystal",
158  "steel",
159  "bronze",
160  "adamantium",
161  "food"
162 };
163 
165 {
172 };
173 
175 {
176  "none",
177  "fibre",
178  "gut",
179  "meat",
180  "bone"
181 };
182 
183 const std::string intermediateToString(enumIntermediate intermediate)
184 {
185  if (intermediate >= 0 && intermediate < INTERMEDIATE_COUNT)
186  {
187  return enumIntermediateStr[intermediate];
188  }
189  return "Unknown";
190 }
191 
192 
193 const std::string resourceToString(enumResource resource)
194 {
195  switch (resource)
196  {
197  case RESOURCE_FOOD: return "Food";
198  case RESOURCE_IRON: return "Iron";
199  case RESOURCE_GOLD: return "Gold";
200  case RESOURCE_SILVER: return "Silver";
201  case RESOURCE_GEM: return "Gem";
202  case RESOURCE_DIAMOND: return "Diamond";
203  case RESOURCE_ADAMANTINE: return "Adamantine";
204  case RESOURCE_COAL: return "Coal";
205  case RESOURCE_STONE: return "Stone";
206  case RESOURCE_WOOD: return "Wood";
207  case RESOURCE_MAGICKA_CRYSTAL: return "Magicka Crystal";
208  case RESOURCE_STEEL: return "Steel";
209  case RESOURCE_BRONZE: return "Bronze";
210  case RESOURCE_ADAMANTIUM: return "Adamantium";
211  default: return "Unknown";
212  }
213 }
214 
216 {
225 };
226 
227 const std::string enumJobStr[JOB_COUNT] =
228 {
229  "unknown",
230  "farming",
231  "mining",
232  "production",
233  "woodcutting",
234  "prospecting",
235  "hunting"
236 };
237 
238 // Item Category needs to be changed to Item Action, and then Item objects need to have a table of their value at each
239 // action.
240 
241 // Melee hunting - Can only catch certain animals which can be ambushed or will approach
242 
244 {
252 };
253 
254 const std::string actionToString(ItemAction action)
255 {
256  switch (action)
257  {
258  case ITEM_ACTION_NONE: return "None";
259  case ITEM_ACTION_HUNTING_MELEE: return "Hunting melee";
260  case ITEM_ACTION_HUNTING_RANGED: return "Hunting ranged";
261  case ITEM_ACTION_FARMING: return "Farming";
262  // Add more cases as needed
263  default: return "Unknown";
264  }
265 }
266 
267 
269 {
298 };
299 
300 const std::string enumItemTypeStr[ITEM_COUNT] =
301 {
302  "none",
303  "hand",
304  "hoe",
305  "sword",
306  "knife",
307  "longbow",
308  "spear",
309  "pickaxe",
310  "fishrod",
311  "shovel",
312  "axe",
313  "log",
314  "fish",
315  "campfire",
316  "plank",
317  "wall",
318  "floor",
319  "plantfibre",
320  "deerpelt",
321  "deermeat",
322  "humanskin",
323  "humanmeat",
324  "leatherclothes",
325  "waterskin",
326  "shelter",
327  "marker_red",
328  "marker_green_small"
329 };
330 
331 const std::string itemToString(ItemType itemType)
332 {
333  switch (itemType)
334  {
335  case ITEM_NONE: return "None";
336  case ITEM_HAND: return "Hand";
337  case ITEM_HOE: return "Hoe";
338  case ITEM_SWORD: return "Sword";
339  case ITEM_KNIFE: return "Knife";
340  case ITEM_LONGBOW: return "Longbow";
341  case ITEM_SPEAR: return "Spear";
342  case ITEM_PICKAXE: return "Pickaxe";
343  case ITEM_FISHROD: return "Fishrod";
344  case ITEM_SHOVEL: return "Shovel";
345  case ITEM_AXE: return "Axe";
346  case ITEM_LOG: return "Log";
347  case ITEM_FISH: return "Fish";
348  case ITEM_CAMPFIRE: return "Campfire";
349  case ITEM_PLANK: return "Plank";
350  case ITEM_WALL: return "Wall";
351  case ITEM_FLOOR: return "Floor";
352  case ITEM_PLANTFIBRE: return "Plantfibre";
353  case ITEM_DEERPELT: return "Deerpelt";
354  case ITEM_DEERMEAT: return "Deermeat";
355  case ITEM_HUMANSKIN: return "Humanskin";
356  case ITEM_HUMANMEAT: return "Humanmeat";
357  case ITEM_LEATHERCLOTHES: return "Leatherclothes";
358  case ITEM_WATERSKIN: return "Waterskin";
359  case ITEM_SHELTER: return "Shelter";
360  case ITEM_MARKER_RED: return "Marker Red";
361  case ITEM_MARKER_GREEN_SMALL: return "Marker Green Small";
362  // Add more cases as needed
363  default: return "Unknown";
364  }
365 }
366 
367 // Define a mapping from ItemType to ItemAction
368 std::unordered_map<ItemType, ItemAction> ItemActionMap =
369 {
372  {ITEM_KNIFE, ITEM_ACTION_HUNTING_MELEE},
374  // ... Add other item to category mappings
375 };
376 
377 // Function to determine if an item is in a particular category
379 {
380  auto it = ItemActionMap.find(itemType);
381  if (it != ItemActionMap.end())
382  {
383  return it->second == ItemAction;
384  }
385  return false; // Item type not found in the map, or not associated with any category
386 }
387 
388 // Function to determine the category of an item
390 {
391  auto it = ItemActionMap.find(itemType);
392  if (it != ItemActionMap.end())
393  {
394  return it->second; // Return the found category
395  }
396  return ITEM_ACTION_NONE; // Return default category if not found
397 }
398 
399 // Assuming ItemType and ItemAction are defined enums
400 // and ItemActionMap is a predefined map from ItemType to ItemAction
401 
402 Vector <ItemType> getItemsInAction(ItemAction category)
403 {
404  Vector<ItemType> itemsInCategory;
405 
406  for (const auto& itemPair : ItemActionMap)
407  {
408  if (itemPair.second == category)
409  {
410  itemsInCategory.push(itemPair.first);
411  }
412  }
413 
414  return itemsInCategory;
415 }
416 
417 
418 
419 #define COUT_COLOURS
420 
421 // black 30 40
422 // red 31 41
423 // green 32 42
424 // yellow 33 43
425 // blue 34 44
426 // magenta 35 45
427 // cyan 36 46
428 // white 37 47
429 
431 {
441 };
442 
443 std::unordered_map<enumColour, std::string> colourMap =
444 {
445  {BLACK, "\033[30m"},
446  {RED, "\033[31m"},
447  {GREEN, "\033[32m"},
448  {YELLOW, "\033[33m"},
449  {BLUE, "\033[34m"},
450  {MAGENTA, "\033[35m"},
451  {CYAN, "\033[36m"},
452  {WHITE, "\033[37m"},
453  {DEFAULT, "\033[0m"}
454 };
455 
457 {
458  #ifdef COUT_COLOURS
459  auto it = colourMap.find(colour);
460  if (it != colourMap.end())
461  {
462  // Set colour
463  std::cout << it->second;
464  }
465  #endif
466 }
467 
468 
469 
470 #endif // WORLDSIM_DRIVER_SETTINGS_ENUMS_CPP
ItemAction
Definition: Driver_Settings_Enums.hpp:243
Definition: Driver_Settings_Enums.hpp:282
Definition: Driver_Settings_Enums.hpp:139
Definition: Driver_Settings_Enums.hpp:43
Definition: Driver_Settings_Enums.hpp:281
Definition: Driver_Settings_Enums.hpp:289
Definition: Driver_Settings_Enums.hpp:248
Definition: Driver_Settings_Enums.hpp:23
Definition: Driver_Settings_Enums.hpp:44
enumResource
Definition: Driver_Settings_Enums.hpp:125
Definition: Driver_Settings_Enums.hpp:222
enumDirection
Definition: Driver_Settings_Enums.hpp:32
Definition: Driver_Settings_Enums.hpp:435
Definition: Driver_Settings_Enums.hpp:59
Definition: Driver_Settings_Enums.hpp:21
Definition: Driver_Settings_Enums.hpp:19
const std::string enumItemTypeStr[ITEM_COUNT]
Definition: Driver_Settings_Enums.hpp:300
enumIntermediate
Definition: Driver_Settings_Enums.hpp:164
Definition: Driver_Settings_Enums.hpp:283
Definition: Driver_Settings_Enums.hpp:272
Definition: Driver_Settings_Enums.hpp:82
Definition: Driver_Settings_Enums.hpp:439
Definition: Driver_Settings_Enums.hpp:219
const std::string resourceToString(enumResource resource)
Definition: Driver_Settings_Enums.hpp:193
Definition: Driver_Settings_Enums.hpp:277
Definition: Driver_Settings_Enums.hpp:170
Definition: Driver_Settings_Enums.hpp:83
Definition: Driver_Settings_Enums.hpp:64
Definition: Driver_Settings_Enums.hpp:89
const std::string enumResourceStr[RESOURCE_COUNT]
Definition: Driver_Settings_Enums.hpp:145
Definition: Driver_Settings_Enums.hpp:171
Definition: Driver_Settings_Enums.hpp:61
Definition: Driver_Settings_Enums.hpp:434
Definition: Driver_Settings_Enums.hpp:296
Definition: Driver_Settings_Enums.hpp:130
enumLocation
Definition: Driver_Settings_Enums.hpp:76
Definition: Driver_Settings_Enums.hpp:45
Definition: Driver_Settings_Enums.hpp:20
Definition: Driver_Settings_Enums.hpp:34
Definition: Driver_Settings_Enums.hpp:292
Definition: Driver_Settings_Enums.hpp:274
const std::string enumCauseOfDeathStr[5]
Definition: Driver_Settings_Enums.hpp:67
Definition: Driver_Settings_Enums.hpp:86
std::unordered_map< enumColour, std::string > colourMap
Definition: Driver_Settings_Enums.hpp:443
const std::string itemToString(ItemType itemType)
Definition: Driver_Settings_Enums.hpp:331
const std::string locationToString(enumLocation location)
Definition: Driver_Settings_Enums.hpp:107
const std::string intermediateToString(enumIntermediate intermediate)
Definition: Driver_Settings_Enums.hpp:183
Definition: Driver_Settings_Enums.hpp:270
Definition: Driver_Settings_Enums.hpp:221
std::unordered_map< ItemType, ItemAction > ItemActionMap
Definition: Driver_Settings_Enums.hpp:368
Definition: Driver_Settings_Enums.hpp:297
Definition: Driver_Settings_Enums.hpp:284
Definition: Driver_Settings_Enums.hpp:140
Definition: Driver_Settings_Enums.hpp:436
Definition: Driver_Settings_Enums.hpp:135
bool isItemInAction(ItemType itemType, ItemAction ItemAction)
Definition: Driver_Settings_Enums.hpp:378
Definition: Driver_Settings_Enums.hpp:290
Definition: Driver_Settings_Enums.hpp:37
enumCauseOfDeath
Definition: Driver_Settings_Enums.hpp:57
Definition: Driver_Settings_Enums.hpp:136
Definition: Driver_Settings_Enums.hpp:24
Definition: Driver_Settings_Enums.hpp:273
Definition: Driver_Settings_Enums.hpp:218
Definition: Driver_Settings_Enums.hpp:169
Definition: Driver_Settings_Enums.hpp:167
enumRace
Definition: Driver_Settings_Enums.hpp:41
Definition: Driver_Settings_Enums.hpp:247
Definition: Driver_Settings_Enums.hpp:62
Definition: Driver_Settings_Enums.hpp:220
Definition: Driver_Settings_Enums.hpp:294
Definition: Driver_Settings_Enums.hpp:278
Definition: Driver_Settings_Enums.hpp:286
Definition: Driver_Settings_Enums.hpp:22
Definition: Driver_Settings_Enums.hpp:142
Definition: Driver_Settings_Enums.hpp:168
Definition: Driver_Settings_Enums.hpp:279
Definition: Driver_Settings_Enums.hpp:137
Definition: Driver_Settings_Enums.hpp:63
Definition: Driver_Settings_Enums.hpp:46
enumMenu activeMenu
Definition: Driver_Settings_Enums.hpp:29
Definition: Driver_Settings_Enums.hpp:217
enumColour
Definition: Driver_Settings_Enums.hpp:430
Vector< ItemType > getItemsInAction(ItemAction category)
Definition: Driver_Settings_Enums.hpp:402
Definition: Driver_Settings_Enums.hpp:78
enumJob
Definition: Driver_Settings_Enums.hpp:215
Definition: Driver_Settings_Enums.hpp:275
Definition: Driver_Settings_Enums.hpp:129
eLocalTerrain
Definition: Driver_Settings_Enums.hpp:50
Definition: Driver_Settings_Enums.hpp:293
Definition: Driver_Settings_Enums.hpp:224
Definition: Driver_Settings_Enums.hpp:438
Definition: Driver_Settings_Enums.hpp:437
Definition: Driver_Settings_Enums.hpp:285
const std::string enumIntermediateStr[INTERMEDIATE_COUNT]
Definition: Driver_Settings_Enums.hpp:174
Definition: Driver_Settings_Enums.hpp:276
Definition: Driver_Settings_Enums.hpp:251
Definition: Driver_Settings_Enums.hpp:249
Definition: Driver_Settings_Enums.hpp:291
Definition: Driver_Settings_Enums.hpp:432
Definition: Driver_Settings_Enums.hpp:132
enumMenu
Definition: Driver_Settings_Enums.hpp:17
Definition: Driver_Settings_Enums.hpp:433
Definition: Driver_Settings_Enums.hpp:134
Definition: Driver_Settings_Enums.hpp:141
Definition: Driver_Settings_Enums.hpp:128
const std::string actionToString(ItemAction action)
Definition: Driver_Settings_Enums.hpp:254
Definition: Driver_Settings_Enums.hpp:81
Definition: Driver_Settings_Enums.hpp:131
Definition: Driver_Settings_Enums.hpp:35
Definition: Driver_Settings_Enums.hpp:245
Definition: Driver_Settings_Enums.hpp:88
Definition: Driver_Settings_Enums.hpp:440
Definition: Driver_Settings_Enums.hpp:250
Definition: Driver_Settings_Enums.hpp:133
Definition: Driver_Settings_Enums.hpp:223
Definition: Driver_Settings_Enums.hpp:80
Definition: Driver_Settings_Enums.hpp:288
Definition: Driver_Settings_Enums.hpp:79
const std::string enumLocationStr[LOCATION_COUNT]
Definition: Driver_Settings_Enums.hpp:92
Definition: Driver_Settings_Enums.hpp:246
Definition: Driver_Settings_Enums.hpp:25
Definition: Driver_Settings_Enums.hpp:127
Definition: Driver_Settings_Enums.hpp:36
Definition: Driver_Settings_Enums.hpp:60
Definition: Driver_Settings_Enums.hpp:287
Definition: Driver_Settings_Enums.hpp:295
Definition: Driver_Settings_Enums.hpp:85
Definition: Driver_Settings_Enums.hpp:271
void colour(enumColour colour)
Definition: Driver_Settings_Enums.hpp:456
const std::string enumJobStr[JOB_COUNT]
Definition: Driver_Settings_Enums.hpp:227
Definition: Driver_Settings_Enums.hpp:280
ItemAction getActionOfItem(ItemType itemType)
Definition: Driver_Settings_Enums.hpp:389
Definition: Driver_Settings_Enums.hpp:138
Definition: Driver_Settings_Enums.hpp:166
Definition: Driver_Settings_Enums.hpp:84
Definition: Driver_Settings_Enums.hpp:87
ItemType
Definition: Driver_Settings_Enums.hpp:268