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"
10
11extern "C" {
12#include "defines.h"
13#include "main.h"
14#include "menus.h"
15#include "code_800029B0.h"
16#include "external.h"
17}
18
19namespace Ship {
20uint32_t GetVectorIndexOf(std::vector<std::string>& vector, std::string value);
21class Menu : public GuiWindow {
22 public:
23 using GuiWindow::GuiWindow;
24
25 Menu(const std::string& cVar, const std::string& name, uint8_t searchSidebarIndex_ = 0,
27 virtual ~Menu() {}
28
29 void InitElement() override;
30 void DrawElement() override;
31 void UpdateElement() override;
32 void Draw() override;
36
37 void MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors menuThemeIndex);
38 void AddMenuEntry(std::string entryName, const char* entryCvar);
39 std::unordered_map<uint32_t, disabledInfo>& GetDisabledMap();
40
41 protected:
43 std::string mName;
44 uint32_t mWindowFlags;
45 std::unordered_map<std::string, MainMenuEntry> menuEntries;
46 std::vector<std::string> menuOrder;
47 uint32_t DrawSearchResults(std::string& menuSearchText);
48 ImGuiTextFilter menuSearch;
51 std::shared_ptr<std::vector<Ship::WindowBackend>> availableWindowBackends;
52 std::unordered_map<Ship::WindowBackend, const char*> availableWindowBackendsMap;
53 Ship::WindowBackend configWindowBackend;
54
55 std::unordered_map<uint32_t, disabledInfo> disabledMap;
56 std::vector<disabledInfo> disabledVector;
58 .columnCount = 1,
59 .columnWidgets = { { { .name = "Sidebar Search",
60 .type = WIDGET_SEARCH,
61 .options = std::make_shared<UIWidgets::WidgetOptions>(UIWidgets::WidgetOptions{}.Tooltip(
62 "Searches all menus for the given text, including tooltips.")) } } }
63 };
64 virtual void ProcessReset() {
66 gIsGamePaused = 0;
67 // Reset credits
68 D_800DC5E4 = 0;
69 gTourComplete = false;
71 memset(&gGameModeMenuColumn, 0, sizeof(s8) * NUM_ROWS_GAME_MODE_MENU);
73
75
76 switch(CVarGetInteger("gSkipIntro", 0)) {
77 case 0:
79 break;
80 case 1:
82 break;
83 case 2:
85 break;
86 case 3:
88 break;
89 }
90
91 // Close the editor.
92 if (gEditor.IsEnabled()) {
93 gEditor.Disable();
94 }
95
96 // Set the debug menu track browsing index back to zero
97 TrackBrowser::Instance->Reset();
98
99 // Debug mode override gSkipIntro
100 if (CVarGetInteger("gEnableDebugMode", 0) == true) {
102 } else {
104 }
105 }
106
107 private:
108 bool allowPopout = true; // PortNote: should be set to false on small screen ports
109 bool popped;
111 ImVec2 poppedPos;
112 float uiScale = 1.0f;
115};
116} // namespace Ship
117
118#endif // MENU_H
void CM_ResetAudio(void)
Definition Game.cpp:876
TrackEditor::Editor gEditor
Definition Game.cpp:72
void SetMarioRaceway(void)
Definition Game.cpp:170
@ WIDGET_SEARCH
Definition MenuTypes.h:44
ImVec2 poppedSize
Definition Menu.h:110
void RemoveSidebarSearch()
Definition Menu.cpp:79
std::string mName
Definition Menu.h:43
void UpdateElement() override
Definition Menu.cpp:122
float uiScale
Definition Menu.h:112
void MenuDrawItem(WidgetInfo &widget, uint32_t width, UIWidgets::Colors menuThemeIndex)
Definition Menu.cpp:219
virtual ~Menu()
Definition Menu.h:27
Ship::WindowBackend configWindowBackend
Definition Menu.h:53
UIWidgets::Colors defaultThemeIndex
Definition Menu.h:50
uint8_t searchSidebarIndex
Definition Menu.h:49
bool allowPopout
Definition Menu.h:108
void InsertSidebarSearch()
Definition Menu.cpp:65
std::vector< std::string > menuOrder
Definition Menu.h:46
void UpdateWindowBackendObjects()
Definition Menu.cpp:92
std::unordered_map< uint32_t, disabledInfo > disabledMap
Definition Menu.h:55
std::unordered_map< uint32_t, disabledInfo > & GetDisabledMap()
Definition Menu.cpp:215
std::unordered_map< std::string, MainMenuEntry > menuEntries
Definition Menu.h:45
uint32_t DrawSearchResults(std::string &menuSearchText)
Definition Menu.cpp:173
float windowWidth
Definition Menu.h:114
void InitElement() override
Definition Menu.cpp:112
void Draw() override
Definition Menu.cpp:466
float windowHeight
Definition Menu.h:113
void AddMenuEntry(std::string entryName, const char *entryCvar)
Definition Menu.cpp:210
ImVec2 poppedPos
Definition Menu.h:111
const SidebarEntry searchSidebarEntry
Definition Menu.h:57
uint32_t mWindowFlags
Definition Menu.h:44
std::unordered_map< Ship::WindowBackend, const char * > availableWindowBackendsMap
Definition Menu.h:52
bool popped
Definition Menu.h:109
std::shared_ptr< std::vector< Ship::WindowBackend > > availableWindowBackends
Definition Menu.h:51
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:56
virtual void ProcessReset()
Definition Menu.h:64
void DrawElement() override
Definition Menu.cpp:475
ImGuiTextFilter menuSearch
Definition Menu.h:48
ImVec2 mOriginalSize
Definition Menu.h:42
u16 gIsGamePaused
Definition code_800029B0.c:65
u16 D_800DC5E4
Definition code_800029B0.c:55
#define START_MENU
Definition defines.h:212
#define LOGO_INTRO_MENU
Definition defines.h:210
#define MAIN_MENU
Definition defines.h:213
#define MAIN_MENU_FROM_QUIT
Definition defines.h:223
#define HARBOUR_MASTERS_MENU
Definition defines.h:217
bool gTourComplete
Definition main.c:180
s32 gGamestateNext
Definition main.c:174
s32 gMenuSelection
Definition menus.c:65
s8 gGameModeSubMenuColumn[NUM_COLUMN_GAME_MODE_SUB_MENU][NUM_ROWS_GAME_MODE_SUB_MENU]
Definition menus.c:76
s8 gGameModeMenuColumn[NUM_ROWS_GAME_MODE_MENU]
Definition menus.c:71
#define NUM_ROWS_GAME_MODE_SUB_MENU
Definition menus.h:196
#define NUM_ROWS_GAME_MODE_MENU
Definition menus.h:194
#define NUM_COLUMN_GAME_MODE_SUB_MENU
Definition menus.h:195
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