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 "src/port/Game.h"
9
10extern "C" {
11#include "defines.h"
12#include "main.h"
13#include "menus.h"
14#include "code_800029B0.h"
15#include "external.h"
16}
17
18namespace Ship {
19uint32_t GetVectorIndexOf(std::vector<std::string>& vector, std::string value);
20class Menu : public GuiWindow {
21 public:
22 using GuiWindow::GuiWindow;
23
24 Menu(const std::string& cVar, const std::string& name, uint8_t searchSidebarIndex_ = 0,
26 virtual ~Menu() {}
27
28 void InitElement() override;
29 void DrawElement() override;
30 void UpdateElement() override;
31 void Draw() override;
35
36 void MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors menuThemeIndex);
37 void AddMenuEntry(std::string entryName, const char* entryCvar);
38 std::unordered_map<uint32_t, disabledInfo>& GetDisabledMap();
39
40 protected:
42 std::string mName;
43 uint32_t mWindowFlags;
44 std::unordered_map<std::string, MainMenuEntry> menuEntries;
45 std::vector<std::string> menuOrder;
46 uint32_t DrawSearchResults(std::string& menuSearchText);
47 ImGuiTextFilter menuSearch;
50 std::shared_ptr<std::vector<Ship::WindowBackend>> availableWindowBackends;
51 std::unordered_map<Ship::WindowBackend, const char*> availableWindowBackendsMap;
52 Ship::WindowBackend configWindowBackend;
53
54 std::unordered_map<uint32_t, disabledInfo> disabledMap;
55 std::vector<disabledInfo> disabledVector;
57 .columnCount = 1,
58 .columnWidgets = { { { .name = "Sidebar Search",
59 .type = WIDGET_SEARCH,
60 .options = std::make_shared<UIWidgets::WidgetOptions>(UIWidgets::WidgetOptions{}.Tooltip(
61 "Searches all menus for the given text, including tooltips.")) } } }
62 };
63 virtual void ProcessReset() {
65 gIsGamePaused = 0;
66 // Reset credits
67 D_800DC5E4 = 0;
68 gTourComplete = false;
70 memset(&gGameModeMenuColumn, 0, sizeof(s8) * NUM_ROWS_GAME_MODE_MENU);
72
74
75 switch(CVarGetInteger("gSkipIntro", 0)) {
76 case 0:
78 break;
79 case 1:
81 break;
82 case 2:
84 break;
85 case 3:
87 break;
88 }
89
90 // Debug mode override gSkipIntro
91 if (CVarGetInteger("gEnableDebugMode", 0) == true) {
93 } else {
95 }
96 }
97
98 private:
99 bool allowPopout = true; // PortNote: should be set to false on small screen ports
100 bool popped;
102 ImVec2 poppedPos;
103 float uiScale = 1.0f;
106};
107} // namespace Ship
108
109#endif // MENU_H
void CM_ResetAudio(void)
Definition Game.cpp:917
void SetMarioRaceway(void)
Definition Game.cpp:177
@ WIDGET_SEARCH
Definition MenuTypes.h:44
ImVec2 poppedSize
Definition Menu.h:101
void RemoveSidebarSearch()
Definition Menu.cpp:79
std::string mName
Definition Menu.h:42
void UpdateElement() override
Definition Menu.cpp:122
float uiScale
Definition Menu.h:103
void MenuDrawItem(WidgetInfo &widget, uint32_t width, UIWidgets::Colors menuThemeIndex)
Definition Menu.cpp:219
virtual ~Menu()
Definition Menu.h:26
Ship::WindowBackend configWindowBackend
Definition Menu.h:52
UIWidgets::Colors defaultThemeIndex
Definition Menu.h:49
uint8_t searchSidebarIndex
Definition Menu.h:48
bool allowPopout
Definition Menu.h:99
void InsertSidebarSearch()
Definition Menu.cpp:65
std::vector< std::string > menuOrder
Definition Menu.h:45
void UpdateWindowBackendObjects()
Definition Menu.cpp:92
std::unordered_map< uint32_t, disabledInfo > disabledMap
Definition Menu.h:54
std::unordered_map< uint32_t, disabledInfo > & GetDisabledMap()
Definition Menu.cpp:215
std::unordered_map< std::string, MainMenuEntry > menuEntries
Definition Menu.h:44
uint32_t DrawSearchResults(std::string &menuSearchText)
Definition Menu.cpp:173
float windowWidth
Definition Menu.h:105
void InitElement() override
Definition Menu.cpp:112
void Draw() override
Definition Menu.cpp:466
float windowHeight
Definition Menu.h:104
void AddMenuEntry(std::string entryName, const char *entryCvar)
Definition Menu.cpp:210
ImVec2 poppedPos
Definition Menu.h:102
const SidebarEntry searchSidebarEntry
Definition Menu.h:56
uint32_t mWindowFlags
Definition Menu.h:43
std::unordered_map< Ship::WindowBackend, const char * > availableWindowBackendsMap
Definition Menu.h:51
bool popped
Definition Menu.h:100
std::shared_ptr< std::vector< Ship::WindowBackend > > availableWindowBackends
Definition Menu.h:50
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:55
virtual void ProcessReset()
Definition Menu.h:63
void DrawElement() override
Definition Menu.cpp:475
ImGuiTextFilter menuSearch
Definition Menu.h:47
ImVec2 mOriginalSize
Definition Menu.h:41
u16 gIsGamePaused
Definition code_800029B0.c:63
u16 D_800DC5E4
Definition code_800029B0.c:53
#define START_MENU
Definition defines.h:210
#define LOGO_INTRO_MENU
Definition defines.h:208
#define MAIN_MENU
Definition defines.h:211
#define MAIN_MENU_FROM_QUIT
Definition defines.h:221
#define HARBOUR_MASTERS_MENU
Definition defines.h:215
bool gTourComplete
Definition main.c:180
s32 gGamestateNext
Definition main.c:174
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:112
WidgetOptions & Tooltip(const char *tooltip_)
Definition UIWidgets.h:122
Definition MenuTypes.h:103