Mario Kart 64
Loading...
Searching...
No Matches
Menu.h
Go to the documentation of this file.
1#ifndef MENU_H
2#define MENU_H
3
4#include <libultraship/libultraship.h>
5#include "UIWidgets.h"
6#include "MenuTypes.h"
7
8extern "C" {
9#include "defines.h"
10#include "main.h"
11#include "menus.h"
12}
13
14namespace Ship {
15uint32_t GetVectorIndexOf(std::vector<std::string>& vector, std::string value);
16class Menu : public GuiWindow {
17 public:
18 using GuiWindow::GuiWindow;
19
20 Menu(const std::string& cVar, const std::string& name, uint8_t searchSidebarIndex_ = 0,
22 virtual ~Menu() {}
23
24 void InitElement() override;
25 void DrawElement() override;
26 void UpdateElement() override;
27 void Draw() override;
31
32 void MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors menuThemeIndex);
33 void AddMenuEntry(std::string entryName, const char* entryCvar);
34 std::unordered_map<uint32_t, disabledInfo>& GetDisabledMap();
35
36 protected:
38 std::string mName;
39 uint32_t mWindowFlags;
40 std::unordered_map<std::string, MainMenuEntry> menuEntries;
41 std::vector<std::string> menuOrder;
42 uint32_t DrawSearchResults(std::string& menuSearchText);
43 ImGuiTextFilter menuSearch;
46 std::shared_ptr<std::vector<Ship::WindowBackend>> availableWindowBackends;
47 std::unordered_map<Ship::WindowBackend, const char*> availableWindowBackendsMap;
48 Ship::WindowBackend configWindowBackend;
49
50 std::unordered_map<uint32_t, disabledInfo> disabledMap;
51 std::vector<disabledInfo> disabledVector;
53 .columnCount = 1,
54 .columnWidgets = { { { .name = "Sidebar Search",
55 .type = WIDGET_SEARCH,
56 .options = std::make_shared<UIWidgets::WidgetOptions>(UIWidgets::WidgetOptions{}.Tooltip(
57 "Searches all menus for the given text, including tooltips.")) } } }
58 };
59 virtual void ProcessReset() {
61 if (CVarGetInteger("gEnableDebugMode", 0) == true) {
63 } else {
65 }
66 }
67
68 private:
69 bool allowPopout = true; // PortNote: should be set to false on small screen ports
70 bool popped;
71 ImVec2 poppedSize;
72 ImVec2 poppedPos;
75};
76} // namespace Ship
77
78#endif // MENU_H
@ WIDGET_SEARCH
Definition MenuTypes.h:44
ImVec2 poppedSize
Definition Menu.h:71
void RemoveSidebarSearch()
Definition Menu.cpp:79
std::string mName
Definition Menu.h:38
void UpdateElement() override
Definition Menu.cpp:122
void MenuDrawItem(WidgetInfo &widget, uint32_t width, UIWidgets::Colors menuThemeIndex)
Definition Menu.cpp:219
virtual ~Menu()
Definition Menu.h:22
Ship::WindowBackend configWindowBackend
Definition Menu.h:48
UIWidgets::Colors defaultThemeIndex
Definition Menu.h:45
uint8_t searchSidebarIndex
Definition Menu.h:44
bool allowPopout
Definition Menu.h:69
void InsertSidebarSearch()
Definition Menu.cpp:65
std::vector< std::string > menuOrder
Definition Menu.h:41
void UpdateWindowBackendObjects()
Definition Menu.cpp:92
std::unordered_map< uint32_t, disabledInfo > disabledMap
Definition Menu.h:50
std::unordered_map< uint32_t, disabledInfo > & GetDisabledMap()
Definition Menu.cpp:215
std::unordered_map< std::string, MainMenuEntry > menuEntries
Definition Menu.h:40
uint32_t DrawSearchResults(std::string &menuSearchText)
Definition Menu.cpp:173
float windowWidth
Definition Menu.h:74
void InitElement() override
Definition Menu.cpp:112
void Draw() override
Definition Menu.cpp:466
float windowHeight
Definition Menu.h:73
void AddMenuEntry(std::string entryName, const char *entryCvar)
Definition Menu.cpp:210
ImVec2 poppedPos
Definition Menu.h:72
const SidebarEntry searchSidebarEntry
Definition Menu.h:52
uint32_t mWindowFlags
Definition Menu.h:39
std::unordered_map< Ship::WindowBackend, const char * > availableWindowBackendsMap
Definition Menu.h:47
bool popped
Definition Menu.h:70
std::shared_ptr< std::vector< Ship::WindowBackend > > availableWindowBackends
Definition Menu.h:46
Menu(const std::string &cVar, const std::string &name, uint8_t searchSidebarIndex_=0, UIWidgets::Colors menuThemeIndex_=UIWidgets::Colors::LightBlue)
Definition Menu.cpp:107
std::vector< disabledInfo > disabledVector
Definition Menu.h:51
virtual void ProcessReset()
Definition Menu.h:59
void DrawElement() override
Definition Menu.cpp:475
ImGuiTextFilter menuSearch
Definition Menu.h:43
ImVec2 mOriginalSize
Definition Menu.h:37
#define START_MENU
Definition defines.h:180
#define LOGO_INTRO_MENU
Definition defines.h:178
#define MAIN_MENU_FROM_QUIT
Definition defines.h:191
s32 gGamestateNext
Definition main.c:187
s32 gMenuSelection
Definition menus.c:62
Definition SpaghettiGui.cpp:43
uint32_t GetVectorIndexOf(std::vector< std::string > &vector, std::string value)
Definition Menu.cpp:61
Colors
Definition UIWidgets.h:40
@ LightBlue
Definition UIWidgets.h:46
Definition MenuTypes.h:242
Definition UIWidgets.h:107
WidgetOptions & Tooltip(const char *tooltip_)
Definition UIWidgets.h:117
Definition MenuTypes.h:103