iw4x-client/src/Components/Modules/Menus.hpp

60 lines
2.0 KiB
C++
Raw Normal View History

2017-01-20 08:36:52 -05:00
#pragma once
2017-01-19 16:23:59 -05:00
#define MAX_SOURCEFILES 64
#undef LoadMenu
namespace Components
{
class Menus : public Component
{
public:
Menus();
~Menus();
static void FreeEverything();
2018-12-17 08:29:18 -05:00
static void Add(const std::string& menu);
2017-01-19 16:23:59 -05:00
private:
static std::unordered_map<std::string, Game::menuDef_t*> MenuList;
static std::unordered_map<std::string, Game::MenuList*> MenuListList;
static std::vector<std::string> CustomMenus;
2018-12-17 08:29:18 -05:00
static Game::XAssetHeader MenuLoad(Game::XAssetType type, const std::string& filename);
static Game::XAssetHeader MenuFileLoad(Game::XAssetType type, const std::string& filename);
2017-01-19 16:23:59 -05:00
static Game::MenuList* LoadMenuList(Game::MenuList* menuList);
static Game::MenuList* LoadScriptMenu(const char* menu);
static std::vector<std::pair<bool, Game::menuDef_t*>> LoadMenu(Game::menuDef_t* menudef);
2018-12-17 08:29:18 -05:00
static std::vector<std::pair<bool, Game::menuDef_t*>> LoadMenu(const std::string& file);
static void SafeMergeMenus(std::vector<std::pair<bool, Game::menuDef_t*>>* menus, std::vector<std::pair<bool, Game::menuDef_t*>> newMenus);
2017-01-19 16:23:59 -05:00
2018-12-17 08:29:18 -05:00
static Game::script_t* LoadMenuScript(const std::string& name, const std::string& buffer);
static int LoadMenuSource(const std::string& name, const std::string& buffer);
2017-01-19 16:23:59 -05:00
static int ReserveSourceHandle();
static bool IsValidSourceHandle(int handle);
static Game::menuDef_t* ParseMenu(int handle);
static void FreeMenuSource(int handle);
static void FreeMenuList(Game::MenuList* menuList);
static void FreeMenu(Game::menuDef_t* menudef);
2018-12-17 08:29:18 -05:00
static void RemoveMenu(const std::string& menu);
2017-01-19 16:23:59 -05:00
static void RemoveMenu(Game::menuDef_t* menudef);
2018-12-17 08:29:18 -05:00
static void RemoveMenuList(const std::string& menuList);
2017-01-19 16:23:59 -05:00
static void RemoveMenuList(Game::MenuList* menuList);
static void OverrideMenu(Game::menuDef_t *menu);
static bool IsMenuVisible(Game::UiContext *dc, Game::menuDef_t *menu);
static void RemoveMenuFromContext(Game::UiContext *dc, Game::menuDef_t *menu);
// Ugly!
static int KeywordHash(char* key);
};
}