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#include "../port/Game.h"
8
9extern "C" {
10#include "defines.h"
11#include "main.h"
12#include "menus.h"
13#include "code_800029B0.h"
14}
15
16namespace Ship {
17uint32_t GetVectorIndexOf(std::vector<std::string>& vector, std::string value);
18class Menu : public GuiWindow {
19 public:
20 using GuiWindow::GuiWindow;
21
22 Menu(const std::string& cVar, const std::string& name, uint8_t searchSidebarIndex_ = 0,
24 virtual ~Menu() {}
25
26 void InitElement() override;
27 void DrawElement() override;
28 void UpdateElement() override;
29 void Draw() override;
33
34 void MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors menuThemeIndex);
35 void AddMenuEntry(std::string entryName, const char* entryCvar);
36 std::unordered_map<uint32_t, disabledInfo>& GetDisabledMap();
37
38 protected:
40 std::string mName;
41 uint32_t mWindowFlags;
42 std::unordered_map<std::string, MainMenuEntry> menuEntries;
43 std::vector<std::string> menuOrder;
44 uint32_t DrawSearchResults(std::string& menuSearchText);
45 ImGuiTextFilter menuSearch;
48 std::shared_ptr<std::vector<Ship::WindowBackend>> availableWindowBackends;
49 std::unordered_map<Ship::WindowBackend, const char*> availableWindowBackendsMap;
50 Ship::WindowBackend configWindowBackend;
51
52 std::unordered_map<uint32_t, disabledInfo> disabledMap;
53 std::vector<disabledInfo> disabledVector;
55 .columnCount = 1,
56 .columnWidgets = { { { .name = "Sidebar Search",
57 .type = WIDGET_SEARCH,
58 .options = std::make_shared<UIWidgets::WidgetOptions>(UIWidgets::WidgetOptions{}.Tooltip(
59 "Searches all menus for the given text, including tooltips.")) } } }
60 };
61 virtual void ProcessReset() {
63 gIsGamePaused = 0;
65 memset(&gGameModeMenuColumn, 0, sizeof(s8) * NUM_ROWS_GAME_MODE_MENU);
67
68 switch(CVarGetInteger("gSkipIntro", 0)) {
69 case 0:
71 break;
72 case 1:
74 break;
75 case 2:
77 break;
78 case 3:
80 break;
81 }
82
83 // Debug mode override gSkipIntro
84 if (CVarGetInteger("gEnableDebugMode", 0) == true) {
86 } else {
88 }
89 }
90
91 private:
92 bool allowPopout = true; // PortNote: should be set to false on small screen ports
93 bool popped;
94 ImVec2 poppedSize;
95 ImVec2 poppedPos;
98};
99} // namespace Ship
100
101#endif // MENU_H
void SetMarioRaceway(void)
Definition Game.cpp:200
@ WIDGET_SEARCH
Definition MenuTypes.h:44
ImVec2 poppedSize
Definition Menu.h:94
void RemoveSidebarSearch()
Definition Menu.cpp:79
std::string mName
Definition Menu.h:40
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:24
Ship::WindowBackend configWindowBackend
Definition Menu.h:50
UIWidgets::Colors defaultThemeIndex
Definition Menu.h:47
uint8_t searchSidebarIndex
Definition Menu.h:46
bool allowPopout
Definition Menu.h:92
void InsertSidebarSearch()
Definition Menu.cpp:65
std::vector< std::string > menuOrder
Definition Menu.h:43
void UpdateWindowBackendObjects()
Definition Menu.cpp:92
std::unordered_map< uint32_t, disabledInfo > disabledMap
Definition Menu.h:52
std::unordered_map< uint32_t, disabledInfo > & GetDisabledMap()
Definition Menu.cpp:215
std::unordered_map< std::string, MainMenuEntry > menuEntries
Definition Menu.h:42
uint32_t DrawSearchResults(std::string &menuSearchText)
Definition Menu.cpp:173
float windowWidth
Definition Menu.h:97
void InitElement() override
Definition Menu.cpp:112
void Draw() override
Definition Menu.cpp:466
float windowHeight
Definition Menu.h:96
void AddMenuEntry(std::string entryName, const char *entryCvar)
Definition Menu.cpp:210
ImVec2 poppedPos
Definition Menu.h:95
const SidebarEntry searchSidebarEntry
Definition Menu.h:54
uint32_t mWindowFlags
Definition Menu.h:41
std::unordered_map< Ship::WindowBackend, const char * > availableWindowBackendsMap
Definition Menu.h:49
bool popped
Definition Menu.h:93
std::shared_ptr< std::vector< Ship::WindowBackend > > availableWindowBackends
Definition Menu.h:48
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:53
virtual void ProcessReset()
Definition Menu.h:61
void DrawElement() override
Definition Menu.cpp:475
ImGuiTextFilter menuSearch
Definition Menu.h:45
ImVec2 mOriginalSize
Definition Menu.h:39
u16 gIsGamePaused
Definition code_800029B0.c:63
#define START_MENU
Definition defines.h:201
#define LOGO_INTRO_MENU
Definition defines.h:199
#define MAIN_MENU
Definition defines.h:202
#define MAIN_MENU_FROM_QUIT
Definition defines.h:212
#define HARBOUR_MASTERS_MENU
Definition defines.h:206
s32 gGamestateNext
Definition main.c:179
s32 gMenuSelection
Definition menus.c:63
s8 gGameModeSubMenuColumn[NUM_COLUMN_GAME_MODE_SUB_MENU][NUM_ROWS_GAME_MODE_SUB_MENU]
Definition menus.c:74
s8 gGameModeMenuColumn[NUM_ROWS_GAME_MODE_MENU]
Definition menus.c:69
#define NUM_ROWS_GAME_MODE_SUB_MENU
Definition menus.h:195
#define NUM_ROWS_GAME_MODE_MENU
Definition menus.h:193
#define NUM_COLUMN_GAME_MODE_SUB_MENU
Definition menus.h:194
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