2 #ifndef WORLDSIM_MENU_WORLDSIMULATOR_HPP 3 #define WORLDSIM_MENU_WORLDSIMULATOR_HPP 29 GUI_Manager guiManager;
32 Texture* backgroundTexture;
35 ColourRGB <unsigned char> cNormal;
36 ColourRGB <unsigned char> cSelected;
37 ColourRGB <unsigned char> cDropPanel;
38 ColourRGB <unsigned char> cHighlight;
41 GUI_Button buttonStartSimulation;
43 GUI_Button buttonPauseSimulation;
45 GUI_CycleButton cycleSimulationSpeed;
47 GUI_TextBox textSimulationSpeed;
49 GUI_Button buttonIncrementDay;
50 GUI_Button buttonIncrementMonth;
51 GUI_Button buttonIncrementYear;
52 GUI_Button buttonIncrementContinuous;
57 GUI_Button buttonTribeMenu;
59 GUI_Button buttonWorldMenu;
61 GUI_Button buttonBiomeMenu;
63 GUI_Button buttonCharacterMenu;
65 GUI_Button buttonTerritoryView;
67 GUI_Button buttonCivMenu;
69 GUI_Button buttonSubterraneanView;
71 GUI_Button buttonExpandMap;
74 GUI_Button buttonFlora;
76 GUI_Button buttonCreaturesMenu;
78 GUI_Button buttonSettlementsMenu;
82 GUI_Button buttonMinimapBaseTexture;
84 GUI_Button buttonMinimapBaseLand;
88 bool fullScreenWorldView;
105 backgroundTexture=&TEX_NEW_GAME_BACKGROUND;
115 buttonExpandMap.text=
"Expand";
116 buttonExpandMap.setColours(cNormal,cHighlight,0);
118 buttonExpandMap.texture = &TEX_GUI_EXPAND;
120 fullScreenWorldView=
true;
122 menuTribes.active=
false;
123 menuWorld.active=
false;
124 menuCharacter.active=
false;
125 menuBiome.active=
false;
126 menuFlora.active=
false;
127 menuCreatures.active=
false;
128 menuSettlements.active=
false;
138 guiManager.setFont(_font);
144 cNormal.set(200,200,200);
145 cSelected.set(180,180,180);
146 cDropPanel.set(170,170,170);
147 cHighlight.set(170,170,170);
149 cycleSimulationSpeed.wrap=
false;
150 cycleSimulationSpeed.currentOption=0;
151 cycleSimulationSpeed.addOption(
"PAUSED");
152 cycleSimulationSpeed.addOption(
"1x");
153 cycleSimulationSpeed.addOption(
"60x");
154 cycleSimulationSpeed.addOption(
"100x");
155 cycleSimulationSpeed.addOption(
"1,000x");
156 cycleSimulationSpeed.addOption(
"10,000x");
157 cycleSimulationSpeed.addOption(
"100,000x");
158 cycleSimulationSpeed.addOption(
"1,000,000x");
159 cycleSimulationSpeed.addOption(
"10,000,000x");
160 cycleSimulationSpeed.addOption(
"100,000,000x");
161 cycleSimulationSpeed.texCycleButton=&TEX_GUI_DECREMENT;
162 cycleSimulationSpeed.setColours(cNormal,cHighlight,0);
164 textSimulationSpeed.text=
"Speed:";
165 textSimulationSpeed.setColours(cNormal);
167 buttonIncrementDay.text =
"+D";
168 buttonIncrementDay.setColours(cNormal,cHighlight,0);
169 buttonIncrementMonth.text =
"+M";
170 buttonIncrementMonth.setColours(cNormal,cHighlight,0);
171 buttonIncrementYear.text =
"+Y";
172 buttonIncrementYear.setColours(cNormal,cHighlight,0);
173 buttonIncrementContinuous.text =
"+++";
174 buttonIncrementContinuous.setColours(cNormal,cHighlight,0);
175 buttonTribeMenu.text=
"Tri";
176 buttonTribeMenu.setColours(cNormal,cHighlight,0);
177 buttonWorldMenu.text=
"Leg";
178 buttonWorldMenu.setColours(cNormal,cHighlight,0);
179 buttonBiomeMenu.text=
"Bio";
180 buttonBiomeMenu.setColours(cNormal,cHighlight,0);
181 buttonCharacterMenu.text=
"Cha";
182 buttonCharacterMenu.setColours(cNormal,cHighlight,0);
183 buttonCivMenu.text=
"Civ";
184 buttonCivMenu.setColours(cNormal,cHighlight,0);
185 buttonSubterraneanView.text =
"Sub";
186 buttonSubterraneanView.setColours(cNormal,cHighlight,0);
187 buttonTerritoryView.text=
"Ter";
188 buttonTerritoryView.setColours(cNormal,cHighlight,0);
189 buttonFlora.text=
"F";
190 buttonFlora.setColours(cNormal,cHighlight,0);
191 buttonCreaturesMenu.text=
"Crt";
192 buttonCreaturesMenu.setColours(cNormal,cHighlight,0);
193 buttonSettlementsMenu.text=
"Cit";
194 buttonSettlementsMenu.setColours(cNormal,cHighlight,0);
197 buttonMinimapBaseTexture.init(
"", &TEX_GUI_MINIMAP_BASE_TEXTUREMODE, cNormal, cHighlight, 0,
true);
198 buttonMinimapBaseLand.init(
"", &TEX_GUI_MINIMAP_BASE_LANDMODE, cNormal, cHighlight, 0,
true);
202 guiManager.add(&textSimulationSpeed);
203 guiManager.add(&cycleSimulationSpeed);
204 guiManager.add(&buttonIncrementDay);
205 guiManager.add(&buttonIncrementMonth);
206 guiManager.add(&buttonIncrementYear);
207 guiManager.add(&buttonIncrementContinuous);
209 guiManager.add(&buttonTribeMenu);
210 guiManager.add(&buttonWorldMenu);
211 guiManager.add(&buttonBiomeMenu);
212 guiManager.add(&buttonCharacterMenu);
213 guiManager.add(&buttonCivMenu);
214 guiManager.add(&buttonFlora);
215 guiManager.add(&buttonCreaturesMenu);
216 guiManager.add(&buttonSettlementsMenu);
217 guiManager.add(&buttonTerritoryView);
218 guiManager.add(&buttonSubterraneanView);
221 guiManager.add(&buttonMinimapBaseTexture);
222 guiManager.add(&buttonMinimapBaseLand);
225 guiManager.add(&menuTribes);
226 guiManager.add(&menuCivs);
227 guiManager.add(&menuWorld);
228 guiManager.add(&menuCharacter);
229 guiManager.add(&menuBiome);
230 guiManager.add(&menuFlora);
231 guiManager.add(&menuCreatures);
232 guiManager.add(&menuSettlements);
234 textSimulationSpeed.active=
true;
235 cycleSimulationSpeed.active=
true;
237 buttonIncrementDay.active=
true;
238 buttonIncrementMonth.active=
true;
239 buttonIncrementYear.active=
true;
240 buttonIncrementContinuous.active=
true;
242 buttonTribeMenu.active=
true;
243 buttonWorldMenu.active=
true;
244 buttonBiomeMenu.active=
true;
245 buttonCharacterMenu.active=
true;
246 buttonCivMenu.active=
true;
247 buttonFlora.active=
true;
248 buttonCreaturesMenu.active=
true;
249 buttonSettlementsMenu.active=
true;
250 buttonTerritoryView.active=
true;
251 buttonSubterraneanView.active=
true;
253 buttonExpandMap.active =
false;
254 buttonStartSimulation.active =
false;
255 buttonPauseSimulation.active =
false;
260 menuCharacter.
init();
263 menuCreatures.
init();
264 menuSettlements.
init();
284 if ( fullScreenWorldView==
true)
286 Renderer::placeTexture4(panelX1,panelY1,panelX2,panelY2,backgroundTexture,
true);
290 Renderer::placeTexture4(panelX1,panelY1,panelX2,panelY2,backgroundTexture,
true);
297 const int nY = panelY2-panelY1;
298 Renderer::placeColour4a(200,200,250,125,panelX1,panelY1+120,panelX1+220,panelY2);
299 int currentY = panelY2-2;
304 while (currentY>panelY1+120 && iMessage>=0 && iMessage<
vConsoleMessage.size() )
306 linesDrawn =
font8x8.drawText(
vConsoleMessage(iMessage),panelX1,currentY,panelX1+220,currentY-38,
false,
false);
308 currentY-=linesDrawn*9;
316 Renderer::placeColour4a(250,200,250,250,panelX1,panelY1,panelX1+220,panelY1+220);
320 Renderer::placeColour4a(200,250,250,250,panelX1,panelY1+236,panelX1+220,panelY1+356);
332 panelX1,panelY1+310,panelX1+220,panelY1+320,
false,
true);
335 panelX1,panelY1+300,panelX1+220,panelY1+310,
false,
true);
338 panelX1,panelY1+290,panelX1+220,panelY1+300,
false,
true);
340 panelX1,panelY1+280,panelX1+220,panelY1+290,
false,
true);
344 panelX1,panelY1+270,panelX1+220,panelY1+280,
false,
true);
346 Renderer::setTextureMode();
347 Renderer::placeTexture4(panelX1, panelY1+236, panelX1+32, panelY1+268, tile->
currentTexture(),
false);
352 Renderer::placeColour4a(250,200,250,250,panelX1,panelY1+356,panelX1+220,panelY1+476);
364 const std::string sName =
368 panelX1,panelY1+418,panelX1+220,panelY1+428,
false,
true);
375 panelX1,panelY1+408,panelX1+220,panelY1+418,
false,
true);
381 panelX1,panelY1+398,panelX1+220,panelY1+408,
false,
true);
383 (
Stream() <<
"Elevation: "<< tile->
data->aLocalTile
385 panelX1,panelY1+388,panelX1+220,panelY1+398,
false,
true);
388 Renderer::setTextureMode();
389 Renderer::placeTexture4(panelX1, panelY1+356, panelX1+32, panelY1+388, tile->
currentTexture(),
false);
393 buttonExpandMap.render();
396 Renderer::placeColour4a(150,150,150,255,panelX2-208,panelY2-20,panelX2,panelY2-10);
398 font8x8.drawText(
"DATE: "+strDate,panelX2-208,panelY2-20,panelX2,panelY2-10,
false,
true);
413 Renderer::placeColour4a(150,150,150,255,panelX2-380,panelY2-20,panelX2-208,panelY2-10);
414 font8x8.drawText(
"Pop: "+DataTools::toString(
worldPop),panelX2-380,panelY2-20,panelX2-208,panelY2-10,
false,
true);
425 if ( cycleSimulationSpeed.getCurrentOption() ==
"PAUSED" )
431 if ( cycleSimulationSpeed.getCurrentOption() ==
"1x" )
436 else if ( cycleSimulationSpeed.getCurrentOption() ==
"60x" )
441 else if ( cycleSimulationSpeed.getCurrentOption() ==
"100x" )
446 else if ( cycleSimulationSpeed.getCurrentOption() ==
"1,000x" )
451 else if ( cycleSimulationSpeed.getCurrentOption() ==
"10,000x" )
456 else if ( cycleSimulationSpeed.getCurrentOption() ==
"100,000x" )
461 else if ( cycleSimulationSpeed.getCurrentOption() ==
"1,000,000x" )
466 else if ( cycleSimulationSpeed.getCurrentOption() ==
"10,000,000x" )
471 else if ( cycleSimulationSpeed.getCurrentOption() ==
"100,000,000x" )
485 if(_keyboard->isPressed(Keyboard::ESCAPE))
487 menuTribes.active =
false;
488 menuCivs.active =
false;
489 menuFlora.active =
false;
491 menuCreatures.active =
false;
493 menuSettlements.active =
false;
494 menuWorld.active =
false;
495 menuCharacter.active =
false;
496 menuBiome.active =
false;
503 buttonIncrementContinuous.text =
"+++";
506 _keyboard->keyUp(Keyboard::ESCAPE);
509 if(_keyboard->isPressed(Keyboard::PERIOD))
513 _keyboard->keyUp(Keyboard::PERIOD);
518 if(_keyboard->isPressed(Keyboard::TAB))
522 std::cout<<
"No character selected, selecting random character.\n";
529 std::cout<<
"Entering adventure mode.\n";
535 menuTribes.active =
false;
536 menuCivs.active =
false;
537 menuFlora.active =
false;
538 menuCreatures.active =
false;
539 menuSettlements.active =
false;
540 menuWorld.active =
false;
541 menuCharacter.active =
false;
542 menuBiome.active =
false;
550 std::cout<<
"Error: world.prepareAdventureMode(~) failed.\n";
553 _keyboard->keyUp(Keyboard::TAB);
557 std::cout<<
"Error: No player pointer.\n";
561 guiManager.keyboardEvent(_keyboard);
570 buttonExpandMap.mouseEvent(_mouse);
572 if(buttonExpandMap.clicked==
true)
574 fullScreenWorldView=!fullScreenWorldView;
576 if (fullScreenWorldView==
true)
579 buttonExpandMap.setPanel(panelX1,panelY1,panelX1+16,panelY1+16);
584 buttonExpandMap.setPanel
585 (panelX1+(panelX2/2),panelY1+(panelY2/2),panelX1+(panelX2/2)+16,panelY1+(panelY2/2)+16);
588 buttonExpandMap.unclick();
592 if (buttonIncrementDay.clicked==
true)
594 buttonIncrementDay.unclick();
597 if (buttonIncrementMonth.clicked==
true)
599 buttonIncrementMonth.unclick();
602 if (buttonIncrementYear.clicked==
true)
604 buttonIncrementYear.unclick();
607 if (buttonIncrementContinuous.clicked==
true)
609 buttonIncrementContinuous.unclick();
615 buttonIncrementContinuous.text =
"---";
619 buttonIncrementContinuous.text =
"+++";
625 if (buttonTribeMenu.clicked==
true)
628 menuTribes.active=
true;
629 buttonTribeMenu.unclick();
632 if (buttonWorldMenu.clicked==
true)
634 std::cout<<
"Worldmenu\n";
636 menuWorld.active=
true;
637 buttonWorldMenu.unclick();
640 if (buttonCharacterMenu.clicked==
true)
642 std::cout<<
"Character menu\n";
643 menuCharacter.
init();
644 menuCharacter.active=
true;
645 buttonCharacterMenu.unclick();
648 if (buttonCivMenu.clicked==
true)
650 std::cout<<
"Civ menu\n";
652 menuCivs.active=
true;
653 buttonCivMenu.unclick();
656 if (buttonFlora.clicked==
true)
658 std::cout<<
"Flora menu\n";
660 menuFlora.active=
true;
661 buttonFlora.unclick();
664 if (buttonCreaturesMenu.clicked==
true)
666 std::cout<<
"Creatures menu\n";
667 menuCreatures.
init();
668 menuCreatures.active=
true;
669 buttonCreaturesMenu.unclick();
672 if (buttonSettlementsMenu.clicked==
true)
674 std::cout<<
"Settlments menu\n";
675 menuSettlements.
init();
676 menuSettlements.active=
true;
677 buttonSettlementsMenu.unclick();
684 if (buttonBiomeMenu.clicked==
true)
686 std::cout<<
"Biome menu\n";
688 menuBiome.active=
true;
689 buttonBiomeMenu.unclick();
692 if (buttonMinimapBaseTexture.clicked==
true)
694 std::cout<<
"Toggle texture/colour mode\n";
696 buttonMinimapBaseTexture.unclick();
698 if (buttonMinimapBaseLand.clicked==
true)
700 std::cout<<
"Toggle texture/colour mode\n";
702 buttonMinimapBaseLand.unclick();
704 if (buttonTerritoryView.clicked==
true)
706 std::cout<<
"Toggle territory visibility.\n";
708 buttonTerritoryView.unclick();
710 if (buttonSubterraneanView.clicked==
true)
712 std::cout<<
"Toggle subterranean mode\n";
714 buttonSubterraneanView.unclick();
722 if(guiManager.mouseEvent(_mouse)==
true)
760 int panelSizeX = panelX2-panelX1;
761 int panelSizeY = panelY2-panelY1;
763 int worldPreviewX1=panelX1+(panelSizeX/2);
764 int worldPreviewY1=panelY1+(panelSizeY/2);
767 const int leftColumnCenterX = panelX1+(panelNX/4);
769 Renderer::placeColour4(0,0,0,worldPreviewX1,worldPreviewY1,panelX2,panelY2);
772 textSimulationSpeed.setPanel(panelX2-200, panelY2-30, panelX2-100, panelY2-20);
773 cycleSimulationSpeed.setPanel(panelX2-150, panelY2-30, panelX2, panelY2-20);
775 buttonIncrementDay.setPanel(panelX2-120, panelY2-40, panelX2-160, panelY2-30);
776 buttonIncrementMonth.setPanel(panelX2-80, panelY2-40, panelX2-120, panelY2-30);
777 buttonIncrementYear.setPanel(panelX2-40, panelY2-40, panelX2-80, panelY2-30);
778 buttonIncrementContinuous.setPanel(panelX2, panelY2-40, panelX2-40, panelY2-30);
780 buttonTribeMenu.setPanel(panelX2-180, panelY2-40, panelX2-220, panelY2-30);
781 buttonWorldMenu.setPanel(panelX2-220, panelY2-40, panelX2-260, panelY2-30);
782 buttonCharacterMenu.setPanel(panelX2-260, panelY2-40, panelX2-300, panelY2-30);
783 buttonBiomeMenu.setPanel(panelX2-300, panelY2-40, panelX2-340, panelY2-30);
784 buttonTerritoryView.setPanel(panelX2-340, panelY2-40, panelX2-380, panelY2-30);
785 buttonCivMenu.setPanel(panelX2-380, panelY2-40, panelX2-420, panelY2-30);
786 buttonSubterraneanView.setPanel(panelX2-420, panelY2-40, panelX2-460, panelY2-30);
788 buttonFlora.setPanel(panelX2-460, panelY2-40, panelX2-500, panelY2-30);
789 buttonCreaturesMenu.setPanel(panelX2-500, panelY2-40, panelX2-540, panelY2-30);
790 buttonSettlementsMenu.setPanel(panelX2-540, panelY2-40, panelX2-580, panelY2-30);
792 buttonMinimapBaseTexture.setPanel(panelX1,panelY1,panelX1+32,panelY1+16);
793 buttonMinimapBaseLand.setPanel(panelX1+32,panelY1,panelX1+64,panelY1+16);
795 menuTribes.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
796 menuCivs.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
797 menuWorld.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
798 menuCharacter.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
799 menuBiome.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
800 menuFlora.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
801 menuCreatures.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
802 menuSettlements.setPanel(panelX1,panelY1+5,panelX2,panelY2-40);
803 minimap.setPanel(panelX1,panelY1+16,panelX1+220,panelY1+236);
805 if (fullScreenWorldView==
true)
808 buttonExpandMap.setPanel(panelX1,panelY1,panelX1+16,panelY1+16);
813 buttonExpandMap.setPanel
814 (panelX1+(panelX2/2),panelY1+(panelY2/2),panelX1+(panelX2/2)+16,panelY1+(panelY2/2)+16);
WorldViewer worldViewer
Definition: Driver.cpp:35
unsigned short int centerHeight
Definition: World_Local.hpp:214
Definition: Driver_GlobalObjects.hpp:121
Vector< World_Landmass * > vLandmass
Definition: World.hpp:122
Vector< Civ * > vCiv
Definition: World.hpp:136
World * world
Definition: World_Viewer.hpp:90
const int TICKS_PER_DAY
Definition: Driver_Settings.cpp:185
long long unsigned int ticksBacklog
Definition: World.hpp:86
short int baseMetal
Definition: World_Local.hpp:185
World world
Definition: Driver.cpp:45
void setCenterTile(const double _centerTileX, const double _centerTileY, const int _subTileX=LOCAL_MAP_SIZE/2, const int _subTileY=LOCAL_MAP_SIZE/2)
Definition: World_Viewer.hpp:334
bool tilesetMode
Definition: World_Viewer.hpp:107
void render()
Definition: World_Viewer.hpp:523
bool prepareAdventureMode(Character *)
Definition: World.cpp:2453
int worldPop
Definition: Driver_Settings.cpp:122
WorldViewer_Minimap minimap
Definition: World_Viewer_Minimap.hpp:145
Wildcat::Font font8x8
Definition: Driver_GlobalObjects.hpp:55
int worldY
Definition: WorldObjectGlobal.hpp:22
Definition: World_Local.hpp:58
Vector< std::string > vConsoleMessage
Definition: Driver_GlobalObjects.hpp:40
bool isUnderground
Definition: WorldObject.hpp:24
std::string getTerrainName()
Definition: World_Local.cpp:3149
Character * playerCharacter
Definition: Driver_Settings.cpp:107
int worldX
Definition: WorldObjectGlobal.hpp:22
int queryWorldY
Definition: World.hpp:82
bool landMode
Definition: World_Viewer.hpp:109
Calendar globalCalendar
Definition: Driver_GlobalObjects.hpp:28
int queryWorldX
Definition: World.hpp:82
int centerX
Definition: World_Landmass.hpp:21
World_Local * getTile(const int, const int)
Definition: World.cpp:2429
enumMenu activeMenu
Definition: Driver_Settings_Enums.hpp:29
void setPanel(const int _x1, const int _y1, const int _x2, const int _y2)
Definition: World_Viewer.hpp:318
bool territoryView
Definition: World_Viewer.hpp:106
int centerY
Definition: World_Landmass.hpp:21
const int TICKS_PER_YEAR
Definition: Driver_Settings.cpp:187
Definition: World_Landmass.hpp:13
bool incrementContinuous
Definition: World.hpp:87
Character * getRandomCharacter()
Definition: World.cpp:535
bool isSafe(int _x, int _y)
Definition: World.cpp:504
const int TICKS_PER_MONTH
Definition: Driver_Settings.cpp:186
bool mouseEvent(Mouse *mouse)
Definition: World_Viewer.hpp:261
int TIME_SCALE
Definition: Driver_Settings.cpp:162
World * world
Definition: World_Viewer_Minimap.hpp:26
Data * data
Definition: World_Local.hpp:154
void incrementTicks(int)
Definition: World.cpp:1024
bool active
Definition: World_Viewer.hpp:66
int queryWorldYLocal
Definition: World.hpp:84
std::string getLandmassName(const int, const int)
Definition: World.cpp:2197
Definition: Driver_Settings_Enums.hpp:25
bool keyboardEvent(Keyboard *_keyboard)
Definition: World_Viewer.hpp:181
int queryWorldXLocal
Definition: World.hpp:84
Vector< Tribe * > vTribe
Definition: World.hpp:135
bool subterraneanMode
Definition: World_Viewer.hpp:108
virtual Texture * currentTexture()
Definition: World_Local.cpp:3159
std::string getBiomeName(const int, const int)
Definition: World.cpp:2237
void centerView()
Definition: World_Viewer.hpp:169