WorldSim  inDev
2D tile-based sandbox RPG with procedurally generated fantasy world simulator 🌏
Menu_FloraDetails.hpp
Go to the documentation of this file.
1 #pragma once
2 #ifndef WORLDSIM_MENU_FLORA_DETAILS_CPP
3 #define WORLDSIM_MENU_FLORA_DETAILS_CPP
4 
5 /* WorldSim: Menu_FloraDetails.hpp
6  #include "Menu_FloraDetails.hpp"
7 
8  Submenu with specific details for this Flora. Should contain:
9  * Name
10  * Description (It is X with Y Z).
11  * Location found (It can be found in the X biome)
12  * Rarity
13  * Harvestable ingredient (cooking, alchemy, crafting)
14  * Ingredient effects (Max 4?)
15 
16 */
17 
18 #include <Graphics/GUI/GUI_Table.hpp>
19 #include <Container/Table/Table.hpp>
20 
21 class Menu_FloraDetails: public GUI_Interface
22 {
23  public:
24  GUI_Manager guiManager;
25 
26  /* Colours / theme. */
27  ColourRGB <unsigned char> cNormal;
28  ColourRGB <unsigned char> cSelected;
29  ColourRGB <unsigned char> cDropPanel;
30  ColourRGB <unsigned char> cHighlight;
31 
32  Wildcat::Font* font;
33 
34  GUI_Button buttonClose;
35 
37 
39  {
40  selectedFlora=0;
41  active=false;
42  }
43 
44  void setFont(Wildcat::Font* _font)
45  {
46  font = _font;
47  guiManager.setFont(_font);
48  }
49 
50  // This is some bad overloading.
51  void init()
52  {
53  init(0);
54  }
55 
56  void init(Flora* _flora)
57  {
58  if ( _flora != 0 || selectedFlora== 0)
59  {
60  selectedFlora=_flora;
61  }
62 
63  /* Initialise theme. */
64  cNormal.set(220,220,220);
65  cSelected.set(180,180,180);
66  cDropPanel.set(170,170,170);
67  cHighlight.set(255,160,160);
68 
69  buttonClose.text="X";
70  buttonClose.setColours(cNormal,cHighlight,0);
71  buttonClose.active=true;
72 
73  guiManager.add(&buttonClose);
74  guiManager.setFont(font);
75  eventResize();
76  }
77 
78  void render()
79  {
80  if (selectedFlora==0)
81  { return; }
82 
83  if ( active )
84  {
85 
86  Renderer::placeColour4a(150,150,150,220,panelX1,panelY1,panelX2,panelY2);
87  font8x8.drawText("Flora details",panelX1,panelY2-20,panelX2,panelY2-5, true, true);
88 
89  int yOffset=35;
90  int vSpacing=12;
91 
92  std::string mainText="This is the "+selectedFlora->getName()+".\n";
93 
94  if (selectedFlora->biome)
95  { // all Flora should have a parent Biome
96  mainText += "It comes from the "+selectedFlora->biome->name+".\n";
97  }
98  else
99  {
100  mainText+= "Biome unknown.\n";
101  }
102 
103  mainText+="\n\nIt can be harvested for its "+selectedFlora->ingredient->getColour()+" "
104  +selectedFlora->ingredient->name+" which causes "+selectedFlora->ingredient->effect->name+"\n";
105 
106  mainText += "It is "+selectedFlora->getColour()+"\n";
107 
108  font8x8.drawText(mainText,panelX1,panelY1,panelX2,panelY2-25, false, false, false, 0, 0, 0, 255, 2);
109  guiManager.render();
110  }
111  }
112 
113  bool keyboardEvent (Keyboard* _keyboard)
114  {
115  if ( active )
116  {
117  return guiManager.keyboardEvent(_keyboard);
118  }
119  return false;
120  }
121 
122  bool mouseEvent (Mouse* _mouse)
123  {
124  if ( active )
125  {
126  /* If the guiManager did something with the mouse event. */
127  if(guiManager.mouseEvent(_mouse)==true)
128  {
129 
130  }
131 
132  if (buttonClose.clicked==true)
133  {
134  active=false;
135  buttonClose.unclick();
136  }
137  }
138  return false;
139  }
140 
141  void eventResize()
142  {
143  buttonClose.setPanel(panelX2-40, panelY2-40, panelX2-20, panelY2-20);
144  }
145 
146 };
147 
148 
149 #endif
Wildcat::Font * font
Definition: Menu_FloraDetails.hpp:32
void init()
Definition: Menu_FloraDetails.hpp:51
Definition: Menu_FloraDetails.hpp:21
Wildcat::Font font8x8
Definition: Driver_GlobalObjects.hpp:55
void render()
Definition: Menu_FloraDetails.hpp:78
World_Biome * biome
Definition: Static_Flora.hpp:215
bool mouseEvent(Mouse *_mouse)
Definition: Menu_FloraDetails.hpp:122
ColourRGB< unsigned char > cSelected
Definition: Menu_FloraDetails.hpp:28
Ingredient * ingredient
Definition: Static_Flora.hpp:214
Definition: Static_Flora.hpp:201
void eventResize()
Definition: Menu_FloraDetails.hpp:141
ColourRGB< unsigned char > cNormal
Definition: Menu_FloraDetails.hpp:27
std::string name
Definition: Static_Flora.hpp:131
bool keyboardEvent(Keyboard *_keyboard)
Definition: Menu_FloraDetails.hpp:113
std::string getColour()
Definition: Ingredient.hpp:33
std::string name
Definition: World_Biome.hpp:61
GUI_Manager guiManager
Definition: Menu_FloraDetails.hpp:24
std::string getColour()
Definition: Static_Flora.cpp:55
GUI_Button buttonClose
Definition: Menu_FloraDetails.hpp:34
Effect * effect
Definition: Ingredient.hpp:24
std::string getName() override
Definition: Static_Flora.cpp:60
Flora * selectedFlora
Definition: Menu_FloraDetails.hpp:36
void setFont(Wildcat::Font *_font)
Definition: Menu_FloraDetails.hpp:44
ColourRGB< unsigned char > cDropPanel
Definition: Menu_FloraDetails.hpp:29
ColourRGB< unsigned char > cHighlight
Definition: Menu_FloraDetails.hpp:30
Menu_FloraDetails()
Definition: Menu_FloraDetails.hpp:38
std::string name
Definition: Ingredient.hpp:23
void init(Flora *_flora)
Definition: Menu_FloraDetails.hpp:56