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#include "code_800029B0.h"
13}
14
15namespace Ship {
16uint32_t GetVectorIndexOf(std::vector<std::string>& vector, std::string value);
17class Menu : public GuiWindow {
18 public:
19 using GuiWindow::GuiWindow;
20
21 Menu(const std::string& cVar, const std::string& name, uint8_t searchSidebarIndex_ = 0,
23 virtual ~Menu() {}
24
25 void InitElement() override;
26 void DrawElement() override;
27 void UpdateElement() override;
28 void Draw() override;
32
33 void MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors menuThemeIndex);
34 void AddMenuEntry(std::string entryName, const char* entryCvar);
35 std::unordered_map<uint32_t, disabledInfo>& GetDisabledMap();
36
37 protected:
39 std::string mName;
40 uint32_t mWindowFlags;
41 std::unordered_map<std::string, MainMenuEntry> menuEntries;
42 std::vector<std::string> menuOrder;
43 uint32_t DrawSearchResults(std::string& menuSearchText);
44 ImGuiTextFilter menuSearch;
47 std::shared_ptr<std::vector<Ship::WindowBackend>> availableWindowBackends;
48 std::unordered_map<Ship::WindowBackend, const char*> availableWindowBackendsMap;
49 Ship::WindowBackend configWindowBackend;
50
51 std::unordered_map<uint32_t, disabledInfo> disabledMap;
52 std::vector<disabledInfo> disabledVector;
54 .columnCount = 1,
55 .columnWidgets = { { { .name = "Sidebar Search",
56 .type = WIDGET_SEARCH,
57 .options = std::make_shared<UIWidgets::WidgetOptions>(UIWidgets::WidgetOptions{}.Tooltip(
58 "Searches all menus for the given text, including tooltips.")) } } }
59 };
60 virtual void ProcessReset() {
62 gIsGamePaused = 0;
63 if (CVarGetInteger("gEnableDebugMode", 0) == true) {
65 } else {
67 }
68 }
69
70 private:
71 bool allowPopout = true; // PortNote: should be set to false on small screen ports
72 bool popped;
73 ImVec2 poppedSize;
74 ImVec2 poppedPos;
77};
78} // namespace Ship
79
80#endif // MENU_H
@ WIDGET_SEARCH
Definition MenuTypes.h:44
ImVec2 poppedSize
Definition Menu.h:73
void RemoveSidebarSearch()
Definition Menu.cpp:79
std::string mName
Definition Menu.h:39
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:23
Ship::WindowBackend configWindowBackend
Definition Menu.h:49
UIWidgets::Colors defaultThemeIndex
Definition Menu.h:46
uint8_t searchSidebarIndex
Definition Menu.h:45
bool allowPopout
Definition Menu.h:71
void InsertSidebarSearch()
Definition Menu.cpp:65
std::vector< std::string > menuOrder
Definition Menu.h:42
void UpdateWindowBackendObjects()
Definition Menu.cpp:92
std::unordered_map< uint32_t, disabledInfo > disabledMap
Definition Menu.h:51
std::unordered_map< uint32_t, disabledInfo > & GetDisabledMap()
Definition Menu.cpp:215
std::unordered_map< std::string, MainMenuEntry > menuEntries
Definition Menu.h:41
uint32_t DrawSearchResults(std::string &menuSearchText)
Definition Menu.cpp:173
float windowWidth
Definition Menu.h:76
void InitElement() override
Definition Menu.cpp:112
void Draw() override
Definition Menu.cpp:466
float windowHeight
Definition Menu.h:75
void AddMenuEntry(std::string entryName, const char *entryCvar)
Definition Menu.cpp:210
ImVec2 poppedPos
Definition Menu.h:74
const SidebarEntry searchSidebarEntry
Definition Menu.h:53
uint32_t mWindowFlags
Definition Menu.h:40
std::unordered_map< Ship::WindowBackend, const char * > availableWindowBackendsMap
Definition Menu.h:48
bool popped
Definition Menu.h:72
std::shared_ptr< std::vector< Ship::WindowBackend > > availableWindowBackends
Definition Menu.h:47
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:52
virtual void ProcessReset()
Definition Menu.h:60
void DrawElement() override
Definition Menu.cpp:475
ImGuiTextFilter menuSearch
Definition Menu.h:44
ImVec2 mOriginalSize
Definition Menu.h:38
u16 gIsGamePaused
Definition code_800029B0.c:63
#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