Rigs of Rods 2023.09
Soft-body Physics Simulation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
GUIManager.cpp
Go to the documentation of this file.
1/*
2 This source file is part of Rigs of Rods
3 Copyright 2005-2012 Pierre-Michel Ricordel
4 Copyright 2007-2012 Thomas Fischer
5 Copyright 2013-2020 Petr Ohlidal
6
7 For more information, see http://www.rigsofrods.org/
8
9 Rigs of Rods is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License version 3, as
11 published by the Free Software Foundation.
12
13 Rigs of Rods 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 Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
20*/
21
24
25#include "GUIManager.h"
26
27#include "Actor.h"
28#include "AppContext.h"
29#include "ActorManager.h"
30#include "CameraManager.h"
31#include "ContentManager.h"
32#include "GameContext.h"
33#include "GfxActor.h"
34#include "GfxScene.h"
35#include "GUIUtils.h"
36#include "InputEngine.h"
37#include "Language.h"
38#include "OgreImGui.h"
39#include "OverlayWrapper.h"
40#include "PlatformUtils.h"
41#include "RTTLayer.h"
42#include "Terrain.h"
43
44#include <OgreOverlayElement.h>
45#include <OgreOverlayContainer.h>
46#include <OgreOverlayManager.h>
47
48#define RESOURCE_FILENAME "MyGUI_Core.xml"
49
50using namespace RoR;
51
54{
55 // Cvar name | NOVICE, REGULAR, EXPERT, MINIMALLIST
56 { "gfx_surveymap_icons", {"true", "true", "true", "false"} },
57 { "gfx_declutter_map", {"false", "true", "false", "true"} },
58 { "ui_show_live_repair_controls", {"true", "false", "false", "false"} },
59
60 // List closure
61 { nullptr, {} }
62};
63
65{
66 // Logfile disabled by default - easily overbloats by errors, see https://github.com/RigsOfRods/rigs-of-rods/issues/3345
67 std::string mygui_logpath = "";
68 if (App::diag_use_mygui_logfile->getBool())
69 {
70 mygui_logpath = PathCombine(App::sys_logs_dir->getStr(), "MyGUI.log");
71 }
72 auto mygui_platform = new MyGUI::OgrePlatform();
73 mygui_platform->initialise(
74 App::GetAppContext()->GetRenderWindow(),
75 App::GetGfxScene()->GetSceneManager(),
76 Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME,
77 mygui_logpath);
78 auto mygui = new MyGUI::Gui();
79
80 // empty init
81 mygui->initialise("");
82
83 // add layer factory
84 MyGUI::FactoryManager::getInstance().registerFactory<MyGUI::RTTLayer>("Layer");
85
86 // then load the actual config
87 MyGUI::ResourceManager::getInstance().load(RESOURCE_FILENAME);
88
89 MyGUI::ResourceManager::getInstance().load("MyGUI_FontsEnglish.xml");
90
91 m_mygui_platform = mygui_platform;
92 m_mygui = mygui;
93 MyGUI::PointerManager::getInstance().setVisible(false); // RoR is using mouse cursor drawn by DearIMGUI.
94
95#ifdef _WIN32
96 MyGUI::LanguageManager::getInstance().eventRequestTag = MyGUI::newDelegate(this, &GUIManager::eventRequestTag);
97#endif // _WIN32
98
99 this->SetupImGui();
100
101 // Configure the chatbox console view
104}
105
109
111{
112 if (m_mygui)
113 {
114 m_mygui->shutdown();
115 delete m_mygui;
116 m_mygui = nullptr;
117 }
118
120 {
121 m_mygui_platform->shutdown();
122 delete m_mygui_platform;
123 m_mygui_platform = nullptr;
124 }
125}
126
131
133{
134 return (App::GetCameraManager()->GetCurrentBehavior() != CameraManager::CAMERA_BEHAVIOR_FREE &&
135 !this->ConsoleWindow.IsHovered() &&
136 !this->GameControls.IsHovered() &&
137 !this->FrictionSettings.IsHovered() &&
138 !this->TextureToolWindow.IsHovered() &&
139 !this->NodeBeamUtils.IsHovered() &&
140 !this->CollisionsDebug.IsHovered() &&
141 !this->MainSelector.IsHovered() &&
142 !this->SurveyMap.IsHovered() &&
143 !this->FlexbodyDebug.IsHovered());
144}
145
147{
148 const int preset = App::ui_preset->getInt();
149 int i = 0;
150 while (UiPresets[i].uip_cvar != nullptr)
151 {
153 UiPresets[i].uip_cvar,
154 UiPresets[i].uip_values[preset]);
155 i++;
156 }
157}
158
160{
161 if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
162 {
163 this->TopMenubar.Draw(dt);
164
165 if (this->GameMainMenu.IsVisible())
166 {
167 this->GameMainMenu.Draw();
168 }
169 }
170
171 if (this->NodeBeamUtils.IsVisible())
172 {
173 this->NodeBeamUtils.Draw();
174 }
175
176 if (this->CollisionsDebug.IsVisible())
177 {
178 this->CollisionsDebug.Draw();
179 }
180
181 if (this->MessageBoxDialog.IsVisible())
182 {
183 this->MessageBoxDialog.Draw();
184 }
185
186 if (this->FlexbodyDebug.IsVisible())
187 {
188 this->FlexbodyDebug.Draw();
189 }
190
191
192};
193
195{
196 this->DrawCommonGui();
197
198 if (player_gfx_actor && !this->GameMainMenu.IsVisible())
199 {
200 this->VehicleInfoTPanel.Draw(player_gfx_actor);
201 }
202
203 if (!this->ConsoleWindow.IsVisible())
204 {
205 if (!App::ui_hide_gui->getBool())
206 {
207 this->ChatBox.Draw(); // Messages must be always visible
208 }
209 }
210
211 if (this->LoadingWindow.IsVisible())
212 {
213 this->LoadingWindow.Draw();
214 }
215
216 if (this->FrictionSettings.IsVisible())
217 {
218 this->FrictionSettings.Draw();
219 }
220
221 if (this->SimPerfStats.IsVisible())
222 {
223 this->SimPerfStats.Draw();
224 }
225
226 if (this->TextureToolWindow.IsVisible())
227 {
228 this->TextureToolWindow.Draw();
229 }
230
231 if (this->SurveyMap.IsVisible())
232 {
233 this->SurveyMap.Draw();
234 }
235
236 this->DirectionArrow.Update(player_gfx_actor);
237}
238
239void GUIManager::eventRequestTag(const MyGUI::UString& _tag, MyGUI::UString& _result)
240{
241 _result = MyGUI::LanguageManager::getInstance().getTag(_tag);
242}
243
245{
246 // Determine image filename
247 using namespace Ogre;
248 FileInfoListPtr files = ResourceGroupManager::getSingleton().findResourceFileInfo("Wallpapers", "*.jpg", false);
249 if (!files || files->empty())
250 {
251 files = ResourceGroupManager::getSingleton().findResourceFileInfo("Wallpapers", "*.png", false);
252 }
253 srand ( time(NULL) );
254
255 int num = 0;
256 for (int i = 0; i<Math::RangeRandom(0, 10); i++)
257 num = Math::RangeRandom(0, files->size());
258
259 // Set up wallpaper
260 // ...texture...
261 Ogre::ResourceManager::ResourceCreateOrRetrieveResult wp_tex_result
262 = Ogre::TextureManager::getSingleton().createOrRetrieve(files->at(num).filename, "Wallpapers");
263 Ogre::TexturePtr wp_tex = Ogre::static_pointer_cast<Ogre::Texture>(wp_tex_result.first);
264 // ...material...
265 Ogre::MaterialPtr wp_mat = Ogre::MaterialManager::getSingleton().create("rigsofrods/WallpaperMat", Ogre::RGN_DEFAULT);
266 Ogre::TextureUnitState* wp_tus = wp_mat->getTechnique(0)->getPass(0)->createTextureUnitState();
267 wp_tus->setTexture(wp_tex);
268 wp_mat->compile();
269 // ...panel...
270 Ogre::OverlayElement* wp_panel = Ogre::OverlayManager::getSingleton()
271 .createOverlayElement("Panel", "rigsofrods/WallpaperPanel", /*isTemplate=*/false);
272 wp_panel->setMaterial(wp_mat);
273 wp_panel->setDimensions(1.f, 1.f);
274 // ...overlay...
275 this->MenuWallpaper = Ogre::OverlayManager::getSingleton().create("rigsofrods/WallpaperOverlay");
276 this->MenuWallpaper->add2D(static_cast<Ogre::OverlayContainer*>(wp_panel)); // 'Panel' inherits from 'Container'
277 this->MenuWallpaper->setZOrder(0);
278 this->MenuWallpaper->show();
279}
280
281void GUIManager::SetSceneManagerForGuiRendering(Ogre::SceneManager* scene_manager)
282{
283 m_mygui_platform->getRenderManagerPtr()->setSceneManager(scene_manager);
284}
285
287{
288 App::ui_hide_gui->setVal(hidden);
290 if (hidden)
291 {
292 this->SimPerfStats.SetVisible(false);
293 this->ChatBox.SetVisible(false);
294 }
295}
296
298{
299 switch (visi)
300 {
302 ImGui::GetIO().MouseDrawCursor = true;
303 this->SupressCursor(false);
304 return;
305
307 ImGui::GetIO().MouseDrawCursor = false;
308 return;
309
311 ImGui::GetIO().MouseDrawCursor = false;
312 this->SupressCursor(true);
313 return;
314 }
315}
316
324
326{
327 ImGuiIO& io = ImGui::GetIO();
328 OIS::Keyboard* kb = App::GetInputEngine()->GetOisKeyboard();
329
330 // Read keyboard modifiers inputs
331 io.KeyCtrl = kb->isKeyDown(OIS::KC_LCONTROL);
332 io.KeyShift = kb->isKeyDown(OIS::KC_LSHIFT);
333 io.KeyAlt = kb->isKeyDown(OIS::KC_LMENU);
334 io.KeySuper = false;
335
336 // Call IMGUI
337 Ogre::FrameEvent ev;
338 ev.timeSinceLastFrame = dt;
340
341 // Reset state
343}
344
346{
347 m_imgui.Init();
348 // Colors
349 ImGuiStyle& style = ImGui::GetStyle();
350 style.Colors[ImGuiCol_Text] = ImVec4(0.90f, 0.90f, 0.90f, 1.00f);
351 style.Colors[ImGuiCol_TextDisabled] = ImVec4(0.60f, 0.60f, 0.60f, 1.00f);
352 style.Colors[ImGuiCol_WindowBg] = ImVec4(0.06f, 0.06f, 0.06f, 0.90f);
353 style.Colors[ImGuiCol_ChildWindowBg] = ImVec4(0.00f, 0.00f, 0.00f, 0.1f);
354 style.Colors[ImGuiCol_PopupBg] = ImVec4(0.05f, 0.05f, 0.10f, 0.90f);
355 style.Colors[ImGuiCol_Border] = ImVec4(0.20f, 0.20f, 0.20f, 0.90f);
356 style.Colors[ImGuiCol_BorderShadow] = ImVec4(0.00f, 0.00f, 0.00f, 0.90f);
357 style.Colors[ImGuiCol_FrameBg] = ImVec4(0.20f, 0.20f, 0.20f, 0.90f);
358 style.Colors[ImGuiCol_FrameBgHovered] = ImVec4(0.13f, 0.40f, 0.60f, 0.90f);
359 style.Colors[ImGuiCol_FrameBgActive] = ImVec4(0.18f, 0.53f, 0.79f, 0.90f);
360 style.Colors[ImGuiCol_TitleBg] = ImVec4(0.11f, 0.33f, 0.49f, 1.00f);
361 style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.13f, 0.40f, 0.60f, 1.00f);
362 style.Colors[ImGuiCol_TitleBgActive] = ImVec4(0.13f, 0.40f, 0.60f, 1.00f);
363 style.Colors[ImGuiCol_MenuBarBg] = ImVec4(0.20f, 0.20f, 0.20f, 0.90f);
364 style.Colors[ImGuiCol_ScrollbarBg] = ImVec4(0.16f, 0.16f, 0.16f, 0.90f);
365 style.Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.30f, 0.30f, 0.29f, 0.90f);
366 style.Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.13f, 0.40f, 0.60f, 0.90f);
367 style.Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.18f, 0.53f, 0.79f, 0.90f);
368 style.Colors[ImGuiCol_CheckMark] = ImVec4(0.90f, 0.90f, 0.90f, 0.90f);
369 style.Colors[ImGuiCol_SliderGrab] = ImVec4(0.39f, 0.39f, 0.39f, 0.90f);
370 style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.18f, 0.53f, 0.79f, 0.90f);
371 style.Colors[ImGuiCol_Button] = ImVec4(0.26f, 0.26f, 0.25f, 0.90f);
372 style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.13f, 0.40f, 0.60f, 0.90f);
373 style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.18f, 0.53f, 0.79f, 0.90f);
374 style.Colors[ImGuiCol_Header] = ImVec4(0.20f, 0.20f, 0.20f, 0.90f);
375 style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.13f, 0.40f, 0.60f, 0.90f);
376 style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.18f, 0.53f, 0.79f, 0.90f);
377 style.Colors[ImGuiCol_ResizeGrip] = ImVec4(0.22f, 0.22f, 0.21f, 0.90f);
378 style.Colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.13f, 0.40f, 0.60f, 0.90f);
379 style.Colors[ImGuiCol_ResizeGripActive] = ImVec4(0.18f, 0.53f, 0.79f, 0.90f);
380 style.Colors[ImGuiCol_PlotLines] = ImVec4(1.00f, 1.00f, 1.00f, 0.90f);
381 style.Colors[ImGuiCol_PlotLinesHovered] = ImVec4(0.13f, 0.40f, 0.60f, 0.90f);
382 style.Colors[ImGuiCol_PlotHistogram] = ImVec4(0.18f, 0.53f, 0.79f, 0.90f);
383 style.Colors[ImGuiCol_PlotHistogramHovered] = ImVec4(0.13f, 0.40f, 0.60f, 0.90f);
384 style.Colors[ImGuiCol_TextSelectedBg] = ImVec4(0.00f, 0.00f, 1.00f, 0.90f);
385 style.Colors[ImGuiCol_ModalWindowDarkening] = ImVec4(0.20f, 0.20f, 0.20f, 0.90f);
386 // Styles
387 style.WindowPadding = ImVec2(10.f, 10.f);
388 style.FrameRounding = 2.f;
389 style.WindowRounding = 4.f;
390 style.WindowTitleAlign = ImVec2(0.5f, 0.5f);
391 style.ItemSpacing = ImVec2(5.f, 5.f);
392 style.GrabRounding = 3.f;
393 style.WindowBorderSize = 0.f;
394
395 App::GetGfxScene()->GetSceneManager()->addRenderQueueListener(&m_imgui);
396}
397
399{
400 // UI usable in both main menu and simulation
401 // ------------------------------------------
402
403 if (App::mp_state->getEnum<MpState>() == MpState::CONNECTED && !App::ui_hide_gui->getBool() && !this->SurveyMap.IsVisible())
404 {
405 this->MpClientList.Draw();
406 }
407
408 if (this->MainSelector.IsVisible())
409 {
410 this->MainSelector.Draw();
411 }
412
413 if (this->ConsoleWindow.IsVisible())
414 {
415 this->ConsoleWindow.Draw();
416 }
417
418 if (this->GameControls.IsVisible())
419 {
420 this->GameControls.Draw();
421 }
422
423 if (this->RepositorySelector.IsVisible())
424 {
425 this->RepositorySelector.Draw();
426 }
427}
428
430{
431 this->DrawCommonGui();
432
433 if (this->MultiplayerSelector.IsVisible())
434 {
436 }
437
438 if (this->GameMainMenu.IsVisible())
439 {
440 this->GameMainMenu.Draw();
441 }
442
443 if (this->GameSettings.IsVisible())
444 {
445 this->GameSettings.Draw();
446 }
447
448 if (this->MessageBoxDialog.IsVisible())
449 {
450 this->MessageBoxDialog.Draw();
451 }
452
453 if (this->LoadingWindow.IsVisible())
454 {
455 this->LoadingWindow.Draw();
456 }
457
458 if (this->GameAbout.IsVisible())
459 {
460 this->GameAbout.Draw();
461 }
462}
463
464void GUIManager::ShowMessageBox(const char* title, const char* text, bool allow_close, const char* btn1_text, const char* btn2_text)
465{
466 this->MessageBoxDialog.Show(title, text, allow_close, btn1_text, btn2_text);
467}
468
470{
471 this->MessageBoxDialog.Show(conf);
472}
473
478
487
488void GUIManager::SupressCursor(bool do_supress)
489{
490 m_is_cursor_supressed = do_supress;
491}
492
494{
495 // EV_COMMON_CONSOLE_TOGGLE - display console GUI (anytime)
496 if (App::GetInputEngine()->getEventBoolValueBounce(EV_COMMON_CONSOLE_TOGGLE))
497 {
499 }
500
501 if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
502 {
503 // EV_COMMON_HIDE_GUI
504 if (App::GetInputEngine()->getEventBoolValueBounce(EV_COMMON_HIDE_GUI))
505 {
506 this->SetGuiHidden(!this->IsGuiHidden());
507 }
508
509 // EV_COMMON_ENTER_CHATMODE
510 if (App::GetInputEngine()->getEventBoolValueBounce(EV_COMMON_ENTER_CHATMODE, 0.5f) &&
511 App::mp_state->getEnum<MpState>() == MpState::CONNECTED)
512 {
513 this->ChatBox.SetVisible(!this->ChatBox.IsVisible());
514 }
515
516 // EV_COMMON_TRUCK_INFO - Vehicle info side-panel (aka The T-Screen)
517 if (App::GetInputEngine()->getEventBoolValueBounce(EV_COMMON_TRUCK_INFO) && App::GetGameContext()->GetPlayerActor())
518 {
520 {
522 }
523 else
524 {
526 }
527 }
528
529 // EV_COMMON_TRUCK_DESCRIPTION - The T-screen with commands
530 if (App::GetInputEngine()->getEventBoolValueBounce(EV_COMMON_TRUCK_DESCRIPTION) && App::GetGameContext()->GetPlayerActor())
531 {
533 {
535 }
536 else
537 {
539 }
540 }
541
542 // EV_COMMON_TOGGLE_DASHBOARD
543 if (App::GetInputEngine()->getEventBoolValueBounce(EV_COMMON_TOGGLE_DASHBOARD))
544 {
546 }
547
548 // EV_COMMON_TOGGLE_STATS - FPS, draw batch count etc...
549 if (App::GetInputEngine()->getEventBoolValueBounce(EV_COMMON_TOGGLE_STATS))
550 {
552 }
553
554 if (App::GetCameraManager()->GetCurrentBehavior() != CameraManager::CAMERA_BEHAVIOR_FREE)
555 {
556 // EV_SURVEY_MAP_CYCLE
557 if (App::GetInputEngine()->getEventBoolValueBounce(EV_SURVEY_MAP_CYCLE))
558 {
559 this->SurveyMap.CycleMode();
560 }
561
562 // EV_SURVEY_MAP_TOGGLE
563 if (App::GetInputEngine()->getEventBoolValueBounce(EV_SURVEY_MAP_TOGGLE))
564 {
565 this->SurveyMap.ToggleMode();
566 }
567 }
568 }
569}
System integration layer; inspired by OgreBites::ApplicationContext.
#define RESOURCE_FILENAME
Game state manager and message-queue provider.
Manager for all visuals belonging to a single actor.
Handles controller inputs from player.
Platform-specific utilities. We use narrow UTF-8 encoded strings as paths. Inspired by http://utf8eve...
static void NewFrame(const FrameEvent &evt)
void Init()
Definition OgreImGui.cpp:38
void setVal(T val)
Definition CVar.h:72
int getInt() const
Definition CVar.h:97
CVar * cVarSet(std::string const &input_name, std::string const &input_val)
Set existing cvar by short/long name. Return the modified cvar (or NULL if not found)
Definition CVar.cpp:284
void SetVisible(bool visible)
void Update(RoR::GfxActor *player)
bool IsVisible() const
ConsoleView & GetConsoleView()
void Show(MessageBoxConfig const &cfg)
bool IsVisible() const
void SetVisible(TPanelMode mode, TPanelFocus focus=TPANELFOCUS_NONE)
bool IsVisible(TPanelFocus focus=TPANELFOCUS_NONE) const
void Draw(RoR::GfxActor *actorx)
void NewImGuiFrame(float dt)
MyGUI::OgrePlatform * m_mygui_platform
Definition GUIManager.h:180
GUI::RepositorySelector RepositorySelector
Definition GUIManager.h:130
GUI::TextureToolWindow TextureToolWindow
Definition GUIManager.h:128
bool IsGuiHidden() const
Definition GUIManager.h:156
GUI::SimPerfStats SimPerfStats
Definition GUIManager.h:121
@ HIDDEN
Hidden as inactive, will re-appear the moment user moves mouse.
@ VISIBLE
Visible, will be auto-hidden if not moving for a while.
@ SUPRESSED
Hidden manually, will not re-appear until explicitly set VISIBLE.
bool m_gui_kb_capture_queued
Resets and accumulates every frame.
Definition GUIManager.h:183
void SetGuiHidden(bool visible)
void UpdateInputEvents(float dt)
Ogre::Timer m_last_mousemove_time
Definition GUIManager.h:185
GUI::MultiplayerSelector MultiplayerSelector
Definition GUIManager.h:123
GUI::GameAbout GameAbout
Definition GUIManager.h:118
void SetSceneManagerForGuiRendering(Ogre::SceneManager *scene_manager)
GUI::MainSelector MainSelector
Definition GUIManager.h:124
GUI::GameSettings GameSettings
Definition GUIManager.h:119
GUI::VehicleInfoTPanel VehicleInfoTPanel
Definition GUIManager.h:120
GUI::GameChatBox ChatBox
Definition GUIManager.h:125
void SetUpMenuWallpaper()
GUI::TopMenubar TopMenubar
Definition GUIManager.h:133
void ApplyGuiCaptureKeyboard()
Call after rendered frame to apply queued value.
OgreImGui m_imgui
Definition GUIManager.h:181
void UpdateMouseCursorVisibility()
void DrawSimGuiBuffered(GfxActor *player_gfx_actor)
Reads data from simbuffer.
bool m_is_cursor_supressed
True if cursor was manually hidden.
Definition GUIManager.h:186
void ApplyUiPreset()
reads cvar 'ui_preset'
void ShowMessageBox(const char *title, const char *text, bool allow_close=true, const char *btn1_text="OK", const char *btn2_text=nullptr)
Ogre::Overlay * MenuWallpaper
Definition GUIManager.h:138
GUI::FrictionSettings FrictionSettings
Definition GUIManager.h:127
void DrawSimulationGui(float dt)
Touches live data; must be called in sync with sim. thread.
GUI::CollisionsDebug CollisionsDebug
Definition GUIManager.h:116
void RequestGuiCaptureKeyboard(bool val)
Pass true during frame to prevent input passing to application.
GUI::LoadingWindow LoadingWindow
Definition GUIManager.h:132
GUI::GameControls GameControls
Definition GUIManager.h:129
GUI::MpClientList MpClientList
Definition GUIManager.h:126
bool AreStaticMenusAllowed()
i.e. top menubar / vehicle UI buttons
GUI::SurveyMap SurveyMap
Definition GUIManager.h:135
GUI::GameMainMenu GameMainMenu
Definition GUIManager.h:117
bool m_gui_kb_capture_requested
Effective value, persistent.
Definition GUIManager.h:184
GUI::DirectionArrow DirectionArrow
Definition GUIManager.h:136
void eventRequestTag(const MyGUI::UString &_tag, MyGUI::UString &_result)
void SetMouseCursorVisibility(MouseCursorVisibility visi)
GuiTheme m_theme
Definition GUIManager.h:182
GUI::NodeBeamUtils NodeBeamUtils
Definition GUIManager.h:131
GUI::ConsoleWindow ConsoleWindow
Definition GUIManager.h:134
GUI::MessageBoxDialog MessageBoxDialog
Definition GUIManager.h:122
MyGUI::Gui * m_mygui
Definition GUIManager.h:179
GUI::FlexbodyDebug FlexbodyDebug
Definition GUIManager.h:137
void SupressCursor(bool do_supress)
Ogre::SceneManager * GetSceneManager()
Definition GfxScene.h:83
OIS::Keyboard * GetOisKeyboard()
void showDashboardOverlays(bool show, ActorPtr actor)
void ToggleDashboardOverlays(ActorPtr actor)
std::string PathCombine(std::string a, std::string b)
@ EV_COMMON_ENTER_CHATMODE
enter the chat mode
@ EV_SURVEY_MAP_CYCLE
cycle overview-map mode
@ EV_COMMON_CONSOLE_TOGGLE
show / hide the console
@ EV_COMMON_TRUCK_INFO
toggle truck HUD
@ EV_COMMON_HIDE_GUI
hide all GUI elements
@ EV_COMMON_TOGGLE_DASHBOARD
display or hide the dashboard overlay
@ EV_COMMON_TOGGLE_STATS
toggle Ogre statistics (FPS etc.)
@ EV_COMMON_TRUCK_DESCRIPTION
toggle truck description
@ EV_SURVEY_MAP_TOGGLE
toggle overview-map mode
AppContext * GetAppContext()
OverlayWrapper * GetOverlayWrapper()
InputEngine * GetInputEngine()
CVar * sys_logs_dir
CVar * ui_preset
enum RoR::UiPreset
CameraManager * GetCameraManager()
GameContext * GetGameContext()
CVar * ui_hide_gui
bool; The 'hide GUI' hotkey state
GfxScene * GetGfxScene()
CVar * app_state
CVar * mp_state
Console * GetConsole()
CVar * diag_use_mygui_logfile
UiPresetEntry UiPresets[]
Global list of UI Presets, selectable via Settings menu in TopMenubar.
ImVec4 cvw_background_color
Text-background color.
Definition GUIManager.h:68