Skyscraper 2.0
stats.cpp
Go to the documentation of this file.
1/*
2 Skyscraper 2.0 Alpha - Statistics Dialog
3 Copyright (C)2003-2024 Ryan Thoryk
4 https://www.skyscrapersim.net
5 https://sourceforge.net/projects/skyscraper/
6 Contact - ryan@skyscrapersim.net
7
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21*/
22
23//(*InternalHeaders(Stats)
24#include <wx/intl.h>
25#include <wx/string.h>
26//*)
27#include "globals.h"
28#include "sbs.h"
29#include "vm.h"
30#include "hal.h"
31#include "debugpanel.h"
32#include "stats.h"
33
34using namespace SBS;
35
36namespace Skyscraper {
37
38//(*IdInit(Stats)
39const wxWindowID Stats::ID_STATICTEXT18 = wxNewId();
40const wxWindowID Stats::ID_tName = wxNewId();
41const wxWindowID Stats::ID_STATICTEXT17 = wxNewId();
42const wxWindowID Stats::ID_tDesigner = wxNewId();
43const wxWindowID Stats::ID_STATICTEXT16 = wxNewId();
44const wxWindowID Stats::ID_tLocation = wxNewId();
45const wxWindowID Stats::ID_STATICTEXT15 = wxNewId();
46const wxWindowID Stats::ID_tDescription = wxNewId();
47const wxWindowID Stats::ID_STATICTEXT14 = wxNewId();
48const wxWindowID Stats::ID_tVersion = wxNewId();
49const wxWindowID Stats::ID_STATICTEXT5 = wxNewId();
50const wxWindowID Stats::ID_tFloors = wxNewId();
51const wxWindowID Stats::ID_STATICTEXT6 = wxNewId();
52const wxWindowID Stats::ID_tBasements = wxNewId();
53const wxWindowID Stats::ID_STATICTEXT7 = wxNewId();
54const wxWindowID Stats::ID_tElevators = wxNewId();
55const wxWindowID Stats::ID_STATICTEXT8 = wxNewId();
56const wxWindowID Stats::ID_tShafts = wxNewId();
57const wxWindowID Stats::ID_STATICTEXT9 = wxNewId();
58const wxWindowID Stats::ID_tStairs = wxNewId();
59const wxWindowID Stats::ID_STATICTEXT1 = wxNewId();
60const wxWindowID Stats::ID_tMeshes = wxNewId();
61const wxWindowID Stats::ID_STATICTEXT3 = wxNewId();
62const wxWindowID Stats::ID_tTextures = wxNewId();
63const wxWindowID Stats::ID_STATICTEXT4 = wxNewId();
64const wxWindowID Stats::ID_tActions = wxNewId();
65const wxWindowID Stats::ID_STATICTEXT21 = wxNewId();
66const wxWindowID Stats::ID_tSounds = wxNewId();
67const wxWindowID Stats::ID_STATICTEXT22 = wxNewId();
68const wxWindowID Stats::ID_tObjects = wxNewId();
69const wxWindowID Stats::ID_STATICTEXT24 = wxNewId();
70const wxWindowID Stats::ID_tWalls = wxNewId();
71const wxWindowID Stats::ID_STATICTEXT25 = wxNewId();
72const wxWindowID Stats::ID_tPolygons = wxNewId();
73const wxWindowID Stats::ID_STATICTEXT10 = wxNewId();
74const wxWindowID Stats::ID_tInStairwell = wxNewId();
75const wxWindowID Stats::ID_STATICTEXT11 = wxNewId();
76const wxWindowID Stats::ID_tInElevator = wxNewId();
77const wxWindowID Stats::ID_STATICTEXT12 = wxNewId();
78const wxWindowID Stats::ID_tInShaft = wxNewId();
79const wxWindowID Stats::ID_STATICTEXT13 = wxNewId();
80const wxWindowID Stats::ID_tRunningTime = wxNewId();
81const wxWindowID Stats::ID_STATICTEXT20 = wxNewId();
82const wxWindowID Stats::ID_tFrontendVersion = wxNewId();
83const wxWindowID Stats::ID_STATICTEXT23 = wxNewId();
84const wxWindowID Stats::ID_tSBSVersion = wxNewId();
85const wxWindowID Stats::ID_STATICTEXT26 = wxNewId();
86const wxWindowID Stats::ID_tPlatform = wxNewId();
87const wxWindowID Stats::ID_STATICTEXT2 = wxNewId();
88const wxWindowID Stats::ID_tRenderer = wxNewId();
89const wxWindowID Stats::ID_bOK = wxNewId();
90const wxWindowID Stats::ID_chkGlobal = wxNewId();
91//*)
92
93BEGIN_EVENT_TABLE(Stats,wxDialog)
94 //(*EventTable(Stats)
95 //*)
96END_EVENT_TABLE()
97
98Stats::Stats(DebugPanel* parent,wxWindowID id)
99{
100 //(*Initialize(Stats)
101 wxBoxSizer* BoxSizer1;
102 wxFlexGridSizer* FlexGridSizer1;
103 wxFlexGridSizer* FlexGridSizer2;
104 wxFlexGridSizer* FlexGridSizer3;
105 wxFlexGridSizer* FlexGridSizer4;
106 wxStaticBoxSizer* StaticBoxSizer1;
107 wxStaticBoxSizer* StaticBoxSizer2;
108
109 Create(parent, wxID_ANY, _("Simulator Statistics"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("wxID_ANY"));
110 FlexGridSizer1 = new wxFlexGridSizer(0, 1, 0, 0);
111 FlexGridSizer4 = new wxFlexGridSizer(0, 3, 0, 0);
112 StaticBoxSizer2 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Building Information"));
113 FlexGridSizer3 = new wxFlexGridSizer(0, 2, 0, 0);
114 StaticText18 = new wxStaticText(this, ID_STATICTEXT18, _("Name:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT18"));
115 FlexGridSizer3->Add(StaticText18, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
116 tName = new wxTextCtrl(this, ID_tName, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_CENTRE|wxTE_WORDWRAP, wxDefaultValidator, _T("ID_tName"));
117 tName->SetMinSize(wxSize(175,50));
118 FlexGridSizer3->Add(tName, 1, wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
119 StaticText17 = new wxStaticText(this, ID_STATICTEXT17, _("Designer:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT17"));
120 FlexGridSizer3->Add(StaticText17, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
121 tDesigner = new wxTextCtrl(this, ID_tDesigner, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_CENTRE|wxTE_WORDWRAP, wxDefaultValidator, _T("ID_tDesigner"));
122 tDesigner->SetMinSize(wxSize(-1,50));
123 FlexGridSizer3->Add(tDesigner, 1, wxLEFT|wxEXPAND, 5);
124 StaticText16 = new wxStaticText(this, ID_STATICTEXT16, _("Location:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT16"));
125 FlexGridSizer3->Add(StaticText16, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
126 tLocation = new wxTextCtrl(this, ID_tLocation, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_CENTRE|wxTE_WORDWRAP, wxDefaultValidator, _T("ID_tLocation"));
127 tLocation->SetMinSize(wxSize(-1,50));
128 FlexGridSizer3->Add(tLocation, 1, wxLEFT|wxEXPAND, 5);
129 StaticText15 = new wxStaticText(this, ID_STATICTEXT15, _("Description:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT15"));
130 FlexGridSizer3->Add(StaticText15, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
131 tDescription = new wxTextCtrl(this, ID_tDescription, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_CENTRE|wxTE_WORDWRAP, wxDefaultValidator, _T("ID_tDescription"));
132 tDescription->SetMinSize(wxSize(-1,50));
133 FlexGridSizer3->Add(tDescription, 1, wxLEFT|wxEXPAND, 5);
134 StaticText14 = new wxStaticText(this, ID_STATICTEXT14, _("Version:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT14"));
135 FlexGridSizer3->Add(StaticText14, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
136 tVersion = new wxTextCtrl(this, ID_tVersion, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tVersion"));
137 FlexGridSizer3->Add(tVersion, 1, wxLEFT|wxEXPAND, 5);
138 StaticText5 = new wxStaticText(this, ID_STATICTEXT5, _("Floors:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT5"));
139 FlexGridSizer3->Add(StaticText5, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
140 tFloors = new wxTextCtrl(this, ID_tFloors, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tFloors"));
141 FlexGridSizer3->Add(tFloors, 1, wxLEFT|wxEXPAND, 5);
142 StaticText6 = new wxStaticText(this, ID_STATICTEXT6, _("Basements:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT6"));
143 FlexGridSizer3->Add(StaticText6, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
144 tBasements = new wxTextCtrl(this, ID_tBasements, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tBasements"));
145 FlexGridSizer3->Add(tBasements, 1, wxLEFT|wxEXPAND, 5);
146 StaticText7 = new wxStaticText(this, ID_STATICTEXT7, _("Elevators:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT7"));
147 FlexGridSizer3->Add(StaticText7, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
148 tElevators = new wxTextCtrl(this, ID_tElevators, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tElevators"));
149 FlexGridSizer3->Add(tElevators, 1, wxLEFT|wxEXPAND, 5);
150 StaticText8 = new wxStaticText(this, ID_STATICTEXT8, _("Shafts:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT8"));
151 FlexGridSizer3->Add(StaticText8, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
152 tShafts = new wxTextCtrl(this, ID_tShafts, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tShafts"));
153 FlexGridSizer3->Add(tShafts, 1, wxLEFT|wxEXPAND, 5);
154 StaticText9 = new wxStaticText(this, ID_STATICTEXT9, _("Stairs:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT9"));
155 FlexGridSizer3->Add(StaticText9, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
156 tStairs = new wxTextCtrl(this, ID_tStairs, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tStairs"));
157 FlexGridSizer3->Add(tStairs, 1, wxLEFT|wxEXPAND, 5);
158 StaticBoxSizer2->Add(FlexGridSizer3, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
159 FlexGridSizer4->Add(StaticBoxSizer2, 1, wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
160 StaticBoxSizer1 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("General Information"));
161 FlexGridSizer2 = new wxFlexGridSizer(0, 2, 0, 0);
162 StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("Meshes:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
163 FlexGridSizer2->Add(StaticText1, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
164 tMeshes = new wxTextCtrl(this, ID_tMeshes, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tMeshes"));
165 tMeshes->SetMinSize(wxSize(150,-1));
166 FlexGridSizer2->Add(tMeshes, 1, wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
167 StaticText3 = new wxStaticText(this, ID_STATICTEXT3, _("Textures:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3"));
168 FlexGridSizer2->Add(StaticText3, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
169 tTextures = new wxTextCtrl(this, ID_tTextures, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tTextures"));
170 FlexGridSizer2->Add(tTextures, 1, wxLEFT|wxEXPAND, 5);
171 StaticText4 = new wxStaticText(this, ID_STATICTEXT4, _("Actions:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
172 FlexGridSizer2->Add(StaticText4, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
173 tActions = new wxTextCtrl(this, ID_tActions, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tActions"));
174 FlexGridSizer2->Add(tActions, 1, wxLEFT|wxEXPAND, 5);
175 StaticText21 = new wxStaticText(this, ID_STATICTEXT21, _("Sounds:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT21"));
176 FlexGridSizer2->Add(StaticText21, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
177 tSounds = new wxTextCtrl(this, ID_tSounds, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tSounds"));
178 FlexGridSizer2->Add(tSounds, 1, wxLEFT|wxEXPAND, 5);
179 StaticText22 = new wxStaticText(this, ID_STATICTEXT22, _("Objects:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT22"));
180 FlexGridSizer2->Add(StaticText22, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
181 tObjects = new wxTextCtrl(this, ID_tObjects, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tObjects"));
182 FlexGridSizer2->Add(tObjects, 1, wxLEFT|wxEXPAND, 5);
183 StaticText24 = new wxStaticText(this, ID_STATICTEXT24, _("Walls:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT24"));
184 FlexGridSizer2->Add(StaticText24, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
185 tWalls = new wxTextCtrl(this, ID_tWalls, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tWalls"));
186 FlexGridSizer2->Add(tWalls, 1, wxLEFT|wxEXPAND, 5);
187 StaticText25 = new wxStaticText(this, ID_STATICTEXT25, _("Polygons:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT25"));
188 FlexGridSizer2->Add(StaticText25, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
189 tPolygons = new wxTextCtrl(this, ID_tPolygons, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tPolygons"));
190 FlexGridSizer2->Add(tPolygons, 1, wxLEFT|wxEXPAND, 5);
191 StaticText10 = new wxStaticText(this, ID_STATICTEXT10, _("InStairwell:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT10"));
192 FlexGridSizer2->Add(StaticText10, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
193 tInStairwell = new wxTextCtrl(this, ID_tInStairwell, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tInStairwell"));
194 FlexGridSizer2->Add(tInStairwell, 1, wxLEFT|wxEXPAND, 5);
195 StaticText11 = new wxStaticText(this, ID_STATICTEXT11, _("InElevator:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT11"));
196 FlexGridSizer2->Add(StaticText11, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
197 tInElevator = new wxTextCtrl(this, ID_tInElevator, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tInElevator"));
198 FlexGridSizer2->Add(tInElevator, 1, wxLEFT|wxEXPAND, 5);
199 StaticText12 = new wxStaticText(this, ID_STATICTEXT12, _("InShaft:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT12"));
200 FlexGridSizer2->Add(StaticText12, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
201 tInShaft = new wxTextCtrl(this, ID_tInShaft, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tInShaft"));
202 FlexGridSizer2->Add(tInShaft, 1, wxLEFT|wxEXPAND, 5);
203 StaticText13 = new wxStaticText(this, ID_STATICTEXT13, _("Running Time:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT13"));
204 FlexGridSizer2->Add(StaticText13, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
205 tRunningTime = new wxTextCtrl(this, ID_tRunningTime, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tRunningTime"));
206 FlexGridSizer2->Add(tRunningTime, 1, wxLEFT|wxEXPAND, 5);
207 StaticText20 = new wxStaticText(this, ID_STATICTEXT20, _("Frontend Ver:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT20"));
208 FlexGridSizer2->Add(StaticText20, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
209 tFrontendVersion = new wxTextCtrl(this, ID_tFrontendVersion, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tFrontendVersion"));
210 FlexGridSizer2->Add(tFrontendVersion, 1, wxLEFT|wxEXPAND, 5);
211 StaticText23 = new wxStaticText(this, ID_STATICTEXT23, _("SBS Version:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT23"));
212 FlexGridSizer2->Add(StaticText23, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
213 tSBSVersion = new wxTextCtrl(this, ID_tSBSVersion, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tSBSVersion"));
214 FlexGridSizer2->Add(tSBSVersion, 1, wxLEFT|wxEXPAND, 5);
215 StaticText26 = new wxStaticText(this, ID_STATICTEXT26, _("Platform:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT26"));
216 FlexGridSizer2->Add(StaticText26, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
217 tPlatform = new wxTextCtrl(this, ID_tPlatform, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tPlatform"));
218 FlexGridSizer2->Add(tPlatform, 1, wxLEFT|wxEXPAND, 5);
219 StaticText2 = new wxStaticText(this, ID_STATICTEXT2, _("Renderer:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2"));
220 FlexGridSizer2->Add(StaticText2, 1, wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
221 tRenderer = new wxTextCtrl(this, ID_tRenderer, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_CENTRE, wxDefaultValidator, _T("ID_tRenderer"));
222 FlexGridSizer2->Add(tRenderer, 1, wxLEFT|wxEXPAND, 5);
223 StaticBoxSizer1->Add(FlexGridSizer2, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
224 FlexGridSizer4->Add(StaticBoxSizer1, 1, wxALL|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
225 FlexGridSizer1->Add(FlexGridSizer4, 1, wxALL|wxALIGN_LEFT|wxALIGN_TOP, 5);
226 BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
227 bOK = new wxButton(this, ID_bOK, _("OK"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bOK"));
228 BoxSizer1->Add(bOK, 1, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
229 chkGlobal = new wxCheckBox(this, ID_chkGlobal, _("Global Stats"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkGlobal"));
230 chkGlobal->SetValue(false);
231 BoxSizer1->Add(chkGlobal, 1, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
232 FlexGridSizer1->Add(BoxSizer1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
233 SetSizer(FlexGridSizer1);
234 FlexGridSizer1->SetSizeHints(this);
235 Center();
236
237 Connect(ID_bOK, wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&Stats::On_bOK_Click);
238 //*)
239 Simcore = 0;
240 panel = parent;
241 OnInit();
242}
243
245{
246 //(*Destroy(Stats)
247 //*)
248}
249
250
251void Stats::On_bOK_Click(wxCommandEvent& event)
252{
253 this->Hide();
254}
255
257{
259
261 tSBSVersion->SetValue(Simcore->version);
262 tPlatform->SetValue(panel->GetRoot()->Platform);
263 tRenderer->SetValue(panel->GetRoot()->GetHAL()->Renderer);
264
265 tName->SetValue(Simcore->BuildingName);
269 tVersion->SetValue(Simcore->BuildingVersion);
270}
271
273{
274 //if active engine has changed, refresh values
275 if (Simcore != panel->GetSystem())
276 OnInit();
277
278 if (!Simcore)
279 return;
280
281 if (chkGlobal->GetValue() == false)
282 {
283 //per-engine stats
284 tMeshes->SetValue(ToString(Simcore->GetMeshCount()));
287 tSounds->SetValue(ToString(Simcore->GetSoundCount()));
293 tWalls->SetValue(ToString(Simcore->GetWallCount()));
295 tFloors->SetValue(ToString(Simcore->Floors));
298 tShafts->SetValue(ToString(Simcore->GetShaftCount()));
300 }
301 else
302 {
303 //global stats
304 tRunningTime->SetValue(ToString(panel->GetRoot()->Uptime() / 1000));
305
306 int meshes, textures, actions, sounds, objects, walls, polygons;
307 int total = panel->GetRoot()->GetGlobalStats(meshes, textures, actions, sounds, objects, walls, polygons);
308 tMeshes->SetValue(ToString(meshes));
309 tTextures->SetValue(ToString(textures));
310 tActions->SetValue(ToString(actions));
311 tSounds->SetValue(ToString(sounds));
312 tObjects->SetValue(ToString(objects));
313 tWalls->SetValue(ToString(walls));
314 tPolygons->SetValue(ToString(polygons));
315 }
316}
317
318}
319
bool InShaft
Definition sbs.h:164
bool InStairwell
Definition sbs.h:162
std::string BuildingName
Definition sbs.h:145
std::string BuildingLocation
Definition sbs.h:148
int GetElevatorCount()
Definition sbs.cpp:1733
int GetWallCount()
Definition sbs.cpp:3095
int Basements
Definition sbs.h:159
int GetTextureCount()
Definition sbs.cpp:4757
std::string BuildingDesigner
Definition sbs.h:147
int GetPolygonCount()
Definition sbs.cpp:3101
int GetObjectCount()
Definition sbs.cpp:2476
int GetSoundCount()
Definition sbs.cpp:2338
int GetStairwellCount()
Definition sbs.cpp:1757
std::string BuildingVersion
Definition sbs.h:150
bool InElevator
Definition sbs.h:163
std::string BuildingDescription
Definition sbs.h:149
int GetMeshCount()
Definition sbs.cpp:2289
int GetActionCount()
Definition sbs.cpp:3484
int Floors
Definition sbs.h:158
Real running_time
Definition sbs.h:168
int GetShaftCount()
Definition sbs.cpp:1751
std::string version
Definition sbs.h:141
SBS::SBS * GetSystem()
Definition debugpanel.h:131
std::string Renderer
Definition hal.h:88
static const wxWindowID ID_tMeshes
Definition stats.h:124
wxTextCtrl * tFrontendVersion
Definition stats.h:78
static const wxWindowID ID_STATICTEXT4
Definition stats.h:127
static const wxWindowID ID_STATICTEXT13
Definition stats.h:143
static const wxWindowID ID_STATICTEXT17
Definition stats.h:105
static const wxWindowID ID_tLocation
Definition stats.h:108
static const wxWindowID ID_tVersion
Definition stats.h:112
static const wxWindowID ID_STATICTEXT2
Definition stats.h:151
static const wxWindowID ID_STATICTEXT9
Definition stats.h:121
static const wxWindowID ID_bOK
Definition stats.h:153
static const wxWindowID ID_STATICTEXT11
Definition stats.h:139
static const wxWindowID ID_STATICTEXT16
Definition stats.h:107
SBS::SBS * Simcore
Definition stats.h:164
wxTextCtrl * tInShaft
Definition stats.h:80
static const wxWindowID ID_tShafts
Definition stats.h:120
wxTextCtrl * tMeshes
Definition stats.h:83
virtual ~Stats()
Definition stats.cpp:244
static const wxWindowID ID_tInElevator
Definition stats.h:140
static const wxWindowID ID_STATICTEXT26
Definition stats.h:149
wxTextCtrl * tBasements
Definition stats.h:73
DebugPanel * panel
Definition stats.h:165
static const wxWindowID ID_tTextures
Definition stats.h:126
static const wxWindowID ID_tActions
Definition stats.h:128
wxTextCtrl * tRunningTime
Definition stats.h:89
static const wxWindowID ID_tObjects
Definition stats.h:132
static const wxWindowID ID_STATICTEXT7
Definition stats.h:117
static const wxWindowID ID_tInShaft
Definition stats.h:142
wxTextCtrl * tInElevator
Definition stats.h:79
static const wxWindowID ID_tFrontendVersion
Definition stats.h:146
static const wxWindowID ID_STATICTEXT12
Definition stats.h:141
wxTextCtrl * tInStairwell
Definition stats.h:81
wxTextCtrl * tFloors
Definition stats.h:77
static const wxWindowID ID_tPlatform
Definition stats.h:150
static const wxWindowID ID_tElevators
Definition stats.h:118
wxTextCtrl * tSBSVersion
Definition stats.h:90
wxTextCtrl * tSounds
Definition stats.h:92
static const wxWindowID ID_tPolygons
Definition stats.h:136
static const wxWindowID ID_tDesigner
Definition stats.h:106
wxTextCtrl * tWalls
Definition stats.h:96
static const wxWindowID ID_tBasements
Definition stats.h:116
wxTextCtrl * tName
Definition stats.h:84
static const wxWindowID ID_STATICTEXT22
Definition stats.h:131
static const wxWindowID ID_STATICTEXT14
Definition stats.h:111
wxTextCtrl * tLocation
Definition stats.h:82
static const wxWindowID ID_tInStairwell
Definition stats.h:138
wxTextCtrl * tShafts
Definition stats.h:91
static const wxWindowID ID_STATICTEXT20
Definition stats.h:145
static const wxWindowID ID_chkGlobal
Definition stats.h:154
static const wxWindowID ID_tSounds
Definition stats.h:130
wxTextCtrl * tObjects
Definition stats.h:85
void On_bOK_Click(wxCommandEvent &event)
Definition stats.cpp:251
wxTextCtrl * tPolygons
Definition stats.h:87
static const wxWindowID ID_STATICTEXT18
Definition stats.h:103
static const wxWindowID ID_tDescription
Definition stats.h:110
static const wxWindowID ID_tFloors
Definition stats.h:114
static const wxWindowID ID_STATICTEXT8
Definition stats.h:119
wxTextCtrl * tDesigner
Definition stats.h:75
static const wxWindowID ID_tRunningTime
Definition stats.h:144
wxTextCtrl * tElevators
Definition stats.h:76
static const wxWindowID ID_STATICTEXT15
Definition stats.h:109
wxTextCtrl * tDescription
Definition stats.h:74
static const wxWindowID ID_STATICTEXT24
Definition stats.h:133
static const wxWindowID ID_STATICTEXT1
Definition stats.h:123
static const wxWindowID ID_STATICTEXT25
Definition stats.h:135
static const wxWindowID ID_STATICTEXT3
Definition stats.h:125
static const wxWindowID ID_STATICTEXT21
Definition stats.h:129
static const wxWindowID ID_tRenderer
Definition stats.h:152
wxTextCtrl * tTextures
Definition stats.h:94
static const wxWindowID ID_tStairs
Definition stats.h:122
static const wxWindowID ID_tWalls
Definition stats.h:134
static const wxWindowID ID_STATICTEXT6
Definition stats.h:115
wxTextCtrl * tActions
Definition stats.h:72
static const wxWindowID ID_STATICTEXT23
Definition stats.h:147
wxTextCtrl * tStairs
Definition stats.h:93
wxCheckBox * chkGlobal
Definition stats.h:46
static const wxWindowID ID_tSBSVersion
Definition stats.h:148
static const wxWindowID ID_STATICTEXT5
Definition stats.h:113
static const wxWindowID ID_STATICTEXT10
Definition stats.h:137
wxTextCtrl * tRenderer
Definition stats.h:88
wxTextCtrl * tVersion
Definition stats.h:95
static const wxWindowID ID_tName
Definition stats.h:104
wxTextCtrl * tPlatform
Definition stats.h:86
unsigned long Uptime()
Definition vm.cpp:983
HAL * GetHAL()
Definition vm.cpp:134
std::string Platform
Definition vm.h:133
int GetGlobalStats(int &meshes, int &textures, int &actions, int &sounds, int &objects, int &walls, int &polygons)
Definition vm.cpp:1024
std::string version_full
Definition vm.h:130
std::string ToString(int number)
Definition globals.cpp:279
std::string BoolToString(bool item)
Definition globals.cpp:101
wxString TruncateNumber(float value, int decimals)