Elaztek Developer Hub
Blamite Game Engine - blam!  00398.09.22.23.2015.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  BlamUIWidget_Text* hotkey_text = nullptr; // starts displaying at 11 a to z
26 
27  BlamUIWidget_DebugMenu* debug_menu_widget = nullptr;
28  BlamDebugMenuItem menu_item;
29 
30  BlamVector2 value_bg_size = { 60, 13 };
31  int property_spacing = 5;
32 
33  bool active = false;
34  bool is_header = false;
35  bool legacy_global_display = false;
36 
37  void UpdateGlobalValueDisplay();
38  void UpdateActiveBackgroundColor();
39 
40 public:
41  BlamUIWidget_DebugMenu_Item(BlamDebugMenuItem _menu_item, BlamUIWidget_DebugMenu* _debug_menu_widget, BlamUIWidget_Group* parent_group);
42  BlamUIWidget_DebugMenu_Item(std::string header_title, BlamUIWidget_DebugMenu* _debug_menu_widget, BlamUIWidget_Group* parent_group);
43 
44  void Draw() override;
45  void UpdateMetrics() override;
46  void SetActive(bool _active);
47  void ShowImGuiPropertyEditor() override;
48  void SetHidden(bool new_hidden) override;
49 
50  void SetIsHeader();
51  bool IsHeader();
52  void SetMenuItem(BlamDebugMenuItem _menu_item);
53  void ConfigureHotkeyText(int index);
54 
55  void SetPosition(BlamVector2 new_position) override;
56  void SetSize(float scale);
57 };
58 
62 class BlamUIWidget_DebugMenu : public BlamUIWidget, public BlamEventListener
63 {
64 private:
65  BlamUIWidget_VLayoutGroup* items_container = nullptr;
66  BlamUIWidget_Group* items_container_persistent = nullptr;
67 
68  BlamUIWidget_Text* arrow_up = nullptr;
69  BlamUIWidget_Text* arrow_up_stem = nullptr;
70  BlamUIWidget_Text* arrow_down = nullptr;
71  BlamUIWidget_Text* arrow_down_stem = nullptr;
72 
73  BlamUIWidget_BasicRectangle* background = nullptr;
74  std::string page_title = "Main";
75  std::vector<BlamDebugMenuItem> items = std::vector<BlamDebugMenuItem>();
76 
77  bool needs_page_switch = false;
78  int active_index = 0;
79  int scroll_offset = 0;
80 
81  bool scrolling_down = false;
82  bool scroll_animating = false;
83  bool scroll_step_drawn = false;
84 
85  BlamVector2 menu_size = { 479, 242 };
86  BlamVector2 menu_origin = { 50, 112 };
87 
88  BlamVector3 content_margins = { 2, 70, 3 };
89  int item_spacing = 5;
90  int max_items_visible = 12; //displays 26 in h3, 12 in h2v
92 
93  void LoadMenuPage(BlamDebugMenuItem page_item);
94  void LoadMenuRootPage();
95  void GenerateItemsUI();
96  void UpdateActiveItem();
97 
98  BlamDebugMenuItem GetActiveItem();
99  void UpdateActiveItem(BlamDebugMenuItem new_item);
100 
101 public:
102  float cached_scale_factor = 1.0f;
103  BlamVector2 menu_item_size = { 399 , 13 };
104 
107 
108  void Draw() override;
109  void ShowImGuiPropertyEditor() override;
110  void UpdateMetrics() override;
111  void RefreshRelativePosition() override;
112  void SetHidden(bool new_hidden) override;
113 
114  void OnTickEvent(TickEvent* event) override;
115  void OnCharacterInputEvent(CharacterInputEvent* event) override;
116  void OnKeyPressEvent(KeyPressEvent* event) override;
117 
119 
120  int GetIndexFromHotkeyCharacter(char hotkey);
121  char GetHotkeyCharacterFromIndex(int index);
122 };
ui.h
BlamUIWidget_DebugMenu::Draw
void Draw() override
Definition: debug_menu.cpp:104
BlamUIWidget_DebugMenu::OnKeyPressEvent
void OnKeyPressEvent(KeyPressEvent *event) override
Definition: debug_menu.cpp:275
BlamUIWidget_DebugMenu::menu_item_size
BlamVector2 menu_item_size
Definition: debug_menu.h:103
Blam::Animation::ColorTransitionAnimation
Animation used to handle an alternating fade between two colors.
Definition: ColorTransition.h:24
BlamUIWidget_Group
Definition: ui.h:141
BlamUIWidget_DebugMenu_Item::ConfigureHotkeyText
void ConfigureHotkeyText(int index)
Definition: debug_menu_item.cpp:302
BlamUIWidget_DebugMenu::GetAnimatedActiveItemBackground
BlamColor GetAnimatedActiveItemBackground()
Definition: debug_menu.cpp:533
BlamUIWidget_DebugMenu::cached_scale_factor
float cached_scale_factor
Definition: debug_menu.h:102
BlamUIWidget_DebugMenu::RefreshRelativePosition
void RefreshRelativePosition() override
Definition: debug_menu.cpp:182
BlamUIWidget_DebugMenu_Item::UpdateMetrics
void UpdateMetrics() override
Definition: debug_menu_item.cpp:154
BlamUIWidget_DebugMenu_Item::Draw
void Draw() override
Definition: debug_menu_item.cpp:141
BlamUIWidget_DebugMenu_Item::SetHidden
void SetHidden(bool new_hidden) override
Definition: debug_menu_item.cpp:341
BlamUIWidget_DebugMenu_Item
Definition: debug_menu.h:16
BlamUIWidget_DebugMenu_Item::SetMenuItem
void SetMenuItem(BlamDebugMenuItem _menu_item)
Definition: debug_menu_item.cpp:282
debug_menu.h
BlamUIWidget_DebugMenu_Item::SetIsHeader
void SetIsHeader()
Definition: debug_menu_item.cpp:271
BlamUIWidget_DebugMenu::GetHotkeyCharacterFromIndex
char GetHotkeyCharacterFromIndex(int index)
Definition: debug_menu.cpp:550
BlamUIWidget_DebugMenu::OnTickEvent
void OnTickEvent(TickEvent *event) override
Definition: debug_menu.cpp:187
BlamUIWidget_DebugMenu_Item::ShowImGuiPropertyEditor
void ShowImGuiPropertyEditor() override
Definition: debug_menu_item.cpp:239
BlamUIWidget_DebugMenu::UpdateMetrics
void UpdateMetrics() override
Definition: debug_menu.cpp:154
ColorTransition.h
BlamUIWidget_DebugMenu_Item::SetSize
void SetSize(float scale)
Definition: debug_menu_item.cpp:329
BlamDebugMenuItem
Class used to store data and functions relating to an item within the engine's debug menu.
Definition: debug_menu.h:49
BlamUIWidget_BasicRectangle
Definition: ui.h:184
BlamUIWidget
Definition: ui.h:82
BlamUIWidget_DebugMenu
Definition: debug_menu.h:62
BlamUIWidget_DebugMenu::BlamUIWidget_DebugMenu
BlamUIWidget_DebugMenu()
Definition: debug_menu.cpp:12
BlamUIWidget_VLayoutGroup
Definition: ui.h:166
BlamUIWidget_DebugMenu::ShowImGuiPropertyEditor
void ShowImGuiPropertyEditor() override
Definition: debug_menu.cpp:136
BlamUIWidget_DebugMenu_Item::SetActive
void SetActive(bool _active)
Definition: debug_menu_item.cpp:233
BlamUIWidget_DebugMenu_Item::IsHeader
bool IsHeader()
Definition: debug_menu_item.cpp:277
BlamUIWidget_DebugMenu::OnCharacterInputEvent
void OnCharacterInputEvent(CharacterInputEvent *event) override
Definition: debug_menu.cpp:224
BlamUIWidget_DebugMenu_Item::BlamUIWidget_DebugMenu_Item
BlamUIWidget_DebugMenu_Item(BlamDebugMenuItem _menu_item, BlamUIWidget_DebugMenu *_debug_menu_widget, BlamUIWidget_Group *parent_group)
Definition: debug_menu_item.cpp:7
BlamUIWidget_DebugMenu::SetHidden
void SetHidden(bool new_hidden) override
Definition: debug_menu.cpp:525
BlamUIWidget_DebugMenu_Item::SetPosition
void SetPosition(BlamVector2 new_position) override
Definition: debug_menu_item.cpp:323
BlamUIWidget_DebugMenu::GetIndexFromHotkeyCharacter
int GetIndexFromHotkeyCharacter(char hotkey)
Definition: debug_menu.cpp:539
BlamUIWidget_DebugMenu::~BlamUIWidget_DebugMenu
~BlamUIWidget_DebugMenu()
Definition: debug_menu.cpp:99
BlamUIWidget_Text
Definition: ui.h:293