Refactor code

This commit is contained in:
Grinch_ 2022-08-16 07:55:33 +06:00
parent 216630d4c1
commit 9c5d399e18
18 changed files with 304 additions and 265 deletions

View File

@ -105,134 +105,11 @@ void CheatMenu::DrawWindow()
Overlay::Draw();
}
void CheatMenu::ProcessPages()
{
static void* pCallback;
ImVec2 size = Widget::CalcSize(3, false);
ImGuiStyle &style = ImGui::GetStyle();
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0));
m_nMenuPage = Updater::IsUpdateAvailable() ? eMenuPages::UPDATE : m_nMenuPage;
// Check once if it's anniversary day
static bool aniCheckDone;
if (!aniCheckDone)
{
SYSTEMTIME st;
GetSystemTime(&st);
if (st.wMonth == 3 && st.wDay == 28)
{
/*
* We don't want to be annoying and
* show anniversary screen on every game start
*/
bool flag = gConfig.Get("Window.AnniversaryShown", false);
if (!flag)
{
gConfig.Set("Window.AnniversaryShown", true);
m_nMenuPage = eMenuPages::ANNIVERSARY;
}
}
aniCheckDone = true;
}
ImDrawList *pDrawList = ImGui::GetWindowDrawList();
for (size_t i = 0; i < m_headerList.size(); ++i)
{
/*
* For welcome & update pages
* They don't need to add item in the header list
*/
if (m_headerList[i].skipHeader)
{
if (m_nMenuPage == m_headerList[i].page)
{
pCallback = m_headerList[i].pFunc;
}
continue;
}
const char* text = m_headerList[i].name.c_str();
ImVec4 color;
if (m_headerList[i].page == m_nMenuPage)
{
color = style.Colors[ImGuiCol_ButtonActive];
pCallback = m_headerList[i].pFunc;
}
else
color = style.Colors[ImGuiCol_Button];
if (ImGui::InvisibleButton(text, size))
{
m_nMenuPage = m_headerList[i].page;
size_t curPage = static_cast<size_t>(m_headerList[i].page);
gConfig.Set("Window.CurrentPage", curPage);
pCallback = m_headerList[i].pFunc;
Updater::ResetUpdaterState();
}
if (ImGui::IsItemHovered())
color = style.Colors[ImGuiCol_ButtonHovered];
/*
* Window rounding flags
* TODO: hardcoded atm
*/
ImDrawFlags flags = ImDrawFlags_RoundCornersNone;
if (i == 0) flags = ImDrawFlags_RoundCornersTopLeft;
if (i == 2) flags = ImDrawFlags_RoundCornersTopRight;
if (i == 6) flags = ImDrawFlags_RoundCornersBottomLeft;
if (i == 8) flags = ImDrawFlags_RoundCornersBottomRight;
ImVec2 min = ImGui::GetItemRectMin();
ImVec2 max = ImGui::GetItemRectMax();
ImVec2 size = ImGui::CalcTextSize(text);
pDrawList->AddRectFilled(min, max, ImGui::GetColorU32(color), style.FrameRounding, flags);
ImGui::RenderTextClipped(min + style.FramePadding, max - style.FramePadding, text, NULL, &size, style.ButtonTextAlign);
if (i % 3 != 2)
{
ImGui::SameLine();
}
}
ImGui::PopStyleVar();
ImGui::Dummy(ImVec2(0, 10));
if (pCallback != nullptr && ImGui::BeginChild("HEADERCONTENT"))
{
static_cast<void(*)()>(pCallback)();
ImGui::EndChild();
}
}
void CheatMenu::GenHeaderList()
{
CheatMenu::m_headerList =
{
{TEXT_S("Window.TeleportPage"), &Teleport::ShowPage, eMenuPages::TELEPORT},
{TEXT_S("Window.PlayerPage"), &Player::ShowPage, eMenuPages::PLAYER},
{TEXT_S("Window.PedPage"), &Ped::ShowPage, eMenuPages::PED},
{TEXT_S("Window.ScenePage"), &ScenePage::Draw, eMenuPages::SCENE},
{TEXT_S("Window.VehiclePage"), &Vehicle::ShowPage, eMenuPages::VEHICLE},
{TEXT_S("Window.WeaponPage"), &Weapon::ShowPage, eMenuPages::WEAPON},
{TEXT_S("Window.GamePage"), &Game::ShowPage, eMenuPages::GAME},
{TEXT_S("Window.VisualPage"), &Visual::ShowPage, eMenuPages::VISUAL},
{TEXT_S("Window.MenuPage"), &Menu::ShowPage, eMenuPages::MENU},
{"Welcome", &ShowWelcomePage, eMenuPages::WELCOME, true},
{"Update", &ShowUpdatePage, eMenuPages::UPDATE, true},
{"Anniversary", &ShowAnniversaryPage, eMenuPages::ANNIVERSARY, true}
};
}
void CheatMenu::Init()
{
if (!std::filesystem::exists(PLUGIN_PATH((char*)FILE_NAME)))
{
Log::Print<eLogLevel::Error>(TEXT("Menu.CheatMenuNoDir"));
Log::Print<eLogLevel::Error>("Failed to find CheatMenu directory!");
return;
}
@ -259,7 +136,7 @@ void CheatMenu::Init()
Teleport::Init();
Vehicle::Init();
Visual::Init();
Weapon::Init();
WeaponPage::Init();
Overlay::Init();
Events::processScriptsEvent += []()
@ -295,88 +172,7 @@ void CheatMenu::Init()
};
}
void CheatMenu::ShowAnniversaryPage()
{
Widget::TextCentered("Happy Anniversary!");
ImGui::NewLine();
ImGui::TextWrapped("On this day, in 2019, the first public version of menu was released in MixMods Forum."
" It's been a blast working on it and I've learned a lot in the process.\n\nThanks to you and everyone who used or"
" contributed to the modification in any form or shape.");
ImGui::NewLine();
ImGui::TextWrapped("Feel free to star the GitHub repo or join the discord server and provide feedback, ideas, or suggestions.");
ImGui::NewLine();
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(3))))
{
OPEN_LINK(DISCORD_INVITE);
}
ImGui::SameLine();
if (ImGui::Button(TEXT("Menu.GitHubRepo"), ImVec2(Widget::CalcSize(3))))
{
OPEN_LINK(GITHUB_LINK);
}
}
void CheatMenu::ShowWelcomePage()
{
ImGui::NewLine();
Widget::TextCentered(TEXT("Menu.WelcomeMSG"));
Widget::TextCentered(std::format("{}: Grinch_",TEXT("Menu.Author")));
ImGui::NewLine();
ImGui::TextWrapped(TEXT("Menu.EnsureLatest"));
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(2))))
{
OPEN_LINK(DISCORD_INVITE);
}
ImGui::SameLine();
if (ImGui::Button(TEXT("Menu.GitHubRepo"), ImVec2(Widget::CalcSize(2))))
{
OPEN_LINK(GITHUB_LINK);
}
ImGui::NewLine();
ImGui::TextWrapped(TEXT("Menu.BugDisclaimer"));
ImGui::Dummy(ImVec2(0, 20));
Widget::TextCentered(TEXT("Menu.PatreonText"));
if (ImGui::Button(TEXT("Menu.Patreon"), ImVec2(Widget::CalcSize(1))))
{
OPEN_LINK("https://www.patreon.com/grinch_");
}
ImGui::Dummy(ImVec2(0, 30));
Widget::TextCentered(TEXT("Menu.CopyrightDisclaimer"));
}
void CheatMenu::ShowUpdatePage()
{
std::string ver = Updater::GetUpdateVersion();
ImGui::Dummy(ImVec2(0, 20));
Widget::TextCentered(TEXT("Menu.NewVersion"));
Widget::TextCentered(std::format("{}: {}", TEXT("Menu.CurrentVersion"), MENU_VERSION));
Widget::TextCentered(TEXT("Menu.LatestVersion") + ver);
ImGui::Dummy(ImVec2(0, 10));
ImGui::TextWrapped(TEXT("Menu.UpdaterInfo1"));
ImGui::Dummy(ImVec2(0, 10));
ImGui::TextWrapped(TEXT("Menu.UpdaterInfo2"));
ImGui::Dummy(ImVec2(0, 5));
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(2))))
{
OPEN_LINK(DISCORD_INVITE);
}
ImGui::SameLine();
if (ImGui::Button(TEXT("Menu.DownloadPage"), Widget::CalcSize(2)))
{
ShellExecute(NULL, "open", std::string("https://github.com/user-grinch/Cheat-Menu/releases/tag/" +
ver).c_str(), NULL, NULL, SW_SHOWNORMAL);
}
}
bool CheatMenu::IsMenuShown()
bool CheatMenu::IsBeingDrawn()
{
return m_bShowMenu;
}
@ -447,7 +243,7 @@ void CheatMenu::ApplyStyle()
style->Colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.20f, 0.20f, 0.20f, 0.6f);
}
void CheatMenu::ResetMenuSize()
void CheatMenu::ResetSize()
{
m_fMenuSize.x = screen::GetScreenWidth() / 4.0f;
m_fMenuSize.y = screen::GetScreenHeight() / 1.2f;

View File

@ -8,38 +8,16 @@
class CheatMenu
{
private:
enum class eMenuPages
{
ANNIVERSARY, GAME, MENU, NONE, PED, PLAYER, SCENE, TELEPORT, UPDATE, VEHICLE, VISUAL, WEAPON, WELCOME
};
struct HeaderData
{
std::string name;
void *pFunc;
eMenuPages page;
bool skipHeader = false;
};
static inline eMenuPages m_nMenuPage = eMenuPages::WELCOME; // current visible menu page
static inline bool m_bShowMenu = false; // should the menu be drawn
static inline ImVec2 m_fMenuSize = ImVec2(screen::GetScreenWidth() / 4, screen::GetScreenHeight() / 1.2);
static inline bool m_bShowMenu = false; // should the menu be drawn
static inline bool m_bSizeChangedExternal = false; // Was menu size change requested
static inline std::vector<HeaderData> m_headerList;
// Applies imgui theme to the menu
static void ApplyStyle();
// Draws the window ui each frame
// Also handles drawing info, overlay, command window
static void DrawWindow();
static void ShowAnniversaryPage();
static void ShowUpdatePage();
static void ShowWelcomePage();
// Does all the processing required to handle menu pages
static void ProcessPages();
public:
CheatMenu() = delete;
CheatMenu(const CheatMenu&) = delete;
@ -48,12 +26,8 @@ public:
static void Init();
// Returns true if the menu is being shown
static bool IsMenuShown();
static bool IsBeingDrawn();
// Resets the menu height & width to default
static void ResetMenuSize();
// Generates menu headers
// Needs to be called after language change or adding new headers
static void GenHeaderList();
static void ResetSize();
};

View File

@ -16,7 +16,7 @@
#include <CAnimBlendAssociation.h>
#endif
AnimationMgr& Animation = *AnimationMgr::Get();
AnimationMgr& Animation = AnimationMgr::Get();
#ifdef GTAVC
// Thanks to codenulls(https://github.com/codenulls/)

View File

@ -1,7 +1,7 @@
#include "pch.h"
#include "cutscene_sa.h"
CutsceneMgr& Cutscene = *CutsceneMgr::Get();
CutsceneMgr& Cutscene = CutsceneMgr::Get();
CutsceneMgr::CutsceneMgr()
{
static CdeclEvent <AddressList<0x5B195F, H_JUMP>, PRIORITY_AFTER, ArgPickNone, void()> skipCutsceneEvent;

View File

@ -2,7 +2,7 @@
#include "freecam_sa.h"
static CVector gTotalMouse;
FreecamMgr& Freecam = *FreecamMgr::Get();
FreecamMgr& Freecam = FreecamMgr::Get();
void FreecamMgr::Enable()
{

View File

@ -1,7 +1,7 @@
#include "pch.h"
#include "neon_sa.h"
NeonMgr& Neon = *NeonMgr::Get();
NeonMgr& Neon = NeonMgr::Get();
// Neon sprite
const unsigned char neon_mask[1689] =

View File

@ -2,7 +2,7 @@
#include "particle_sa.h"
#include "utils/widget.h"
ParticleMgr& Particle = *ParticleMgr::Get();
ParticleMgr& Particle = ParticleMgr::Get();
void ParticleMgr::Play(std::string& cat, std::string& name, std::string& particle)
{
CPlayerPed* pPlayer = FindPlayerPed();

View File

@ -1,7 +1,7 @@
#include "pch.h"
#include "randomcheats_sa.h"
RandomCheatsMgr& RandomCheats = *RandomCheatsMgr::Get();
RandomCheatsMgr& RandomCheats = RandomCheatsMgr::Get();
void RandomCheatsMgr::Process()
{

View File

@ -1,7 +1,7 @@
#include "pch.h"
#include "topdowncam_sa.h"
TopDownCamera& TopDownCam = *TopDownCamera::Get();
TopDownCamera& TopDownCam = TopDownCamera::Get();
TopDownCamera::TopDownCamera()
{

View File

@ -20,10 +20,10 @@ public:
m_bEnabled = true;
}
static T *Get()
static T &Get()
{
static T _instance;
return &_instance;
return _instance;
}
// Returns the current stae of the cheat

196
src/interface/ipage.cpp Normal file
View File

@ -0,0 +1,196 @@
#include "pch.h"
#include "ipage.h"
#include "utils/updater.h"
#include "utils/widget.h"
static void DrawAnniversaryPage()
{
Widget::TextCentered("Happy Anniversary!");
ImGui::NewLine();
ImGui::TextWrapped("On this day, in 2019, the first public version of menu was released in MixMods Forum."
" It's been a blast working on it and I've learned a lot in the process.\n\nThanks to you and everyone who used or"
" contributed to the modification in any form or shape.");
ImGui::NewLine();
ImGui::TextWrapped("Feel free to star the GitHub repo or join the discord server and provide feedback, ideas, or suggestions.");
ImGui::NewLine();
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(3))))
{
OPEN_LINK(DISCORD_INVITE);
}
ImGui::SameLine();
if (ImGui::Button(TEXT("Menu.GitHubRepo"), ImVec2(Widget::CalcSize(3))))
{
OPEN_LINK(GITHUB_LINK);
}
}
static void DrawWelcomePage()
{
ImGui::NewLine();
Widget::TextCentered(TEXT("Menu.WelcomeMSG"));
Widget::TextCentered(std::format("{}: Grinch_",TEXT("Menu.Author")));
ImGui::NewLine();
ImGui::TextWrapped(TEXT("Menu.EnsureLatest"));
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(2))))
{
OPEN_LINK(DISCORD_INVITE);
}
ImGui::SameLine();
if (ImGui::Button(TEXT("Menu.GitHubRepo"), ImVec2(Widget::CalcSize(2))))
{
OPEN_LINK(GITHUB_LINK);
}
ImGui::NewLine();
ImGui::TextWrapped(TEXT("Menu.BugDisclaimer"));
ImGui::Dummy(ImVec2(0, 20));
Widget::TextCentered(TEXT("Menu.PatreonText"));
if (ImGui::Button(TEXT("Menu.Patreon"), ImVec2(Widget::CalcSize(1))))
{
OPEN_LINK("https://www.patreon.com/grinch_");
}
ImGui::Dummy(ImVec2(0, 30));
Widget::TextCentered(TEXT("Menu.CopyrightDisclaimer"));
}
static void DrawUpdatePage()
{
std::string ver = Updater::GetUpdateVersion();
ImGui::Dummy(ImVec2(0, 20));
Widget::TextCentered(TEXT("Menu.NewVersion"));
Widget::TextCentered(std::format("{}: {}", TEXT("Menu.CurrentVersion"), MENU_VERSION));
Widget::TextCentered(TEXT("Menu.LatestVersion") + ver);
ImGui::Dummy(ImVec2(0, 10));
ImGui::TextWrapped(TEXT("Menu.UpdaterInfo1"));
ImGui::Dummy(ImVec2(0, 10));
ImGui::TextWrapped(TEXT("Menu.UpdaterInfo2"));
ImGui::Dummy(ImVec2(0, 5));
if (ImGui::Button(TEXT("Menu.DiscordServer"), ImVec2(Widget::CalcSize(2))))
{
OPEN_LINK(DISCORD_INVITE);
}
ImGui::SameLine();
if (ImGui::Button(TEXT("Menu.DownloadPage"), Widget::CalcSize(2)))
{
ShellExecute(NULL, "open", std::string("https://github.com/user-grinch/Cheat-Menu/releases/tag/" +
ver).c_str(), NULL, NULL, SW_SHOWNORMAL);
}
}
template <typename T>
void IPage<T>::Process()
{
ImVec2 size = Widget::CalcSize(3, false);
ImGuiStyle &style = ImGui::GetStyle();
ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0));
if (Updater::IsUpdateAvailable())
{
m_nCurrentPage = eMenuPage::Update;
}
// Check once if it's anniversary day
static bool aniCheckDone;
if (!aniCheckDone)
{
SYSTEMTIME st;
GetSystemTime(&st);
if (st.wMonth == 3 && st.wDay == 28)
{
/*
* We don't want to be annoying and
* show anniversary screen on every game start
*/
bool flag = gConfig.Get("Window.AnniversaryShown", false);
if (!flag)
{
gConfig.Set("Window.AnniversaryShown", true);
m_nMenuPage = eMenuPages::ANNIVERSARY;
}
}
aniCheckDone = true;
}
ImDrawList *pDrawList = ImGui::GetWindowDrawList();
for (size_t i = 0; i < m_headerList.size(); ++i)
{
/*
* For welcome & update pages
* They don't need to add item in the header list
*/
if (m_headerList[i].skipHeader)
{
if (m_nMenuPage == m_headerList[i].page)
{
pCallback = m_headerList[i].pFunc;
}
continue;
}
const char* text = m_headerList[i].name.c_str();
ImVec4 color;
if (m_headerList[i].page == m_nMenuPage)
{
color = style.Colors[ImGuiCol_ButtonActive];
pCallback = m_headerList[i].pFunc;
}
else
{
color = style.Colors[ImGuiCol_Button];
}
if (ImGui::InvisibleButton(text, size))
{
m_nMenuPage = m_headerList[i].page;
size_t curPage = static_cast<size_t>(m_headerList[i].page);
gConfig.Set("Window.CurrentPage", curPage);
pCallback = m_headerList[i].pFunc;
Updater::ResetUpdaterState();
}
if (ImGui::IsItemHovered())
{
color = style.Colors[ImGuiCol_ButtonHovered];
}
/*
* Window rounding flags
* TODO: hardcoded atm
*/
ImDrawFlags flags = ImDrawFlags_RoundCornersNone;
if (i == 0) flags = ImDrawFlags_RoundCornersTopLeft;
if (i == 2) flags = ImDrawFlags_RoundCornersTopRight;
if (i == 6) flags = ImDrawFlags_RoundCornersBottomLeft;
if (i == 8) flags = ImDrawFlags_RoundCornersBottomRight;
ImVec2 min = ImGui::GetItemRectMin();
ImVec2 max = ImGui::GetItemRectMax();
ImVec2 size = ImGui::CalcTextSize(text);
pDrawList->AddRectFilled(min, max, ImGui::GetColorU32(color), style.FrameRounding, flags);
ImGui::RenderTextClipped(min + style.FramePadding, max - style.FramePadding, text, NULL, &size, style.ButtonTextAlign);
if (i % 3 != 2)
{
ImGui::SameLine();
}
}
ImGui::PopStyleVar();
ImGui::Dummy(ImVec2(0, 10));
if (m_pCurrentPage != nullptr && ImGui::BeginChild("HEADERCONTENT"))
{
m_pCurrentPage->Draw();
ImGui::EndChild();
}
}

72
src/interface/ipage.h Normal file
View File

@ -0,0 +1,72 @@
#pragma once
#include <vector>
enum class eMenuPage
{
Anniversary,
Game,
Menu,
None,
Ped,
Player,
Scene,
Teleport,
Update,
Vehicle,
Visual,
Weapon,
Welcome
};
/*
Interface class for pages
Every page must inherit this
*/
template<typename T>
class IPage
{
private:
eMenuPage m_ePage; // Menu page ID
bool m_bHasHeader; // Does the page has a header button
std::string m_NameKey; // A key to the page name string
public:
static inline std::vector<IPage*> m_nPageList; // Contains list of the created pages
static inline IPage* m_pCurrentPage = nullptr; // Currently visible menu page
IPage(m_ePage page, std::string&& key, bool header = true)
: m_ePage(page), m_NameKey(key), m_bHasHeader(header)
{
m_nPageList.push_back(this);
}
// Page drawing code goes here
virtual void Draw() = 0;
static T *Get() final
{
static T _instance;
return &_instance;
}
// Returns the ID of the page
eMenuPage GetPageID() final
{
return m_ePage;
}
// Returns true if the page has a visible header button
bool HasHeaderButton() final
{
return m_bHasHeader;
}
// Returns the page name key
std::string GetKey() final
{
return m_NameKey;
}
// Process the menu pages & draw them
static void Process() final;
};

View File

@ -56,7 +56,7 @@ void Menu::ShowPage()
ImGui::Spacing();
if (ImGui::Button(TEXT("Menu.ResetSize"), ImVec2(Widget::CalcSize(2))))
{
CheatMenu::ResetMenuSize();
CheatMenu::ResetSize();
}
ImGui::SameLine();
if (ImGui::Button(TEXT("Menu.ReloadFonts"), ImVec2(Widget::CalcSize(2))))

View File

@ -380,15 +380,15 @@ void Ped::ShowPage()
ImGui::Text(TEXT("Ped.SelectedWeapon"), weaponName.c_str());
ImGui::Spacing();
#ifdef GTASA
Widget::ImageList(Weapon::m_WeaponData,
Widget::ImageList(WeaponPage::m_WeaponData,
[](std::string& str)
{
Spawner::m_nWeaponId = std::stoi(str);
weaponName = Weapon::m_WeaponData.m_pData->Get(str.c_str(), "Unknown");
weaponName = WeaponPage::m_WeaponData.m_pData->Get(str.c_str(), "Unknown");
},
[](std::string& str)
{
return Weapon::m_WeaponData.m_pData->Get(str.c_str(), "Unknown");
return WeaponPage::m_WeaponData.m_pData->Get(str.c_str(), "Unknown");
},
[](std::string& str)
{

View File

@ -4,7 +4,7 @@
#include "utils/util.h"
#include <CWeaponInfo.h>
void Weapon::Init()
void WeaponPage::Init()
{
Events::processScriptsEvent += []
{
@ -94,7 +94,7 @@ void Weapon::Init()
}
#ifdef GTASA
void Weapon::SetGangWeapon(std::string& weapon_type)
void WeaponPage::SetGangWeapon(std::string& weapon_type)
{
m_nGangWeaponList[m_nSelectedGang][m_nSelectedWeapon] = std::stoi(weapon_type);
CGangs::SetGangWeapons(m_nSelectedGang, m_nGangWeaponList[m_nSelectedGang][0], m_nGangWeaponList[m_nSelectedGang][1],
@ -162,7 +162,7 @@ static eWeaponType GetWeaponTypeFromModel(int model)
#endif
#ifdef GTASA
void Weapon::GiveWeaponToPlayer(std::string& weapon_type)
void WeaponPage::GiveWeaponToPlayer(std::string& weapon_type)
{
CPlayerPed* player = FindPlayerPed();
int hplayer = CPools::GetPedRef(player);
@ -223,7 +223,7 @@ void Weapon::GiveWeaponToPlayer(std::string& rootkey, std::string& name, std::st
}
#endif
void Weapon::AddWeapon()
void WeaponPage::AddNew()
{
static char name[INPUT_BUFFER_SIZE];
static int model = 0;
@ -240,7 +240,7 @@ void Weapon::AddWeapon()
}
}
void Weapon::ShowPage()
void WeaponPage::Draw()
{
CPlayerPed* pPlayer = FindPlayerPed();
uint hplayer = CPools::GetPedRef(pPlayer);
@ -384,7 +384,7 @@ void Weapon::ShowPage()
[](std::string& str)
{
return str != "0"; /*Unarmed*/
}, AddWeapon);
}, AddNew);
#else
Widget::DataList(m_WeaponData, GiveWeaponToPlayer, AddWeapon);
#endif

View File

@ -1,7 +1,7 @@
#pragma once
#include "pch.h"
class Weapon
class WeaponPage
{
private:
static inline bool m_bFastReload;
@ -37,13 +37,14 @@ private:
#endif
public:
Weapon() = delete;
Weapon(const Weapon&) = delete;
WeaponPage() = delete;
WeaponPage(const WeaponPage&) = delete;
static void Init();
static void ShowPage();
static void AddWeapon();
static void Draw();
static void AddNew();
#ifdef GTASA
static inline ResourceStore m_WeaponData { "weapons", eResourceType::TYPE_IMAGE_TEXT, ImVec2(65, 65) };

View File

@ -326,7 +326,7 @@ void Overlay::ProcessCommands(std::string&& str)
if (wep_name == "jetpack")
{
std::string weapon = "-1";
Weapon::GiveWeaponToPlayer(weapon);
WeaponPage::GiveWeaponToPlayer(weapon);
Util::SetMessage(TEXT("Menu.WeaponSpawned"));
}
else
@ -337,7 +337,7 @@ void Overlay::ProcessCommands(std::string&& str)
if (wep_name != "" && pweaponinfo->m_nModelId1 != -1)
{
Weapon::GiveWeaponToPlayer(weapon_name);
WeaponPage::GiveWeaponToPlayer(weapon_name);
Util::SetMessage(TEXT("Menu.WeaponSpawned"));
}
else

View File

@ -133,7 +133,7 @@ void RPC::Process()
}
if (CheatMenu::IsMenuShown())
if (CheatMenu::IsBeingDrawn())
{
stateText = TEXT("RPC.BrowsingCheatMenu");
}