WorldSim  inDev
2D tile-based sandbox RPG with procedurally generated fantasy world simulator 🌏
Driver_Init.hpp
Go to the documentation of this file.
1 #pragma once
2 #ifndef WORLDSIM_DRIVER_INIT_HPP
3 #define WORLDSIM_DRIVER_INIT_HPP
4 
5 /* WorldSim: Driver_Init.hpp
6 #include "Driver_Init.hpp"
7 
8 Driver initialization goes here.
9 
10 Initialize main menus, start timers, initialise any important data.
11 
12 */
13 
14 #include <File/WTFManager.hpp> // loading raws
15 
16 void init()
17 {
18  std::cout<<"\n*** INIT ***\n";
19 
22 
23  SEEDER.seed(time(NULL));
24  Random::seed();
25  globalRandom.seed(SEEDER);
26  globalNameGen.seed(SEEDER);
28 
29  // load globalSettings
30  globalSettings.load(FileManager::getFileAsString("raw/ini.wtf"));
31 
32  std::cout<<" *** RAWS ***\n";
33  WTFManager wtfManager;
34 
35  // BUILD COLOURS FROM THE RAW
36  // load colours. Used for Flora and anything else with Colour attributes
37  wtfManager.parse(FileManager::getFileAsString("raw/colours.wtf"));
38  // Load creature species.
39  wtfManager.parse(FileManager::getFileAsString("raw/creatures.wtf"));
40  // Load texture raws
41  wtfManager.parse(FileManager::getFileAsString("raw/textures.wtf"));
42 
43  std::cout<<"All raws:\n"<<wtfManager.getAll()<<"\n\n";
44 
45 
46 
47  // LOAD COLOURS
48 
49  WTFNode* node = wtfManager.getRandom("COLOUR", globalRandom);
50  if (node==0)
51  {
52  std::cout<<"Search returned null ptr\n";
53  }
54  else
55  {
56  std::cout<<"Searched node: "<<node->toString()<<"\n";
57 
58  std::cout<<"Getting node RGB.\n";
59  std::cout<<node->getSub("NAME")->toString()<<"\n";
60  std::cout<<node->getSub("RGB")->toString()<<"\n";
61 
62  // alternate: get all colours
63  Vector <WTFNode*>* vNode = wtfManager.getAllSub("COLOUR");
64  for (int i=0;i<vNode->size();++i)
65  {
66  Vector <std::string> * vRGB = (*vNode)(i)->getValues("RGB");
67  std::string colourName = (*vNode)(i)->getValue("NAME");
68 
69  if (vRGB->size() == 3 && colourName != "")
70  {
71  colourManager.makeColour(DataTools::toInt( (*vRGB)(0) ) ,DataTools::toInt( (*vRGB)(1) ),
72  DataTools::toInt( (*vRGB)(2) ),colourName);
73  }
74  else
75  {
76  std::cout<<"Error: Colours are wrong\n";
77  }
78  }
79  std::cout<<"Colours built:\n"<<colourManager.toString()<<"\n";
80  }
81  ColourRGB <unsigned char> c (64,64,64);
82  ColourRGB <unsigned char> * c2 = colourManager.getClosestTo(c);
83 
84  if (c2)
85  {
86  std::cout<<"The closest colour to "<<c.toString()<<" is "<<c2->toString()<<"\n";
87  }
88 
89 
90  // Load texture references
91  textureManager.loadRaw(FileManager::getFileAsString("raw/textures.wtf"));
92 
93  // LOAD CREATURE SPECIES
94  // I'm not sure if we should load raws out here or let the class handle it. For now I'll leave it for the generator
95  // class but I might change it later.
96  creatureGenerator.loadRaw(FileManager::getFileAsString("raw/creatures.wtf"));
97 
98 
99  std::cout<<" *** END RAWS ***\n";
100 
101  // CLEAN_SAVES_ON_EXIT=false;
102  // QUIT_FLAG=true;
103 
104  //Makes cout faster but less reliable
105  if ( FAST_COUT )
106  {
107  std::ios_base::sync_with_stdio(false);
108  std::cin.tie(NULL);
109  }
110  else
111  {
112  std::ios_base::sync_with_stdio(true);
113  }
114 
115  consoleMessage("GAME STARTED");
116 
117  playerCharacter = 0;
118 
119  globalKeyboard.init();
120 
121  /* Load textures (Tex pointers from Driver_TextureList.hpp). */
122  loadTextures();
123 
124  //LOAD RECIPES
127 
128  /* Load font */
129  {
130  Png fontPng;
131  int fileSize;
132  unsigned char* fileData = FileManager::getFile("Textures/Font/8x8/8x8 Transparent v3 plus junk.png",&fileSize);
133 
134  if ( fileData == 0 )
135  {
136  std::cout<<"ERROR: Font PNG did not load.\n";
137  }
138  else
139  {
140  fontPng.load(fileData,fileSize);
141  if(font8x8.loadData(&fontPng,8,8)==false)
142  { std::cout<<"ERROR: Font did not load.\n"; }
143  delete [] fileData;
144  }
145  }
146 
147  /* Load white font */
148  {
149  Png fontPng;
150  int fileSize;
151  unsigned char* fileData = FileManager::getFile("Textures/Font/8x8/8x8 Transparent v3 plus junk.png",&fileSize);
152 
153  if ( fileData == 0 )
154  {
155  std::cout<<"ERROR: Font PNG did not load.\n";
156  }
157  else
158  {
159  fontPng.load(fileData,fileSize);
160  fontPng.makeWhite();
161  if(font8x8White.loadData(&fontPng,8,8)==false)
162  { std::cout<<"ERROR: Font white did not load.\n"; }
163  delete [] fileData;
164  }
165  }
166 
167  font8x8.ySpacing=2;
168  font8x8White.ySpacing=2;
169 
171  idleManager.add(&world);
172  logicTickManager.add(&world);
173 
175 
176  /* Start timers. */
177  frameRateTimer.init();
178  frameRateTimer.start();
179  pollRateTimer.init();
180  pollRateTimer.start();
181  logicRateTimer.init();
182  logicRateTimer.start();
183  physicsRateTimer.init();
184  physicsRateTimer.start();
185  animationTimer.init();
186  animationTimer.start();
187  debugTimer.init();
188  debugTimer.start();
189 
190  playerKeypressTimer.init();
191  playerKeypressTimer.start();
192 
193  /* Initialise the main menu */
194  menuTitle.setPanel(0,0,RESOLUTIONX,RESOLUTIONY);
195  menuTitle.init();
197  menuTitle.backgroundTexture=&TEX_TITLE;
198  menuTitle.active=true;
199 
200  /* Initialise the options menu */
201  menuOptions.setPanel(0,0,RESOLUTIONX,RESOLUTIONY);
202  menuOptions.init();
204  menuOptions.backgroundTexture=&TEX_TITLE;
205  menuOptions.active=false;
206 
207  /* Initialise the load game menu */
208  menuLoadGame.setPanel(0,0,RESOLUTIONX,RESOLUTIONY);
209  menuLoadGame.init();
211  menuLoadGame.backgroundTexture=&TEX_TITLE;
212  menuLoadGame.active=false;
213 
214  /* Initialise the world generator menu */
218  //menuWorldGenerator.backgroundTexture=&TEX_TITLE;
219  menuWorldGenerator.active=false;
220 
221  /* Initialise the world simulator menu */
225  //menuWorldSimulator.backgroundTexture=&TEX_TITLE;
226  menuWorldSimulator.active=false;
227 
230  menuAdventureMode.setFont(&font8x8);
231  //menuAdventureMode.backgroundTexture=&TEX_TITLE;
232  menuAdventureMode.active=false;
233 
235  //keyboardInterfaceManager.add(&menuTitle);
237 
238  std::cout<<" *** END INIT ***\n\n";
239 }
240 
241 #endif
Texture * backgroundTexture
Definition: Menu_Options.hpp:9
Menu_Options menuOptions
Definition: Driver.cpp:54
void loadTextures()
Definition: Driver_LoadTextures.hpp:56
void init()
Definition: Menu_AdventureMode.hpp:581
Menu_AdventureMode menuAdventureMode
Definition: Driver.cpp:67
void init()
Definition: Menu_Options.hpp:47
Menu_WorldSimulator menuWorldSimulator
Definition: Driver.cpp:64
const int HOURS_PER_DAY
Definition: Driver_Settings.cpp:176
void init()
Definition: Menu_WorldGenerator.hpp:117
RandomLehmer SEEDER
Definition: Driver_GlobalObjects.hpp:9
World world
Definition: Driver.cpp:45
NameGeneratorWord gNameGeneratorWord
Definition: Driver_GlobalObjects.hpp:25
Recipe_GrilledFish recipeGrilledFish
Definition: Recipe.hpp:158
Recipe_Wall recipeWall
Definition: Recipe.hpp:124
RandomLehmer globalRandom
Definition: Driver_GlobalObjects.hpp:11
Menu_WorldGenerator menuWorldGenerator
Definition: Driver.cpp:61
void init()
Definition: Menu_Title.hpp:67
GUI_Manager globalGuiManager
Definition: Driver_GlobalObjects.hpp:102
Wildcat::Font font8x8White
Definition: Driver_GlobalObjects.hpp:56
ColourManager< unsigned char > colourManager
Definition: Driver_GlobalObjects.hpp:32
NameGenerator globalNameGen
Definition: Driver_GlobalObjects.hpp:22
Menu_Title menuTitle
Definition: Driver.cpp:51
const int SECONDS_PER_MINUTE
Definition: Driver_Settings.cpp:174
Wildcat::Font font8x8
Definition: Driver_GlobalObjects.hpp:55
void initCreatureAttacks()
Definition: Creature_Attack.hpp:53
void init()
Definition: Menu_LoadGame.hpp:33
unsigned int RESOLUTIONY
Definition: Driver_Settings.cpp:96
Creature_Generator creatureGenerator
Definition: Driver_GlobalObjects.hpp:77
Keyboard globalKeyboard
Definition: Driver_GlobalObjects.hpp:61
Character * playerCharacter
Definition: Driver_Settings.cpp:107
Timer logicRateTimer
Definition: Driver_GlobalObjects.hpp:66
Timer debugTimer
Definition: Driver_GlobalObjects.hpp:71
void init()
Definition: Driver_Init.hpp:16
Timer physicsRateTimer
Definition: Driver_GlobalObjects.hpp:67
void setFont(Wildcat::Font *_font)
Definition: Menu_WorldGenerator.hpp:103
Calendar globalCalendar
Definition: Driver_GlobalObjects.hpp:28
Texture * backgroundTexture
Definition: Menu_LoadGame.hpp:8
Menu_LoadGame menuLoadGame
Definition: Driver.cpp:57
void consoleMessage(std::string s)
Definition: Driver_GlobalObjects.hpp:42
const int CALENDAR_INITIAL_MINUTE
Definition: Driver_Settings.cpp:191
void setFont(Wildcat::Font *_font)
Definition: Menu_Title.hpp:51
const int DAYS_PER_MONTH
Definition: Driver_Settings.cpp:177
Timer frameRateTimer
Definition: Driver_GlobalObjects.hpp:64
Timer animationTimer
Definition: Driver_GlobalObjects.hpp:68
TextureManager textureManager
Definition: Driver_GlobalObjects.hpp:35
LogicTickManager logicTickManager
Definition: Driver_GlobalObjects.hpp:107
void loadRaw(std::string strRaw)
Definition: TextureManager.hpp:43
unsigned int RESOLUTIONX
Definition: Driver_Settings.cpp:96
Texture * backgroundTexture
Definition: Menu_Title.hpp:42
const bool FAST_COUT
Definition: Driver_Settings.cpp:37
MouseInterfaceManager mouseInterfaceManager
Definition: Driver_GlobalObjects.hpp:91
Timer pollRateTimer
Definition: Driver_GlobalObjects.hpp:65
void load(std::string settingsData)
Definition: Driver_GlobalSettings.cpp:30
IdleTickManager idleManager
Definition: Driver_GlobalObjects.hpp:111
const int MONTHS_PER_YEAR
Definition: Driver_Settings.cpp:178
void setFont(Wildcat::Font *_font)
Definition: Menu_WorldSimulator.hpp:135
void loadRaw(std::string strRaw)
Definition: Creature_Generator.cpp:38
const int CALENDAR_INITIAL_HOUR
Definition: Driver_Settings.cpp:190
GlobalSettings globalSettings
Definition: Driver.cpp:12
void addRecipe(Recipe *_recipe)
Definition: Recipe.hpp:296
Timer playerKeypressTimer
Definition: Driver_GlobalObjects.hpp:69
void setFont(Wildcat::Font *_font)
Definition: Menu_LoadGame.hpp:61
void init()
Definition: Menu_WorldSimulator.hpp:141
void setFont(Wildcat::Font *_font)
Definition: Menu_Options.hpp:35
RecipeManager recipeManager
Definition: Recipe.hpp:395
const int MINUTES_PER_HOUR
Definition: Driver_Settings.cpp:175