Elaztek Developer Hub
Blamite Game Engine - blam!  00406.12.10.23.1457.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 
12 
17 {
18 private:
19  BlamUIWidget_BasicRectangle* value_bg = nullptr;
20  BlamUIWidget_BasicRectangle* name_bg = nullptr;
21  BlamUIWidget_Text* value_text = nullptr;
22  BlamUIWidget_Text* name_text = nullptr;
23 
24  BlamUIWidget_Text* index_text = nullptr;
25 
29  BlamUIWidget_Text* hotkey_text = nullptr;
30 
31  BlamUIWidget_DebugMenu* debug_menu_widget = nullptr;
32  BlamDebugMenuItem menu_item;
33 
34  BlamVector2 value_bg_size = { 60, 13 };
35  int property_spacing = 5;
36 
37  bool active = false;
38  bool is_header = false;
39  bool legacy_global_display = false;
40 
44  void UpdateGlobalValueDisplay();
45 
49  void UpdateActiveBackgroundColor();
50 
51 public:
52 
60  BlamUIWidget_DebugMenu_Item(BlamDebugMenuItem _menu_item, BlamUIWidget_DebugMenu* _debug_menu_widget, BlamUIWidget_Group* parent_group);
61 
69  BlamUIWidget_DebugMenu_Item(std::string header_title, BlamUIWidget_DebugMenu* _debug_menu_widget, BlamUIWidget_Group* parent_group);
70 
71  void Draw() override;
72  void UpdateMetrics() override;
73  void SetActive(bool _active);
74  void ShowImGuiPropertyEditor() override;
75  void SetHidden(bool new_hidden) override;
76  void SetPosition(BlamVector2 new_position) override;
77 
81  void SetIsHeader();
82 
88  bool IsHeader();
89 
95  void SetMenuItem(BlamDebugMenuItem _menu_item);
96 
105  void ConfigureHotkeyText(int index);
106 
110  void SetSize(float scale);
111 };
112 
119 class BlamUIWidget_DebugMenu : public BlamUIWidget, public BlamEventListener
120 {
121 private:
122  BlamUIWidget_VLayoutGroup* items_container = nullptr;
123 
127  BlamUIWidget_Group* items_container_persistent = nullptr;
128 
129  BlamUIWidget_Text* arrow_up = nullptr;
130  BlamUIWidget_Text* arrow_up_stem = nullptr;
131  BlamUIWidget_Text* arrow_down = nullptr;
132  BlamUIWidget_Text* arrow_down_stem = nullptr;
133 
134  BlamUIWidget_BasicRectangle* background = nullptr;
135  std::string page_title = "Main";
136  std::vector<BlamDebugMenuItem> items = std::vector<BlamDebugMenuItem>();
137 
138  bool needs_page_switch = false;
139 
143  int active_index = 0;
144  int scroll_offset = 0;
145 
146  bool scrolling_down = false;
147  bool scroll_animating = false;
148  bool scroll_step_drawn = false;
149 
150  BlamVector2 menu_size = { 479, 242 };
151  BlamVector2 menu_origin = { 50, 112 };
152 
153  BlamVector3 content_margins = { 2, 70, 3 };
154  int item_spacing = 5;
155  int max_items_visible = 12;
157 
163  void LoadMenuPage(BlamDebugMenuItem page_item);
164 
168  void GenerateItemsUI();
169 
176  void UpdateActiveItem();
177 
186  void SetActiveItemInfo(BlamDebugMenuItem new_item);
187 
193  BlamDebugMenuItem GetActiveItem();
194 
195 public:
196  float cached_scale_factor = 1.0f;
197  BlamVector2 menu_item_size = { 399 , 13 };
198 
201 
202  void Draw() override;
203  void ShowImGuiPropertyEditor() override;
204  void UpdateMetrics() override;
205  void RefreshRelativePosition() override;
206  void SetHidden(bool new_hidden) override;
207 
208  void OnTickEvent(TickEvent* event) override;
209  void OnCharacterInputEvent(CharacterInputEvent* event) override;
210  void OnKeyPressEvent(KeyPressEvent* event) override;
211 
220 
224  void LoadMenuRootPage();
225 
234  int GetIndexFromHotkeyCharacter(char hotkey);
235 
244  char GetHotkeyCharacterFromIndex(int index);
245 };
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:197
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:263
BlamUIWidget_DebugMenu_Item::ConfigureHotkeyText
void ConfigureHotkeyText(int index)
Reconfigures the widget's hotkey text based on its index.
Definition: debug_menu_item.cpp:313
BlamUIWidget_DebugMenu::GetAnimatedActiveItemBackground
BlamColor GetAnimatedActiveItemBackground()
Retrieves the animating active item background color.
Definition: debug_menu.cpp:540
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:196
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:165
BlamUIWidget_DebugMenu_Item::Draw
void Draw() override
Draws the widget on-screen.
Definition: debug_menu_item.cpp:152
BlamUIWidget_DebugMenu_Item::SetHidden
void SetHidden(bool new_hidden) override
Sets the hidden state of the widget.
Definition: debug_menu_item.cpp:352
BlamUIWidget_DebugMenu_Item
Class used for a debug menu UI item.
Definition: debug_menu.h:16
BlamUIWidget_DebugMenu_Item::SetMenuItem
void SetMenuItem(BlamDebugMenuItem _menu_item)
Sets the debug menu item information associated with this widget.
Definition: debug_menu_item.cpp:293
debug_menu.h
BlamUIWidget_DebugMenu::LoadMenuRootPage
void LoadMenuRootPage()
Loads the default menu root page.
Definition: debug_menu.cpp:389
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:282
BlamUIWidget_DebugMenu::GetHotkeyCharacterFromIndex
char GetHotkeyCharacterFromIndex(int index)
Determines the hotkey character for an item at a given index.
Definition: debug_menu.cpp:556
BlamUIWidget_DebugMenu::OnTickEvent
void OnTickEvent(TickEvent *event) override
Definition: debug_menu.cpp:194
BlamUIWidget_DebugMenu_Item::ShowImGuiPropertyEditor
void ShowImGuiPropertyEditor() override
Displays an ImGUI-based property editor.
Definition: debug_menu_item.cpp:250
BlamUIWidget_DebugMenu::UpdateMetrics
void UpdateMetrics() override
Updates metrics for the widget.
Definition: debug_menu.cpp:161
ColorTransition.h
BlamUIWidget_DebugMenu_Item::SetSize
void SetSize(float scale)
Sets the scale factor of the widget.
Definition: debug_menu_item.cpp:340
BlamDebugMenuItem
Class used to store data and functions relating to an item within the engine's debug menu.
Definition: debug_menu.h:37
BlamUIWidget_BasicRectangle
Class representing a basic rectangle widget.
Definition: ui.h:402
BlamUIWidget
Base class for a UI widget.
Definition: ui.h:87
BlamUIWidget_DebugMenu
Class used for the Debug Menu UI.
Definition: debug_menu.h:119
BlamUIWidget_DebugMenu::BlamUIWidget_DebugMenu
BlamUIWidget_DebugMenu()
Definition: debug_menu.cpp:12
BlamUIWidget_VLayoutGroup
Class representing a Vertical Layout Group widget.
Definition: ui.h:313
BlamUIWidget_DebugMenu::ShowImGuiPropertyEditor
void ShowImGuiPropertyEditor() override
Displays an ImGUI-based property editor.
Definition: debug_menu.cpp:143
BlamUIWidget_DebugMenu_Item::SetActive
void SetActive(bool _active)
Definition: debug_menu_item.cpp:244
BlamUIWidget_DebugMenu_Item::IsHeader
bool IsHeader()
Checks whether or not the current item is a header or not.
Definition: debug_menu_item.cpp:288
BlamUIWidget_DebugMenu::OnCharacterInputEvent
void OnCharacterInputEvent(CharacterInputEvent *event) override
Definition: debug_menu.cpp:231
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_DebugMenu::SetHidden
void SetHidden(bool new_hidden) override
Sets the hidden state of the widget.
Definition: debug_menu.cpp:532
BlamUIWidget_DebugMenu_Item::SetPosition
void SetPosition(BlamVector2 new_position) override
Sets the position of the widget.
Definition: debug_menu_item.cpp:334
BlamUIWidget_DebugMenu::GetIndexFromHotkeyCharacter
int GetIndexFromHotkeyCharacter(char hotkey)
Determines the index of a debug menu item based on a pressed hotkey.
Definition: debug_menu.cpp:545
BlamUIWidget_DebugMenu::~BlamUIWidget_DebugMenu
~BlamUIWidget_DebugMenu()
Definition: debug_menu.cpp:106
BlamUIWidget_Text
Class representing a Text widget.
Definition: ui.h:483