WorldSim  inDev
2D tile-based sandbox RPG with procedurally generated fantasy world simulator 🌏
Menu_CivDetails.hpp
Go to the documentation of this file.
1 #pragma once
2 #ifndef WORLDSIM_MENU_CIVDETAILS_HPP
3 #define WORLDSIM_MENU_CIVDETAILS_HPP
4 
5 /* WorldSim: Menu_CivDetails.cpp
6  #include "Menu_CivDetails.hpp"
7 
8  This menu shows details of a specific civ.
9 */
10 
11 #include <Graphics/GUI/GUI_Table.hpp>
12 #include <Container/Table/Table.hpp>
13 
14 class Menu_CivDetails: public GUI_Interface
15 {
16  public:
17  GUI_Manager guiManager;
18 
19  /* Colours / theme. */
20  ColourRGB <unsigned char> cNormal;
21  ColourRGB <unsigned char> cSelected;
22  ColourRGB <unsigned char> cDropPanel;
23  ColourRGB <unsigned char> cHighlight;
24 
25  Wildcat::Font* font;
26 
27  GUI_Button buttonClose;
28 
29  /* Menu for investigating an individual civ */
30  GUI_Button buttonCivDetails;
31 
32  // TABLE FOR CIVS
33  Table2 tSettlements;
34  GUI_Table guiTableCivs;
35 
38 
39  //Menu_TribeDetails menuTribeDetails;
40 
42  {
43  lastRowClicked=-1;
44  selectedCiv=0;
45  }
46 
47  void setFont(Wildcat::Font* _font)
48  {
49  font = _font;
50  guiManager.setFont(_font);
51  //menuTribeDetails.setFont(_font);
52  }
53 
54 
55  // This is some bad overloading.
56  void init()
57  {
58  init(0);
59  }
60 
61  void init(Civ* _selectedCiv)
62  {
63  selectedCiv = _selectedCiv;
64 
65  lastRowClicked=-1;
66  //selectedCiv=0;
67  active = false;
68 
69  /* Initialise theme. */
70  cNormal.set(220,220,220);
71  cSelected.set(180,180,180);
72  cDropPanel.set(170,170,170);
73  cHighlight.set(255,160,160);
74 
75  buttonClose.text="X";
76  buttonClose.setColours(cNormal,cHighlight,0);
77  buttonClose.active=true;
78 
79  buttonCivDetails.text="Details";
80  buttonCivDetails.setColours(cNormal,cHighlight,0);
81  buttonCivDetails.active=true;
82 
83  guiTableCivs.clear();
84  guiTableCivs.table = &tSettlements;
85  guiTableCivs.alpha=0;
86  guiTableCivs.active=true;
87  guiTableCivs.addColumn("Name","name",180);
88  guiTableCivs.addColumn("Race","race",120);
89  guiTableCivs.addColumn("Population","population",120);
90  guiTableCivs.addColumn("Metal","metal",120);
91  //guiTableCivs.addColumn("Coordinates","coordinates",120);
92  //guiTableCivs.addColumn("Territory","territory",120);
93 
94  tSettlements.clear();
95  if ( selectedCiv != 0 )
96  {
97  for (int i=0;i<selectedCiv->vSettlement.size();++i)
98  {
99  tSettlements.addRow(selectedCiv->vSettlement(i));
100  }
101  }
102 
103  guiManager.add(&buttonClose);
104  guiManager.add(&buttonCivDetails);
105  guiManager.add(&guiTableCivs);
106 
107  //menuCivDetails.init();
108  //menuCivDetails.active=false;
109 
110  eventResize();
111  //menuCivDetails.eventResize();
112  }
113 
114  void render()
115  {
116  // if ( menuCivDetails.active )
117  // {
118  // menuCivDetails.render();
119  // }
120  //else if ( active )
121  if ( active )
122  {
123  Renderer::placeColour4a(150,150,150,200,panelX1,panelY1,panelX2,panelY2);
124  font8x8.drawText("CIV DETAILS MENU",panelX1,panelY2-20,panelX2,panelY2-5, true, true);
125  guiManager.render();
126  }
127  }
128 
129  bool keyboardEvent (Keyboard* _keyboard)
130  {
131  // if ( menuCivDetails.active )
132  // {
133  // return menuCivDetails.keyboardEvent(_keyboard);
134  // }
135  if ( active )
136  //else if ( active )
137  {
138  return guiManager.keyboardEvent(_keyboard);
139  }
140 
141 
142  return false;
143  }
144 
145  bool mouseEvent (Mouse* _mouse)
146  {
147  // if ( menuCivDetails.active )
148  // {
149  // menuCivDetails.mouseEvent(_mouse);
150  // }
151  //else if ( active )
152  if ( active )
153  {
154  /* If the guiManager did something with the mouse event. */
155  if(guiManager.mouseEvent(_mouse)==true)
156  {
157 
158  }
159 
160  if (buttonClose.clicked==true)
161  {
162  std::cout<<"CLOSE\n";
163  active=false;
164  buttonClose.unclick();
165  }
166 
167  if (buttonCivDetails.clicked==true)
168  {
169  if ( selectedCiv != 0 )
170  {
171  std::cout<<"Civ details\n";
172  //active=false;
173  //menuCivDetails.selectedTribe=selectedTribe;
174  //menuCivDetails.init();
175  //menuCivDetails.active=true;
176  //guiTableTribes.active=false;
177  }
178  else
179  {
180  std::cout<<"Select a tribe first.\n";
181  }
182 
183  buttonCivDetails.unclick();
184  }
185 
186 
187 
188  if ( guiTableCivs.lastClickedIndex != -1 )
189  {
190  //world->worldV
191  //TableInterface
192  //worldViewer.setCenterTile();
193  lastRowClicked=guiTableCivs.lastClickedIndex;
194  if (world.vCiv.isSafe(lastRowClicked))
195  {
196  selectedCiv=world.vCiv(lastRowClicked);
197  }
198  guiTableCivs.lastClickedIndex = -1;
199  }
200 
201  }
202 
203  return false;
204  }
205 
206  void eventResize()
207  {
208 
209  guiTableCivs.setPanel(panelX1,panelY1,panelX2,panelY2-30);
210  buttonClose.setPanel(panelX2-40, panelY2-40, panelX2-20, panelY2-20);
211  buttonCivDetails.setPanel(panelX2-100, panelY1+40, panelX2-20, panelY1+20);
212  //menuTribeDetails.setPanel(panelX1,panelY1,panelX2,panelY2);
213  //menuTribeDetails.eventResize();
214  }
215 
216 };
217 
218 
219 #endif
Civ * selectedCiv
Definition: Menu_CivDetails.hpp:37
Vector< Civ * > vCiv
Definition: World.hpp:136
ColourRGB< unsigned char > cNormal
Definition: Menu_CivDetails.hpp:20
int lastRowClicked
Definition: Menu_CivDetails.hpp:36
Definition: Civ.hpp:28
World world
Definition: Driver.cpp:45
ColourRGB< unsigned char > cDropPanel
Definition: Menu_CivDetails.hpp:22
Vector< Settlement * > vSettlement
Definition: Civ.hpp:54
Wildcat::Font * font
Definition: Menu_CivDetails.hpp:25
Wildcat::Font font8x8
Definition: Driver_GlobalObjects.hpp:55
void init()
Definition: Menu_CivDetails.hpp:56
GUI_Button buttonCivDetails
Definition: Menu_CivDetails.hpp:30
ColourRGB< unsigned char > cHighlight
Definition: Menu_CivDetails.hpp:23
bool mouseEvent(Mouse *_mouse)
Definition: Menu_CivDetails.hpp:145
ColourRGB< unsigned char > cSelected
Definition: Menu_CivDetails.hpp:21
GUI_Manager guiManager
Definition: Menu_CivDetails.hpp:17
GUI_Table guiTableCivs
Definition: Menu_CivDetails.hpp:34
void render()
Definition: Menu_CivDetails.hpp:114
Table2 tSettlements
Definition: Menu_CivDetails.hpp:33
void init(Civ *_selectedCiv)
Definition: Menu_CivDetails.hpp:61
Definition: Menu_CivDetails.hpp:14
bool keyboardEvent(Keyboard *_keyboard)
Definition: Menu_CivDetails.hpp:129
Menu_CivDetails()
Definition: Menu_CivDetails.hpp:41
void setFont(Wildcat::Font *_font)
Definition: Menu_CivDetails.hpp:47
GUI_Button buttonClose
Definition: Menu_CivDetails.hpp:27
void eventResize()
Definition: Menu_CivDetails.hpp:206