Elaztek Developer Hub
Blamite Game Engine - blam!  00453.06.08.26.0624.blamite
The core library for the Blamite Game Engine.
debug_menu.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Strings/components/classes/events/events.h>
4 #include <Strings/components/classes/vector/vector.h>
5 #include <vector>
6 
10 
11 #define CWT_DEBUG_MENU "DEBUG_MENU"
12 #define CWT_DEBUG_MENU_ITEM "DEBUG_MENU_ITEM"
13 
15 
20 {
21 private:
22  BlamUIWidget_BasicRectangle* value_bg = nullptr;
23  BlamUIWidget_BasicRectangle* name_bg = nullptr;
24  BlamUIWidget_Text* value_text = nullptr;
25  BlamUIWidget_Text* name_text = nullptr;
26 
27  BlamUIWidget_Text* index_text = nullptr;
28 
32  BlamUIWidget_Text* hotkey_text = nullptr;
33 
34  BlamUIWidget_DebugMenu* debug_menu_widget = nullptr;
35  BlamDebugMenuItem* menu_item = nullptr;
36 
37  BlamVector2 value_bg_size = { 60, 13 };
38  int property_spacing = 5;
39 
40  bool active = false;
41  bool is_header = false;
42  bool legacy_global_display = false;
43 
47  void UpdateGlobalValueDisplay();
48 
52  void UpdateActiveBackgroundColor();
53 
54 public:
55 
63  BlamUIWidget_DebugMenu_Item(BlamDebugMenuItem* _menu_item, BlamUIWidget_DebugMenu* _debug_menu_widget, BlamUIWidget_Group* parent_group);
64 
72  BlamUIWidget_DebugMenu_Item(std::string header_title, BlamUIWidget_DebugMenu* _debug_menu_widget, BlamUIWidget_Group* parent_group);
73 
74  void Draw() override;
75  void UpdateMetrics() override;
76  void SetActive(bool _active);
77  void ShowImGuiPropertyEditor() override;
78  void SetHidden(bool new_hidden) override;
79  void SetPosition(BlamVector2 new_position) override;
80 
84  void SetIsHeader();
85 
91  bool IsHeader();
92 
98  void SetMenuItem(BlamDebugMenuItem* _menu_item);
99 
108  void ConfigureHotkeyText(int index);
109 
113  void SetSize(float scale);
114 };
115 
122 class BlamUIWidget_DebugMenu : public BlamUIWidget, public BlamEventListener
123 {
124 private:
125  BlamUIWidget_VLayoutGroup* items_container = nullptr;
126 
130  BlamUIWidget_Group* items_container_persistent = nullptr;
131 
132  BlamUIWidget_Text* arrow_up = nullptr;
133  BlamUIWidget_Text* arrow_up_stem = nullptr;
134  BlamUIWidget_Text* arrow_down = nullptr;
135  BlamUIWidget_Text* arrow_down_stem = nullptr;
136 
137  BlamUIWidget_BasicRectangle* background = nullptr;
138  std::string page_title = "Main";
139  std::vector<BlamDebugMenuItem*> items = std::vector<BlamDebugMenuItem*>();
140 
141  bool needs_page_switch = false;
142 
146  int active_index = 0;
147  int scroll_offset = 0;
148 
149  bool scrolling_down = false;
150  bool scroll_animating = false;
151  bool scroll_step_drawn = false;
152 
153  BlamVector2 menu_size = { 479, 242 };
154  BlamVector2 menu_origin = { 50, 112 };
155 
156  BlamVector3 content_margins = { 2, 70, 3 };
157  int item_spacing = 5;
158  int max_items_visible = 12;
160 
166  void LoadMenuPage(BlamDebugMenuItem* page_item);
167 
171  void GenerateItemsUI();
172 
179  void UpdateActiveItem();
180 
189  void SetActiveItemInfo(BlamDebugMenuItem* new_item);
190 
196  BlamDebugMenuItem* GetActiveItem();
197 
198 public:
199  float cached_scale_factor = 1.0f;
200  BlamVector2 menu_item_size = { 399 , 13 };
201 
204 
205  void Draw() override;
206  void ShowImGuiPropertyEditor() override;
207  void UpdateMetrics() override;
208  void RefreshRelativePosition() override;
209  void SetHidden(bool new_hidden) override;
210 
211  void OnTickEvent(TickEvent* event) override;
212  void OnCharacterInputEvent(CharacterInputEvent* event) override;
213  void OnKeyPressEvent(KeyPressEvent* event) override;
214 
223 
227  void LoadMenuRootPage();
228 
237  int GetIndexFromHotkeyCharacter(char hotkey);
238 
247  char GetHotkeyCharacterFromIndex(int index);
248 };
ui.h
BlamUIWidget_DebugMenu::Draw
void Draw() override
Draws the widget on-screen.
Definition: debug_menu.cpp:111
BlamUIWidget_DebugMenu::OnKeyPressEvent
void OnKeyPressEvent(KeyPressEvent *event) override
Definition: debug_menu.cpp:282
BlamUIWidget_DebugMenu::menu_item_size
BlamVector2 menu_item_size
The size of each debug menu item widget.
Definition: debug_menu.h:200
Blam::Animation::ColorTransitionAnimation
Animation used to handle an alternating fade between two colors.
Definition: ColorTransition.h:21
BlamUIWidget_Group
Class representing a Group widget.
Definition: ui.h:287
BlamUIWidget_DebugMenu_Item::ConfigureHotkeyText
void ConfigureHotkeyText(int index)
Reconfigures the widget's hotkey text based on its index.
Definition: debug_menu_item.cpp:312
BlamUIWidget_DebugMenu::GetAnimatedActiveItemBackground
BlamColor GetAnimatedActiveItemBackground()
Retrieves the animating active item background color.
Definition: debug_menu.cpp:542
BlamUIWidget_DebugMenu::cached_scale_factor
float cached_scale_factor
The current cached UI scale factor. Used to automatically scale the UI when the scale factor is chang...
Definition: debug_menu.h:199
BlamUIWidget_DebugMenu::RefreshRelativePosition
void RefreshRelativePosition() override
Updates the relative position of the widget, relative to its parent.
Definition: debug_menu.cpp:189
BlamUIWidget_DebugMenu_Item::UpdateMetrics
void UpdateMetrics() override
Updates metrics for the widget.
Definition: debug_menu_item.cpp:162
BlamUIWidget_DebugMenu_Item::Draw
void Draw() override
Draws the widget on-screen.
Definition: debug_menu_item.cpp:154
BlamUIWidget_DebugMenu_Item::SetHidden
void SetHidden(bool new_hidden) override
Sets the hidden state of the widget.
Definition: debug_menu_item.cpp:351
BlamUIWidget_DebugMenu_Item
Class used for a debug menu UI item.
Definition: debug_menu.h:19
debug_menu.h
BlamUIWidget_DebugMenu::LoadMenuRootPage
void LoadMenuRootPage()
Loads the default menu root page.
Definition: debug_menu.cpp:391
BlamUIWidget_DebugMenu_Item::SetIsHeader
void SetIsHeader()
Reconfigures the widget to display as a header, rather than a standard selectable item.
Definition: debug_menu_item.cpp:281
BlamUIWidget_DebugMenu::GetHotkeyCharacterFromIndex
char GetHotkeyCharacterFromIndex(int index)
Determines the hotkey character for an item at a given index.
Definition: debug_menu.cpp:558
BlamUIWidget_DebugMenu::OnTickEvent
void OnTickEvent(TickEvent *event) override
Definition: debug_menu.cpp:194
BlamUIWidget_DebugMenu_Item::SetMenuItem
void SetMenuItem(BlamDebugMenuItem *_menu_item)
Sets the debug menu item information associated with this widget.
Definition: debug_menu_item.cpp:292
BlamUIWidget_DebugMenu_Item::ShowImGuiPropertyEditor
void ShowImGuiPropertyEditor() override
Displays an ImGUI-based property editor.
Definition: debug_menu_item.cpp:249
BlamUIWidget_DebugMenu::UpdateMetrics
void UpdateMetrics() override
Updates metrics for the widget.
Definition: debug_menu.cpp:163
ColorTransition.h
BlamUIWidget_DebugMenu_Item::SetSize
void SetSize(float scale)
Sets the scale factor of the widget.
Definition: debug_menu_item.cpp:339
BlamDebugMenuItem
Class representing a debug menu item.
Definition: debug_menu.h:35
BlamUIWidget_BasicRectangle
Class representing a basic rectangle widget.
Definition: ui.h:469
BlamUIWidget
Base class for a UI widget.
Definition: ui.h:81
BlamUIWidget_DebugMenu
Class used for the Debug Menu UI.
Definition: debug_menu.h:122
BlamUIWidget_DebugMenu::BlamUIWidget_DebugMenu
BlamUIWidget_DebugMenu()
Definition: debug_menu.cpp:12
BlamUIWidget_VLayoutGroup
Class representing a Vertical Layout Group widget.
Definition: ui.h:345
BlamUIWidget_DebugMenu::ShowImGuiPropertyEditor
void ShowImGuiPropertyEditor() override
Displays an ImGUI-based property editor.
Definition: debug_menu.cpp:145
BlamUIWidget_DebugMenu_Item::SetActive
void SetActive(bool _active)
Definition: debug_menu_item.cpp:243
BlamUIWidget_DebugMenu_Item::IsHeader
bool IsHeader()
Checks whether or not the current item is a header or not.
Definition: debug_menu_item.cpp:287
BlamUIWidget_DebugMenu::OnCharacterInputEvent
void OnCharacterInputEvent(CharacterInputEvent *event) override
Definition: debug_menu.cpp:231
BlamUIWidget_DebugMenu::SetHidden
void SetHidden(bool new_hidden) override
Sets the hidden state of the widget.
Definition: debug_menu.cpp:534
BlamUIWidget_DebugMenu_Item::SetPosition
void SetPosition(BlamVector2 new_position) override
Sets the position of the widget.
Definition: debug_menu_item.cpp:333
BlamUIWidget_DebugMenu::GetIndexFromHotkeyCharacter
int GetIndexFromHotkeyCharacter(char hotkey)
Determines the index of a debug menu item based on a pressed hotkey.
Definition: debug_menu.cpp:547
BlamUIWidget_DebugMenu::~BlamUIWidget_DebugMenu
~BlamUIWidget_DebugMenu()
Definition: debug_menu.cpp:106
BlamUIWidget_DebugMenu_Item::BlamUIWidget_DebugMenu_Item
BlamUIWidget_DebugMenu_Item(BlamDebugMenuItem *_menu_item, BlamUIWidget_DebugMenu *_debug_menu_widget, BlamUIWidget_Group *parent_group)
Constructs a new debug menu item widget.
Definition: debug_menu_item.cpp:7
BlamUIWidget_Text
Class representing a Text widget.
Definition: ui.h:550