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