Symphony Of Empires
province_view.hpp
Go to the documentation of this file.
1 // Symphony of Empires
2 // Copyright (C) 2021, Symphony of Empires contributors
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <https://www.gnu.org/licenses/>.
16 //
17 // ----------------------------------------------------------------------------
18 // Name:
19 // client/interface/province_view.hpp
20 //
21 // Abstract:
22 // Does some important stuff.
23 // ----------------------------------------------------------------------------
24 
25 #pragma once
26 
27 #include "eng3d/ui/group.hpp"
28 #include "eng3d/ui/window.hpp"
29 #include "eng3d/ui/slider.hpp"
30 #include "eng3d/ui/input.hpp"
31 #include "eng3d/ui/image.hpp"
32 
33 #include "nation.hpp"
34 #include "world.hpp"
35 #include "client/game_state.hpp"
36 
37 namespace UI {
38  class PieChart;
39  class Chart;
40 }
41 
42 namespace Interface {
43  // View information related to the population and diversity of languages and religions
44  // on the specified province
46  GameState& gs;
47  const Province& province;
48  UI::PieChart* languages_pie;
49  UI::PieChart* religions_pie;
50  UI::PieChart* pop_types_pie;
51  UI::Widget& create_pop_table();
52  UI::Widget& create_stock_table();
53  public:
54  ProvincePopulationTab(GameState& gs, int x, int y, Province& province, UI::Widget* _parent);
55  void update_piecharts();
56  };
57 
58  // View information related to the economic activity of the province
60  ProvinceEconomyTab(GameState& gs, int x, int y, Province& province, UI::Widget* _parent);
63  };
64 
69  };
70 
77  };
78 
84  };
85 
86  class ProvinceView : public UI::Window {
87  GameState& gs;
88  Province& province;
89  ProvincePopulationTab* pop_tab;
90  ProvinceEconomyTab* econ_tab;
91  ProvinceBuildingTab* build_tab;
92  ProvinceEditLanguageTab* edit_language_tab;
93  ProvinceEditTerrainTab* edit_terrain_tab;
94  public:
95  ProvinceView(GameState& gs, Province& province);
96  ~ProvinceView() override;
97  friend struct ProvinceBuildingTab;
98  };
99 
100  // Brief
101  class ProvinceBrief : public UI::Window {
102  UI::PieChart* languages_pie;
103  UI::Chart* economy_chart;
104  public:
105  ProvinceBrief(GameState& gs, const Province& province);
106  };
107 }
ProvinceBrief(GameState &gs, const Province &province)
ProvincePopulationTab(GameState &gs, int x, int y, Province &province, UI::Widget *_parent)
ProvinceView(GameState &gs, Province &province)
A single province, which is used to simulate economy in a "bulk-tiles" way instead of doing economica...
Definition: province.hpp:48
A graph chart.
Definition: chart.hpp:40
Grouping to keep widgets together without triggering events.
Definition: group.hpp:44
Piechart widget.
Definition: piechart.hpp:43
The master widget all the other widgets inherit from, do not use directly instead use one of the many...
Definition: widget.hpp:176
Window widget, this widget is similar to a Group widget, the key difference is that this one can be m...
Definition: window.hpp:39
ProvinceBuildingTab(GameState &gs, int x, int y, Province &province, UI::Widget *_parent)
ProvinceEconomyTab(GameState &gs, int x, int y, Province &province, UI::Widget *_parent)
ProvinceEditLanguageTab(GameState &gs, int x, int y, Province &province, UI::Widget *_parent)
ProvinceEditTerrainTab(GameState &gs, int x, int y, Province &province, UI::Widget *_parent)