SpaghettiKart
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 "audio/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,
26 UIWidgets::Colors menuThemeIndex_ = UIWidgets::Colors::LightBlue);
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<int32_t>> availableWindowBackends;
52 std::unordered_map<int32_t, const char*> availableWindowBackendsMap;
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() {
65 // Only request the reset: it is applied at the top of the next game
66 // frame (ApplyPendingReset in Game.cpp), where it cannot race the menu
67 // state machine mid-fade or be swallowed as a repeated gamestate write.
69 }
70
71 private:
72 bool allowPopout = true; // PortNote: should be set to false on small screen ports
73 bool popped;
74 ImVec2 poppedSize;
75 ImVec2 poppedPos;
76 float uiScale = 1.0f;
79};
80} // namespace Ship
81
82#endif // MENU_H
void CM_RequestReset(void)
Definition Game.cpp:923
@ WIDGET_SEARCH
Definition MenuTypes.h:45
ImVec2 poppedSize
Definition Menu.h:74
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:76
void MenuDrawItem(WidgetInfo &widget, uint32_t width, UIWidgets::Colors menuThemeIndex)
Definition Menu.cpp:219
virtual ~Menu()
Definition Menu.h:27
UIWidgets::Colors defaultThemeIndex
Definition Menu.h:50
std::unordered_map< int32_t, const char * > availableWindowBackendsMap
Definition Menu.h:52
uint8_t searchSidebarIndex
Definition Menu.h:49
bool allowPopout
Definition Menu.h:72
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:78
void InitElement() override
Definition Menu.cpp:112
void Draw() override
Definition Menu.cpp:466
float windowHeight
Definition Menu.h:77
void AddMenuEntry(std::string entryName, const char *entryCvar)
Definition Menu.cpp:210
ImVec2 poppedPos
Definition Menu.h:75
const SidebarEntry searchSidebarEntry
Definition Menu.h:57
uint32_t mWindowFlags
Definition Menu.h:44
std::shared_ptr< std::vector< int32_t > > availableWindowBackends
Definition Menu.h:51
bool popped
Definition Menu.h:73
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
int32_t configWindowBackend
Definition Menu.h:53
ImGuiTextFilter menuSearch
Definition Menu.h:48
ImVec2 mOriginalSize
Definition Menu.h:42
Definition SpaghettiGui.cpp:39
uint32_t GetVectorIndexOf(std::vector< std::string > &vector, std::string value)
Definition Menu.cpp:61
Colors
Definition UIWidgets.h:40
Definition MenuTypes.h:243
Definition UIWidgets.h:112
WidgetOptions & Tooltip(const char *tooltip_)
Definition UIWidgets.h:122
Definition MenuTypes.h:104