mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2025-07-03 04:42:35 +08:00
185 lines
4.4 KiB
C++
185 lines
4.4 KiB
C++
#pragma once
|
|
#include "views/view.hpp"
|
|
|
|
namespace big
|
|
{
|
|
// Lua API: Tabs
|
|
enum class tabs
|
|
{
|
|
NONE,
|
|
|
|
SELF,
|
|
WEAPONS,
|
|
TELEPORT,
|
|
CUSTOM_TELEPORT,
|
|
MOBILE,
|
|
OUTFIT_EDITOR,
|
|
OUTFIT_SLOTS,
|
|
|
|
VEHICLE,
|
|
HANDLING,
|
|
HANDLING_SEARCH,
|
|
HANDLING_SAVED_PROFILE,
|
|
HANDLING_MY_PROFILES,
|
|
HANDLING_CURRENT_PROFILE,
|
|
LSC,
|
|
SPAWN_VEHICLE,
|
|
FUN_VEHICLE,
|
|
|
|
WORLD,
|
|
SPAWN_PED,
|
|
SQUAD_SPAWNER,
|
|
CREATOR,
|
|
TRAIN,
|
|
BLACKHOLE,
|
|
MODEL_SWAPPER,
|
|
|
|
NETWORK,
|
|
MISSIONS,
|
|
SPOOFING,
|
|
PLAYER_DATABASE,
|
|
SESSION_BROWSER,
|
|
STAT_EDITOR,
|
|
|
|
SETTINGS,
|
|
LUA_SCRIPTS,
|
|
CONTEXT_MENU_SETTINGS,
|
|
ESP_SETTINGS,
|
|
GTA_CACHE_SETTINGS,
|
|
GUI_SETTINGS,
|
|
HOTKEY_SETTINGS,
|
|
REACTION_SETTINGS,
|
|
PROTECTION_SETTINGS,
|
|
TRANSLATION_SETTINGS,
|
|
DEBUG,
|
|
|
|
PLAYER,
|
|
|
|
// Added at runtime by things like lua scripts.
|
|
RUNTIME_CUSTOM
|
|
};
|
|
|
|
struct navigation_struct
|
|
{
|
|
char name[48] = "";
|
|
std::function<void()> func = nullptr;
|
|
std::map<tabs, navigation_struct> sub_nav{};
|
|
rage::joaat_t hash = rage::joaat(name);
|
|
};
|
|
|
|
// Used for constructing translation key for tabs
|
|
#define TAB_DECL_INTERNAL(prefix, tab) \
|
|
tabs::tab, \
|
|
{ \
|
|
#prefix #tab
|
|
#define TAB_DECL(tab) TAB_DECL_INTERNAL(GUI_TAB_, tab)
|
|
|
|
class gui_service final
|
|
{
|
|
std::vector<tabs> current_tab{};
|
|
bool switched_view = true;
|
|
|
|
// clang-format off
|
|
std::map<tabs, navigation_struct> nav = {
|
|
{
|
|
TAB_DECL(SELF),
|
|
view::self,
|
|
{
|
|
{TAB_DECL(WEAPONS), view::weapons}},
|
|
{TAB_DECL(MOBILE), view::mobile}},
|
|
{TAB_DECL(TELEPORT), view::teleport,
|
|
{
|
|
{TAB_DECL(CUSTOM_TELEPORT), view::custom_teleport}},
|
|
}}},
|
|
{TAB_DECL(OUTFIT_EDITOR), view::outfit_editor}},
|
|
{TAB_DECL(OUTFIT_SLOTS), view::outfit_slots}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
TAB_DECL(VEHICLE),
|
|
view::vehicle,
|
|
{
|
|
{
|
|
TAB_DECL(HANDLING),
|
|
view::handling_current_profile,
|
|
{
|
|
{TAB_DECL(HANDLING_CURRENT_PROFILE), view::handling_current_profile}},
|
|
{TAB_DECL(HANDLING_SAVED_PROFILE), view::handling_saved_profiles}},
|
|
},
|
|
},
|
|
},
|
|
{TAB_DECL(LSC), view::lsc}},
|
|
{TAB_DECL(SPAWN_VEHICLE), view::spawn_vehicle}},
|
|
{TAB_DECL(FUN_VEHICLE), view::fun_vehicle}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
TAB_DECL(WORLD),
|
|
view::world,
|
|
{
|
|
{TAB_DECL(SPAWN_PED), view::spawn_ped}},
|
|
{TAB_DECL(SQUAD_SPAWNER), view::squad_spawner}},
|
|
{TAB_DECL(CREATOR), view::creator}},
|
|
{TAB_DECL(TRAIN), view::train}},
|
|
{TAB_DECL(BLACKHOLE), view::blackhole}},
|
|
{TAB_DECL(MODEL_SWAPPER), view::model_swapper}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
TAB_DECL(NETWORK),
|
|
view::network,
|
|
{
|
|
{TAB_DECL(SPOOFING), view::spoofing}},
|
|
{TAB_DECL(MISSIONS), view::missions}},
|
|
{TAB_DECL(PLAYER_DATABASE), view::player_database}},
|
|
{TAB_DECL(SESSION_BROWSER), view::session_browser}},
|
|
{TAB_DECL(STAT_EDITOR), view::stat_editor}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
TAB_DECL(SETTINGS),
|
|
view::settings,
|
|
{
|
|
{TAB_DECL(LUA_SCRIPTS), view::lua_scripts}},
|
|
{TAB_DECL(ESP_SETTINGS), view::esp_settings}},
|
|
{TAB_DECL(GTA_CACHE_SETTINGS), view::gta_cache}},
|
|
{TAB_DECL(GUI_SETTINGS), view::gui_settings}},
|
|
{TAB_DECL(HOTKEY_SETTINGS), view::hotkey_settings}},
|
|
{TAB_DECL(REACTION_SETTINGS), view::reaction_settings}},
|
|
{TAB_DECL(PROTECTION_SETTINGS), view::protection_settings}},
|
|
{TAB_DECL(DEBUG), nullptr}},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
tabs::PLAYER,
|
|
{"", view::view_player},
|
|
},
|
|
};
|
|
// clang-format on
|
|
|
|
void remove_from_nav_internal(std::map<big::tabs, big::navigation_struct>& nav, big::tabs existing_tab_id);
|
|
|
|
public:
|
|
gui_service();
|
|
virtual ~gui_service();
|
|
|
|
int nav_ctr = 0;
|
|
|
|
navigation_struct* get_selected();
|
|
std::vector<tabs>& get_selected_tab();
|
|
bool has_switched_view();
|
|
void set_selected(tabs);
|
|
void set_nav_size(int);
|
|
void increment_nav_size();
|
|
void reset_nav_size();
|
|
std::map<tabs, navigation_struct>& get_navigation();
|
|
void remove_from_nav(tabs existing_tab_id);
|
|
};
|
|
|
|
inline gui_service* g_gui_service{};
|
|
} |