Blamite Game Engine - blam!  00272.10.26.20.0001.blamite
The core library for the Blamite Game Engine.
debug_ui.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Windows.h>
4 #include <string>
5 #include <map>
6 
7 #include "components/3rdparty/imgui/imgui.h"
8 
9 //macros
10 
20 #define duigvs(x) Blam::DebugUI::GetVisibility(x)
21 
22 #ifndef BLAM
23 #define BLAM
24 #endif
25 
26 #ifndef UI_API
27 #define UI_API
28 #endif
29 
40 namespace InternalUI
41 {
43  // Main //
45 
49  UI_API void Initialize();
50 
54  UI_API void Render();
55 
59  UI_API void Shutdown();
60 
67  UI_API void LoadConfig(); //Loads UI configuration file
68 
77  UI_API void CheckForUpdates(); //Update checked
78 
95  UI_API void ShowCrashScreen(std::string crash_message); //Displays crash screen for development builds
96 
104  UI_API void ShowHaloConsole(bool* p_open);
105 
106 
107 
109  // Styles //
111 
120 
128  UI_API void load_xenia_styles(); //Function to load the Xenia UI theme
129 
137  UI_API void load_elaztek_styles(); //Function to load the Default/Elaztek UI theme
138 
146  UI_API void load_default_styles(); //Function to load the standard ImGui theme
147 
155  UI_API void load_elaztek_styles_classic(); //Function to load the classic Elaztek UI theme
156 
164  UI_API void load_cex_styles(); //Function to load the Halo: CE Anniversary based styles
165 
173  UI_API void load_win9x_styles(); //Function to load the Windows 9x styles
174 
182  UI_API void load_hl2_styles(); //Function to load Half-Life 2/Source Engine based styles
183 
191  UI_API void load_osx_styles(); //Function to load Mac OSX/ImGUI light theme
192 
193 
195  // Fonts //
197 
205  UI_API void SetFont(int id); //Change font via numeric ID
206 
212  UI_API ImFont* font_fixedsys(); //default fixedsys
213 
219  UI_API ImFont* font_proggytiny(); //proggytiny for xenia
220 
229  namespace Colors
230  {
231  UI_API ImVec4 crash_col();
232  UI_API ImVec4 crash_text_col();
233  UI_API ImVec4 crash_text_shadow_col();
234 
235  UI_API ImVec4 clear_col();
236 
237  UI_API ImVec4 console_color();
238  UI_API ImVec4 console_msg_color();
239  UI_API ImVec4 console_shadow();
240  UI_API ImVec4 console_error();
241  UI_API ImVec4 console_print();
242  UI_API ImVec4 console_blue();
243  UI_API ImVec4 console_internal_gold();
244  UI_API ImVec4 console_yellow();
245  UI_API ImVec4 transparent();
246 
247  UI_API ImVec4 mc_color_0();
248  UI_API ImVec4 mc_color_1();
249  UI_API ImVec4 mc_color_2();
250  UI_API ImVec4 mc_color_3();
251  UI_API ImVec4 mc_color_4();
252  UI_API ImVec4 mc_color_5();
253  UI_API ImVec4 mc_color_6();
254  UI_API ImVec4 mc_color_7();
255  UI_API ImVec4 mc_color_8();
256  UI_API ImVec4 mc_color_9();
257  UI_API ImVec4 mc_color_a();
258  UI_API ImVec4 mc_color_b();
259  UI_API ImVec4 mc_color_c();
260  UI_API ImVec4 mc_color_d();
261  UI_API ImVec4 mc_color_e();
262  UI_API ImVec4 mc_color_f();
263 
264  UI_API ImVec4 mc_color_0_s();
265  UI_API ImVec4 mc_color_1_s();
266  UI_API ImVec4 mc_color_2_s();
267  UI_API ImVec4 mc_color_3_s();
268  UI_API ImVec4 mc_color_4_s();
269  UI_API ImVec4 mc_color_5_s();
270  UI_API ImVec4 mc_color_6_s();
271  UI_API ImVec4 mc_color_7_s();
272  UI_API ImVec4 mc_color_8_s();
273  UI_API ImVec4 mc_color_9_s();
274  UI_API ImVec4 mc_color_a_s();
275  UI_API ImVec4 mc_color_b_s();
276  UI_API ImVec4 mc_color_c_s();
277  UI_API ImVec4 mc_color_d_s();
278  UI_API ImVec4 mc_color_e_s();
279  UI_API ImVec4 mc_color_f_s();
280 
281  UI_API ImVec4 d_blurple();
282  UI_API ImVec4 d_white();
283  UI_API ImVec4 d_greyple();
284  UI_API ImVec4 d_dark();
285  UI_API ImVec4 d_nqblack();
286 
287  UI_API ImVec4 d_text_dark();
288  UI_API ImVec4 d_text_light();
289 
290  }
291 
292 }
293 
294 namespace Blam
295 {
302  BLAM void LogEventLegacy(const char* message); //Adds an event to console
303 
311  BLAM void SetConsoleState(bool state); //Opens halo( prompt
312 
318  BLAM bool GetConsoleState(); //Gets whether console open or closed
319 
325  BLAM void SetConsoleState2(bool state); //Opens halo( prompt
326 
332  BLAM bool GetConsoleState2(); //Gets whether console open or closed
333 
339  BLAM void SetConsoleCommand2(std::string command); //Sets console command
340 
346  BLAM std::string GetConsoleCommand2(); //Sets console command
347 
351  namespace DebugUI
352  {
353  //enum to ensure we dont mismatch/duplicate drawlist items
354 
361  {
362  //Menus
365 
366  //Built-in Windows
368 
369  //Legacy windows
379 
380  //Testing Utilities
387 
388  // Tools
390 
391  //Other
400  };
401 
410  {
411  public:
416 
421 
429  virtual void Draw() {};
430 
436  bool* Show()
437  {
438  return &show;
439  };
440 
441  protected:
442  bool show = false;
443  };
444 
452  BLAM bool* GetVisibility(DrawListItem key);
453 
461 
470 
477  BLAM void ShowErrorDialog(const char* title, const char* message);
478 
485  BLAM std::map<Blam::DebugUI::DrawListItem, Blam::DebugUI::ImGUIDrawingGroup*>* GetDrawList();
486 
487  //Shows a window (or group of windows) created using ImGUI.
488 
494  namespace Windows
495  {
496  BLAM void HackConsole(bool* show_console);
498  }
499  }
500 }
InternalUI::Colors::mc_color_e
UI_API ImVec4 mc_color_e()
Definition: debug_ui_colors.cpp:51
Blam
Namespace surrounding all major engine components.
Definition: blam_api.h:18
Blam::DebugUI::d2d_test
@ d2d_test
Definition: debug_ui.h:382
InternalUI::Colors::mc_color_f
UI_API ImVec4 mc_color_f()
Definition: debug_ui_colors.cpp:52
InternalUI::Colors::crash_col
UI_API ImVec4 crash_col()
Definition: debug_ui_colors.cpp:21
InternalUI::Colors::mc_color_2
UI_API ImVec4 mc_color_2()
Definition: debug_ui_colors.cpp:39
InternalUI::Colors::d_dark
UI_API ImVec4 d_dark()
Definition: debug_ui_colors.cpp:74
Blam::DebugUI::ImGUIDrawingGroup::Draw
virtual void Draw()
Draws the contents of the group.
Definition: debug_ui.h:429
Blam::DebugUI::tag_editor
@ tag_editor
Definition: debug_ui.h:389
Blam::DebugUI::discord_rpc_ui
@ discord_rpc_ui
Definition: debug_ui.h:383
InternalUI::Colors::mc_color_5_s
UI_API ImVec4 mc_color_5_s()
Definition: debug_ui_colors.cpp:59
Blam::DebugUI::theme_editor
@ theme_editor
Definition: debug_ui.h:399
InternalUI::Colors::mc_color_3
UI_API ImVec4 mc_color_3()
Definition: debug_ui_colors.cpp:40
Blam::GetConsoleCommand2
BLAM std::string GetConsoleCommand2()
i have no idea why this exists
Definition: console_hack.cpp:123
Blam::GetConsoleState2
BLAM bool GetConsoleState2()
i have no idea why this exists
Definition: console_hack.cpp:108
Blam::DebugUI::dx11_window
@ dx11_window
Definition: debug_ui.h:367
InternalUI::Colors::mc_color_7
UI_API ImVec4 mc_color_7()
Definition: debug_ui_colors.cpp:44
Blam::DebugUI::menubar
@ menubar
Definition: debug_ui.h:364
Blam::DebugUI::render_stack_editor
@ render_stack_editor
Definition: debug_ui.h:386
Blam::DebugUI::GetVisibility
BLAM bool * GetVisibility(DrawListItem key)
Retrieves the visibility of the specified draw list item.
Definition: drawing_list.cpp:26
InternalUI::Colors::mc_color_c
UI_API ImVec4 mc_color_c()
Definition: debug_ui_colors.cpp:49
InternalUI::ShowHaloConsole
UI_API void ShowHaloConsole(bool *p_open)
Legacy function that was used to open the ImGUI-based console.
Definition: legacy_halo_prompt.cpp:1794
Blam::DebugUI::engine_info_new
@ engine_info_new
Definition: debug_ui.h:392
InternalUI::ShowCrashScreen
UI_API void ShowCrashScreen(std::string crash_message)
Show the engine's crash screen.
Definition: crash_screen.cpp:11
Blam::DebugUI::GetDrawList
BLAM std::map< Blam::DebugUI::DrawListItem, Blam::DebugUI::ImGUIDrawingGroup * > * GetDrawList()
Retrieves the current ImGUI drawing list.
Definition: drawing_list.cpp:16
InternalUI::Colors::mc_color_6_s
UI_API ImVec4 mc_color_6_s()
Definition: debug_ui_colors.cpp:60
crash_message
std::string crash_message
The message to display on the crash screen.
Definition: render_manage.cpp:62
InternalUI::Initialize
UI_API void Initialize()
Initializes the ImGUI draw list.
Definition: debug_ui.cpp:64
InternalUI::Colors::clear_col
UI_API ImVec4 clear_col()
The color to use for render target clearing.
Definition: debug_ui_colors.cpp:25
Blam::DebugUI::imgui_info
@ imgui_info
Definition: debug_ui.h:393
Blam::DebugUI::Windows::HackConsole
BLAM void HackConsole(bool *show_console)
Definition: console_hack.cpp:14
InternalUI::load_win9x_styles
UI_API void load_win9x_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:406
Blam::DebugUI::imgui_user_guide
@ imgui_user_guide
Definition: debug_ui.h:397
InternalUI::load_default_styles
UI_API void load_default_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:280
Blam::DebugUI::ImGUIDrawingGroup::~ImGUIDrawingGroup
~ImGUIDrawingGroup()
Empty destructor.
Definition: debug_ui.h:420
InternalUI::Colors::mc_color_2_s
UI_API ImVec4 mc_color_2_s()
Definition: debug_ui_colors.cpp:56
Blam::DebugUI::ip_test
@ ip_test
Definition: debug_ui.h:373
InternalUI::load_xenia_styles
UI_API void load_xenia_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:59
Blam::LogEventLegacy
BLAM void LogEventLegacy(const char *message)
Legacy function to add a message to console.
Definition: legacy_halo_prompt.cpp:1804
InternalUI::Colors::mc_color_a
UI_API ImVec4 mc_color_a()
Definition: debug_ui_colors.cpp:47
InternalUI::Colors::console_blue
UI_API ImVec4 console_blue()
Definition: debug_ui_colors.cpp:32
Blam::DebugUI::config_editor
@ config_editor
Definition: debug_ui.h:371
InternalUI::load_cex_styles
UI_API void load_cex_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:341
InternalUI::font_proggytiny
UI_API ImFont * font_proggytiny()
Legacy function to set the ImGUI font to Proggy Tiny - used by Xenia and some elements of Reach.
InternalUI::Colors::mc_color_9_s
UI_API ImVec4 mc_color_9_s()
Definition: debug_ui_colors.cpp:63
InternalUI::Colors::d_text_light
UI_API ImVec4 d_text_light()
Definition: debug_ui_colors.cpp:78
Blam::SetConsoleState
BLAM void SetConsoleState(bool state)
Legacy function to control legacy ImGUI console visibility.
Definition: console_hack.cpp:99
Blam::DebugUI::devtools_bar
@ devtools_bar
Definition: debug_ui.h:363
InternalUI::Colors::d_greyple
UI_API ImVec4 d_greyple()
Definition: debug_ui_colors.cpp:73
InternalUI::load_blamite_pink_styles
UI_API void load_blamite_pink_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:3
InternalUI::Colors::console_msg_color
UI_API ImVec4 console_msg_color()
Definition: debug_ui_colors.cpp:28
Blam::DebugUI::debug_menu
@ debug_menu
Definition: debug_ui.h:394
Blam::GetConsoleState
BLAM bool GetConsoleState()
Legacy function to retrieve legacy ImGUI console visibility.
Definition: console_hack.cpp:128
InternalUI::Colors::console_error
UI_API ImVec4 console_error()
Definition: debug_ui_colors.cpp:30
InternalUI::Colors::console_color
UI_API ImVec4 console_color()
Definition: debug_ui_colors.cpp:27
InternalUI::Colors::mc_color_7_s
UI_API ImVec4 mc_color_7_s()
Definition: debug_ui_colors.cpp:61
UI_API
#define UI_API
Definition: debug_ui.h:27
InternalUI::font_fixedsys
UI_API ImFont * font_fixedsys()
Legacy function to set the ImGUI font to fixedsys.
show_console
bool show_console
Definition: console_hack.cpp:6
InternalUI::Colors::mc_color_f_s
UI_API ImVec4 mc_color_f_s()
Definition: debug_ui_colors.cpp:69
Blam::DebugUI::font_editor
@ font_editor
Definition: debug_ui.h:384
InternalUI::load_osx_styles
UI_API void load_osx_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:543
Blam::DebugUI::config_editor_new
@ config_editor_new
Definition: debug_ui.h:372
InternalUI::LoadConfig
UI_API void LoadConfig()
Loads UI configuration file.
Blam::DebugUI::ShowErrorDialog
BLAM void ShowErrorDialog(const char *title, const char *message)
Shows a simple error dialog created using ImGUI.
Definition: debug_ui.cpp:131
Blam::DebugUI::error_dialog
@ error_dialog
Definition: debug_ui.h:395
InternalUI::Colors::d_white
UI_API ImVec4 d_white()
Definition: debug_ui_colors.cpp:72
InternalUI::load_hl2_styles
UI_API void load_hl2_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:475
InternalUI::Colors::console_internal_gold
UI_API ImVec4 console_internal_gold()
Definition: debug_ui_colors.cpp:33
InternalUI::Colors::console_print
UI_API ImVec4 console_print()
Definition: debug_ui_colors.cpp:31
Blam::DebugUI::ImGUIDrawingGroup::show
bool show
Controls whether or not the group should be shown. May not be used in all groups.
Definition: debug_ui.h:442
Blam::DebugUI::theme_selector
@ theme_selector
Definition: debug_ui.h:398
InternalUI::Colors::console_shadow
UI_API ImVec4 console_shadow()
Definition: debug_ui_colors.cpp:29
Blam::DebugUI::license_startup_prompt
@ license_startup_prompt
Definition: debug_ui.h:375
Blam::DebugUI::Windows::HackConsoleNew
BLAM void HackConsoleNew(bool *show_testing_newconsole)
Definition: console_hack.cpp:71
Blam::DebugUI::engine_info
@ engine_info
Definition: debug_ui.h:370
InternalUI::Colors::mc_color_8
UI_API ImVec4 mc_color_8()
Definition: debug_ui_colors.cpp:45
Blam::DebugUI::ImGUIDrawingGroup::Show
bool * Show()
Retrieves whether or not this item should be shown.
Definition: debug_ui.h:436
Blam::DebugUI::ImGUIDrawingGroup
Class representing an ImGUI drawing group/draw list item.
Definition: debug_ui.h:409
InternalUI::Colors::mc_color_9
UI_API ImVec4 mc_color_9()
Definition: debug_ui_colors.cpp:46
InternalUI::Colors::mc_color_4
UI_API ImVec4 mc_color_4()
Definition: debug_ui_colors.cpp:41
InternalUI::Colors::mc_color_a_s
UI_API ImVec4 mc_color_a_s()
Definition: debug_ui_colors.cpp:64
Blam::DebugUI::AddToDrawList
BLAM void AddToDrawList(DrawListItem key, ImGUIDrawingGroup *group)
Adds a new item to the ImGUI draw list.
Definition: drawing_list.cpp:11
InternalUI::Colors::d_text_dark
UI_API ImVec4 d_text_dark()
Definition: debug_ui_colors.cpp:77
Blam::DebugUI::stats
@ stats
Definition: debug_ui.h:376
Blam::DebugUI::GetDrawListItem
BLAM ImGUIDrawingGroup * GetDrawListItem(DrawListItem key)
Retrieves a drawing group with the specified ID.
Definition: drawing_list.cpp:21
BLAM
#define BLAM
Definition: debug_ui.h:23
InternalUI::Colors::crash_text_shadow_col
UI_API ImVec4 crash_text_shadow_col()
Definition: debug_ui_colors.cpp:23
Blam::SetConsoleState2
BLAM void SetConsoleState2(bool state)
i have no idea why this exists
Definition: console_hack.cpp:113
InternalUI::Colors::mc_color_5
UI_API ImVec4 mc_color_5()
Definition: debug_ui_colors.cpp:42
InternalUI::Colors::mc_color_6
UI_API ImVec4 mc_color_6()
Definition: debug_ui_colors.cpp:43
Blam::DebugUI::crash_test_ui
@ crash_test_ui
Definition: debug_ui.h:381
Blam::DebugUI::update_popup
@ update_popup
Definition: debug_ui.h:377
InternalUI::Colors::mc_color_0_s
UI_API ImVec4 mc_color_0_s()
Definition: debug_ui_colors.cpp:54
InternalUI::Colors::mc_color_e_s
UI_API ImVec4 mc_color_e_s()
Definition: debug_ui_colors.cpp:68
InternalUI::Shutdown
UI_API void Shutdown()
Cleans up any data used by the ImGUI draw list.
Definition: debug_ui.cpp:107
Blam::DebugUI::logger
@ logger
Definition: debug_ui.h:378
InternalUI::Colors::console_yellow
UI_API ImVec4 console_yellow()
Definition: debug_ui_colors.cpp:34
Blam::SetConsoleCommand2
BLAM void SetConsoleCommand2(std::string command)
i have no idea why this exists
Definition: console_hack.cpp:118
InternalUI::Colors::mc_color_8_s
UI_API ImVec4 mc_color_8_s()
Definition: debug_ui_colors.cpp:62
InternalUI::Colors::mc_color_b
UI_API ImVec4 mc_color_b()
Definition: debug_ui_colors.cpp:48
Blam::DebugUI::chat_window
@ chat_window
Definition: debug_ui.h:374
show_testing_newconsole
bool show_testing_newconsole
Definition: console_hack.cpp:9
InternalUI::Colors::mc_color_4_s
UI_API ImVec4 mc_color_4_s()
Definition: debug_ui_colors.cpp:58
InternalUI::Colors::mc_color_d_s
UI_API ImVec4 mc_color_d_s()
Definition: debug_ui_colors.cpp:67
InternalUI
Namespace containing things for the engine's "internal UI", which is powered through ImGUI.
Definition: engine_definitions.h:250
Blam::DebugUI::exit_via_menu
@ exit_via_menu
Definition: debug_ui.h:396
Blam::DebugUI::ImGUIDrawingGroup::ImGUIDrawingGroup
ImGUIDrawingGroup()
Empty constructor.
Definition: debug_ui.h:415
InternalUI::Colors::mc_color_3_s
UI_API ImVec4 mc_color_3_s()
Definition: debug_ui_colors.cpp:57
InternalUI::Colors::mc_color_b_s
UI_API ImVec4 mc_color_b_s()
Definition: debug_ui_colors.cpp:65
InternalUI::Colors::d_blurple
UI_API ImVec4 d_blurple()
Definition: debug_ui_colors.cpp:71
InternalUI::Colors::d_nqblack
UI_API ImVec4 d_nqblack()
Definition: debug_ui_colors.cpp:75
InternalUI::Colors::mc_color_d
UI_API ImVec4 mc_color_d()
Definition: debug_ui_colors.cpp:50
InternalUI::Render
UI_API void Render()
Renders all ImGUI data.
Definition: debug_ui.cpp:119
InternalUI::load_elaztek_styles_classic
UI_API void load_elaztek_styles_classic()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:213
InternalUI::load_elaztek_styles
UI_API void load_elaztek_styles()
Legacy function to apply a modified ImGUI color scheme.
Definition: ui_themes.cpp:142
Blam::DebugUI::DrawListItem
DrawListItem
Enumerator containing an entry for each draw list item.
Definition: debug_ui.h:360
InternalUI::CheckForUpdates
UI_API void CheckForUpdates()
Legacy function that would have checked for game engine updates.
InternalUI::Colors::mc_color_1
UI_API ImVec4 mc_color_1()
Definition: debug_ui_colors.cpp:38
InternalUI::Colors::mc_color_c_s
UI_API ImVec4 mc_color_c_s()
Definition: debug_ui_colors.cpp:66
InternalUI::Colors::mc_color_0
UI_API ImVec4 mc_color_0()
Definition: debug_ui_colors.cpp:37
InternalUI::Colors::crash_text_col
UI_API ImVec4 crash_text_col()
Definition: debug_ui_colors.cpp:22
InternalUI::Colors::transparent
UI_API ImVec4 transparent()
Definition: debug_ui_colors.cpp:35
InternalUI::Colors::mc_color_1_s
UI_API ImVec4 mc_color_1_s()
Definition: debug_ui_colors.cpp:55
InternalUI::SetFont
UI_API void SetFont(int id)
Legacy function to change the font used by ImGUI.
Blam::DebugUI::network_stats
@ network_stats
Definition: debug_ui.h:385