From d67a91b473128145cf3ec3a8e117929decaa47ce Mon Sep 17 00:00:00 2001 From: Grinch_ Date: Thu, 17 Jun 2021 19:00:32 +0600 Subject: [PATCH] Refactored code --- CheatMenu/Animation.cpp | 16 ++++++++-------- CheatMenu/Animation.h | 11 ++--------- CheatMenu/Game.cpp | 4 ++-- CheatMenu/Game.h | 5 +---- CheatMenu/Json.cpp | 3 +++ CheatMenu/Json.h | 2 +- CheatMenu/Ped.cpp | 16 ++++++++-------- CheatMenu/Ped.h | 12 ++++-------- CheatMenu/Player.cpp | 25 +++++++++++++++++-------- CheatMenu/Player.h | 5 +---- CheatMenu/Teleport.cpp | 20 ++++++++++---------- CheatMenu/Teleport.h | 5 +---- CheatMenu/Vehicle.cpp | 18 +++++++++--------- CheatMenu/Vehicle.h | 22 +++------------------- CheatMenu/Weapon.cpp | 14 +++++++------- CheatMenu/Weapon.h | 7 +------ CheatMenu/pch.h | 12 +++++++++++- 17 files changed, 89 insertions(+), 108 deletions(-) diff --git a/CheatMenu/Animation.cpp b/CheatMenu/Animation.cpp index 511bb1b..d03ca8c 100644 --- a/CheatMenu/Animation.cpp +++ b/CheatMenu/Animation.cpp @@ -5,8 +5,8 @@ Animation::Animation() { - json.LoadData(search_categories, selected_item); - Cutscene::json.LoadData(Cutscene::categories, Cutscene::selected); + anim_data.json.LoadData(anim_data.categories, anim_data.selected); + Cutscene::data.json.LoadData(Cutscene::data.categories, Cutscene::data.selected); Events::processScriptsEvent += [] { @@ -81,7 +81,7 @@ void Animation::Draw() if (ImGui::BeginChild("Anims Child")) { ImGui::Spacing(); - Ui::DrawJSON(json, search_categories, selected_item, filter, &PlayAnimation, &RemoveAnimation); + Ui::DrawJSON(anim_data.json, anim_data.categories, anim_data.selected, anim_data.filter, &PlayAnimation, &RemoveAnimation); ImGui::EndChild(); } ImGui::EndTabItem(); @@ -126,8 +126,8 @@ void Animation::Draw() ImGui::Spacing(); if (ImGui::Button("Add animation", Ui::GetSize())) { - json.data["Custom"][anim_buffer] = ("0, " + std::string(ifp_buffer)); - json.WriteToDisk(); + anim_data.json.data["Custom"][anim_buffer] = ("0, " + std::string(ifp_buffer)); + anim_data.json.WriteToDisk(); } ImGui::EndTabItem(); } @@ -153,7 +153,7 @@ void Animation::Draw() if (ImGui::BeginChild("Cutscene Child")) { ImGui::Spacing(); - Ui::DrawJSON(Cutscene::json, Cutscene::categories, Cutscene::selected, Cutscene::filter, &PlayCutscene, nullptr); + Ui::DrawJSON(Cutscene::data.json, Cutscene::data.categories, Cutscene::data.selected, Cutscene::data.filter, &PlayCutscene, nullptr); ImGui::EndChild(); } ImGui::EndTabItem(); @@ -186,8 +186,8 @@ void Animation::RemoveAnimation(std::string& ifp, std::string& anim, std::string { if (ifp == "Custom") { - json.data["Custom"].erase(anim); - json.WriteToDisk(); + anim_data.json.data["Custom"].erase(anim); + anim_data.json.WriteToDisk(); CHud::SetHelpMessage("Animation removed", false, false, false); } else diff --git a/CheatMenu/Animation.h b/CheatMenu/Animation.h index c23cd69..59ade6e 100644 --- a/CheatMenu/Animation.h +++ b/CheatMenu/Animation.h @@ -5,23 +5,16 @@ private: inline static bool loop = false; inline static bool secondary = false; - inline static CJson json = CJson("animation"); - inline static ImGuiTextFilter filter = ""; - inline static std::vector search_categories; - inline static std::string selected_item = "All"; + inline static SearchData anim_data{"animation"}; struct Cutscene { - inline static CJson json = CJson("cutscene"); - inline static ImGuiTextFilter filter = ""; - inline static std::vector categories; - inline static std::string selected = "All"; + inline static SearchData data{ "cutscene" }; inline static std::string scene_name = ""; inline static int interior = 0; inline static bool running = false; }; - inline static char anim_buffer[INPUT_BUFFER_SIZE] = ""; inline static char ifp_buffer[INPUT_BUFFER_SIZE] = ""; diff --git a/CheatMenu/Game.cpp b/CheatMenu/Game.cpp index 8953355..2bc95a5 100644 --- a/CheatMenu/Game.cpp +++ b/CheatMenu/Game.cpp @@ -26,7 +26,7 @@ void Game::RealTimeClock() Game::Game() { - json.LoadData(search_categories, selected_item); + mission_data.json.LoadData(mission_data.categories, mission_data.selected); stat::json.LoadData(stat::search_categories, stat::selected_item); freecam::fov = TheCamera.FindCamFOV(); @@ -502,7 +502,7 @@ It's recommanded not to save your game after using this. Use it at your own risk ImGui::Spacing(); - Ui::DrawJSON(json, search_categories, selected_item, filter, SetPlayerMission, nullptr); + Ui::DrawJSON(mission_data.json, mission_data.categories, mission_data.selected, mission_data.filter, SetPlayerMission, nullptr); } ImGui::EndTabItem(); } diff --git a/CheatMenu/Game.h b/CheatMenu/Game.h index bc54b2f..c7182e5 100644 --- a/CheatMenu/Game.h +++ b/CheatMenu/Game.h @@ -2,10 +2,7 @@ class Game { public: - inline static CJson json = CJson("mission"); - inline static ImGuiTextFilter filter = ""; - inline static std::vector search_categories; - inline static std::string selected_item = "All"; + inline static SearchData mission_data{ "mission" }; inline static std::vector day_names = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" }; inline static char save_game_name[22] = ""; diff --git a/CheatMenu/Json.cpp b/CheatMenu/Json.cpp index 194fec7..02361e3 100644 --- a/CheatMenu/Json.cpp +++ b/CheatMenu/Json.cpp @@ -3,6 +3,9 @@ CJson::CJson(const char* name) { + if (name == "") + return; + file_path = PLUGIN_PATH((char*)"/CheatMenu/json/") + std::string(name) + ".json"; if (fs::exists(file_path)) diff --git a/CheatMenu/Json.h b/CheatMenu/Json.h index f37f049..85fbe03 100644 --- a/CheatMenu/Json.h +++ b/CheatMenu/Json.h @@ -105,7 +105,7 @@ public: Saves json data to disk */ void WriteToDisk(); - CJson(const char* text); + CJson(const char* text = ""); }; diff --git a/CheatMenu/Ped.cpp b/CheatMenu/Ped.cpp index e20f35e..907342b 100644 --- a/CheatMenu/Ped.cpp +++ b/CheatMenu/Ped.cpp @@ -12,7 +12,7 @@ Ped::Ped() { if (!images_loaded) { - Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\peds\\"), ".jpg", search_categories, peds_vec); + Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\peds\\"), ".jpg", ped_data.categories, ped_data.images); images_loaded = true; } }; @@ -20,7 +20,7 @@ Ped::Ped() Ped::~Ped() { - Util::ReleaseTextures(peds_vec); + Util::ReleaseTextures(ped_data.images); for (CPed* ped : spawn_ped::list) { CWorld::Remove(ped); @@ -36,7 +36,7 @@ void Ped::SpawnPed(std::string& model) return; } - if (Ped::ped_json.data.contains(model)) + if (Ped::ped_data.json.data.contains(model)) { CPlayerPed* player = FindPlayerPed(); CVector pos = player->GetPosition(); @@ -226,8 +226,8 @@ void Ped::Draw() { ImGui::Spacing(); - Ui::DrawImages(peds_vec, ImVec2(65, 110), search_categories, selected_item, filter, SpawnPed, nullptr, - [](std::string str) {return ped_json.data[str].get(); }); + Ui::DrawImages(ped_data.images, ImVec2(65, 110), ped_data.categories, ped_data.selected, ped_data.filter, SpawnPed, nullptr, + [](std::string str) {return ped_data.json.data[str].get(); }); ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Config")) @@ -253,12 +253,12 @@ void Ped::Draw() Ui::ListBox("Ped type", spawn_ped::ped_type, spawn_ped::selected_ped_type); ImGui::Spacing(); - ImGui::Text("Selected weapon: %s", Weapon::weapon_json.data[std::to_string(spawn_ped::weapon_id)].get()); + ImGui::Text("Selected weapon: %s", Weapon::weapon_data.json.data[std::to_string(spawn_ped::weapon_id)].get()); ImGui::Spacing(); - Ui::DrawImages(Weapon::weapon_vec, ImVec2(65, 65), Weapon::search_categories, Weapon::selected_item, Weapon::filter, + Ui::DrawImages(Weapon::weapon_data.images, ImVec2(65, 65), Weapon::weapon_data.categories, Weapon::weapon_data.selected, Weapon::weapon_data.filter, [](std::string str) { spawn_ped::weapon_id = std::stoi(str); }, nullptr, - [](std::string str) {return Weapon::weapon_json.data[str].get(); }, + [](std::string str) {return Weapon::weapon_data.json.data[str].get(); }, [](std::string str) {return str != "-1"; /*Jetpack*/ } ); diff --git a/CheatMenu/Ped.h b/CheatMenu/Ped.h index 43589e3..1a0c22a 100644 --- a/CheatMenu/Ped.h +++ b/CheatMenu/Ped.h @@ -5,14 +5,9 @@ class Ped { private: - inline static ImGuiTextFilter filter = ""; - inline static std::string selected_item = "All"; - inline static std::vector search_categories; - inline static std::vector> peds_vec; - inline static bool images_loaded = false; - - inline static CJson ped_json = CJson("ped"); + inline static SearchData ped_data{ "ped" }; inline static CJson pedspecial_json = CJson("ped special"); + inline static bool images_loaded = false; inline static std::vector gang_names = { @@ -22,7 +17,8 @@ private: inline static bool exgangwars_installed = false; inline static int ped_remove_radius = 5; - struct spawn_ped { + struct spawn_ped + { inline static std::vector list; inline static int accuracy = 50; inline static int health = 100; diff --git a/CheatMenu/Player.cpp b/CheatMenu/Player.cpp index 3b3abc6..a8d70f7 100644 --- a/CheatMenu/Player.cpp +++ b/CheatMenu/Player.cpp @@ -50,7 +50,7 @@ Player::Player() if (!images_loaded) { - Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\clothes\\"), ".jpg", search_categories, clothes_vec); + Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\clothes\\"), ".jpg", cloth_data.categories, cloth_data.images); images_loaded = true; } @@ -118,7 +118,7 @@ Player::Player() Player::~Player() { - Util::ReleaseTextures(clothes_vec); + Util::ReleaseTextures(cloth_data.images); } void Player::ChangePlayerCloth(std::string& name) @@ -161,7 +161,7 @@ void Player::ChangePlayerCloth(std::string& name) void Player::ChangePlayerModel(std::string& model) { bool custom_skin = std::find(custom_skins::store_vec.begin(), custom_skins::store_vec.end(), model) != custom_skins::store_vec.end(); - if (Ped::ped_json.data.contains(model) || custom_skin) + if (Ped::ped_data.json.data.contains(model) || custom_skin) { CPlayerPed* player = FindPlayerPed(); if (Ped::pedspecial_json.data.contains(model) || custom_skin) @@ -373,7 +373,7 @@ void Player::Draw() } ImGui::Spacing(); - Ui::DrawImages(clothes_vec, ImVec2(70, 100), search_categories, selected_item, filter, ChangePlayerCloth, nullptr, + Ui::DrawImages(cloth_data.images, ImVec2(70, 100), cloth_data.categories, cloth_data.selected, cloth_data.filter, ChangePlayerCloth, nullptr, [](std::string str) { std::stringstream ss(str); @@ -400,8 +400,8 @@ void Player::Draw() } if (ImGui::BeginTabItem("Ped skins")) { - Ui::DrawImages(Ped::peds_vec, ImVec2(65, 110), Ped::search_categories, Ped::selected_item, Ped::filter, ChangePlayerModel, nullptr, - [](std::string str) {return Ped::ped_json.data[str].get(); }); + Ui::DrawImages(Ped::ped_data.images, ImVec2(65, 110), Ped::ped_data.categories, Ped::ped_data.selected, Ped::ped_data.filter, ChangePlayerModel, nullptr, + [](std::string str) {return Ped::ped_data.json.data[str].get(); }); ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Custom skins")) @@ -410,7 +410,7 @@ void Player::Draw() if (modloader_installed) { - Ui::FilterWithHint("Search", filter, std::string("Total skins: " + std::to_string(custom_skins::store_vec.size())).c_str()); + Ui::FilterWithHint("Search", cloth_data.filter, std::string("Total skins: " + std::to_string(custom_skins::store_vec.size())).c_str()); Ui::ShowTooltip("Place your dff & txd files inside 'modloader/Custom Skins'"); ImGui::Spacing(); ImGui::TextWrapped("Note: Your txd & dff names can't exceed 8 characters. Don't change names while the game is running."); @@ -428,7 +428,16 @@ void Player::Draw() } else { - ImGui::TextWrapped("Modloader is not installed. Please install modloader."); + ImGui::TextWrapped("Custom skin allows to change player skins without replacing any existing game ped skins.\n\ +Steps to enable 'Custom Skins',\n\n\ +1. Download & install modloader\n\ +2. Create a folder inside 'modloader' folder with the name 'Custom Skins'\n\ +3. Download ped skins online ( .dff & .txd files) and put them inside.\n\ +4. Restart your game.\n\n\n\ +Limitations:\n\ +1. Your .dff & .txd file names must not exceed 8 characters.\n\ +2. Do not rename them while the game is running\n\ +\nDoing so will crash your game."); ImGui::Spacing(); if (ImGui::Button("Download Modloader", ImVec2(Ui::GetSize(1)))) ShellExecute(NULL, "open", "https://gtaforums.com/topic/669520-mod-loader/", NULL, NULL, SW_SHOWNORMAL); diff --git a/CheatMenu/Player.h b/CheatMenu/Player.h index adf27a6..0db1aab 100644 --- a/CheatMenu/Player.h +++ b/CheatMenu/Player.h @@ -10,10 +10,7 @@ private: inline static bool god_mode = false; inline static int body = 0; inline static bool aim_skin_changer = false; - inline static ImGuiTextFilter filter = ""; - inline static std::string selected_item = "All"; - inline static std::vector search_categories; - inline static std::vector> clothes_vec; + inline static SearchData cloth_data; inline static bool images_loaded = false; struct custom_skins diff --git a/CheatMenu/Teleport.cpp b/CheatMenu/Teleport.cpp index 958d8ca..01aa61c 100644 --- a/CheatMenu/Teleport.cpp +++ b/CheatMenu/Teleport.cpp @@ -16,7 +16,7 @@ void Teleport::FetchRadarSpriteData() if (cur_timer - timer < 5000) return; - json.data.erase("Radar"); + tp_data.json.data.erase("Radar"); // 175 is the max number of sprites, FLA can increase this limit, might need to update this for (int i = 0; i != 175; ++i) @@ -26,7 +26,7 @@ void Teleport::FetchRadarSpriteData() std::string sprite_name = sprite_name_json.data[std::to_string(sprite)].get(); std::string key_name = sprite_name + ", " + Util::GetLocationName(&pos); - json.data["Radar"][key_name] = "0, " + std::to_string(pos.x) + ", " + std::to_string(pos.y) + ", " + std::to_string(pos.z); + tp_data.json.data["Radar"][key_name] = "0, " + std::to_string(pos.x) + ", " + std::to_string(pos.y) + ", " + std::to_string(pos.z); /* "Radar" : { @@ -38,7 +38,7 @@ void Teleport::FetchRadarSpriteData() Teleport::Teleport() { - json.LoadData(search_categories, selected_item); + tp_data.json.LoadData(tp_data.categories, tp_data.selected); quick_teleport = config.GetValue("quick_teleport", false); Events::processScriptsEvent += [] @@ -153,9 +153,9 @@ void Teleport::RemoveTeleportEntry(std::string& category, std::string& key, std: { if (category == "Custom") { - json.data["Custom"].erase(key); + tp_data.json.data["Custom"].erase(key); CHud::SetHelpMessage("Location removed", false, false, false); - json.WriteToDisk(); + tp_data.json.WriteToDisk(); } else CHud::SetHelpMessage("You can only remove custom location", false, false, false); } @@ -228,7 +228,7 @@ void Teleport::Draw() { FetchRadarSpriteData(); ImGui::Spacing(); - Ui::DrawJSON(json, search_categories, selected_item, filter, &TeleportToLocation, &RemoveTeleportEntry); + Ui::DrawJSON(tp_data.json, tp_data.categories, tp_data.selected, tp_data.filter, &TeleportToLocation, &RemoveTeleportEntry); ImGui::EndTabItem(); } @@ -240,13 +240,13 @@ void Teleport::Draw() ImGui::Spacing(); if (ImGui::Button("Add location", Ui::GetSize())) { - json.data["Custom"][location_buffer] = ("0, " + std::string(input_buffer)); + tp_data.json.data["Custom"][location_buffer] = ("0, " + std::string(input_buffer)); // Clear the Radar coordinates - json.data.erase("Radar"); - json.data["Radar"] = {}; + tp_data.json.data.erase("Radar"); + tp_data.json.data["Radar"] = {}; - json.WriteToDisk(); + tp_data.json.WriteToDisk(); } ImGui::EndTabItem(); } diff --git a/CheatMenu/Teleport.h b/CheatMenu/Teleport.h index fbc7bfb..5a3b82f 100644 --- a/CheatMenu/Teleport.h +++ b/CheatMenu/Teleport.h @@ -8,10 +8,7 @@ private: inline static bool insert_coord = false; inline static bool quick_teleport = false; inline static char input_buffer[INPUT_BUFFER_SIZE] = ""; - inline static CJson json = CJson("teleport"); - inline static ImGuiTextFilter filter = ""; - inline static std::vector search_categories; - inline static std::string selected_item = "All"; + inline static SearchData tp_data{ "teleport" }; inline static char location_buffer[INPUT_BUFFER_SIZE] = ""; inline static uint quick_teleport_timer = 0; diff --git a/CheatMenu/Vehicle.cpp b/CheatMenu/Vehicle.cpp index eb0370e..54ed0fd 100644 --- a/CheatMenu/Vehicle.cpp +++ b/CheatMenu/Vehicle.cpp @@ -12,9 +12,9 @@ Vehicle::Vehicle() { if (!images_loaded) { - Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\images\\"), ".jpg", spawner::search_categories, spawner::image_vec); - Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\components\\"), ".jpg", tune::search_categories, tune::image_vec); - Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\paintjobs\\"), ".png", texture9::search_categories, texture9::image_vec); + Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\images\\"), ".jpg", spawner::veh_data.categories, spawner::veh_data.images); + Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\components\\"), ".jpg", tune_data.categories, tune_data.images); + Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\paintjobs\\"), ".png", texture_data.categories, texture_data.images); images_loaded = true; } @@ -153,9 +153,9 @@ Vehicle::Vehicle() Vehicle::~Vehicle() { - Util::ReleaseTextures(spawner::image_vec); - Util::ReleaseTextures(tune::image_vec); - Util::ReleaseTextures(texture9::image_vec); + Util::ReleaseTextures(spawner::veh_data.images); + Util::ReleaseTextures(tune_data.images); + Util::ReleaseTextures(texture_data.images); } void Vehicle::AddComponent(const std::string& component, const bool display_message) @@ -922,7 +922,7 @@ void Vehicle::Draw() ImGui::SetNextItemWidth(ImGui::GetWindowContentRegionWidth() - 2.5); ImGui::InputTextWithHint("##LicenseText", "License plate text", spawner::license_text, 9); - Ui::DrawImages(spawner::image_vec, ImVec2(100, 75), spawner::search_categories, spawner::selected_item, spawner::filter, SpawnVehicle, nullptr, + Ui::DrawImages(spawner::veh_data.images, ImVec2(100, 75), spawner::veh_data.categories, spawner::veh_data.selected, spawner::veh_data.filter, SpawnVehicle, nullptr, [](std::string str) { return GetNameFromModel(std::stoi(str)); @@ -1104,7 +1104,7 @@ Only some vehicles will have them."); ImGui::SameLine(); ImGui::Checkbox("Material filter", &color::material_filter); ImGui::Spacing(); - Ui::DrawImages(texture9::image_vec, ImVec2(100, 80), texture9::search_categories, texture9::selected_item, texture9::filter, + Ui::DrawImages(texture_data.images, ImVec2(100, 80), texture_data.categories, texture_data.selected, texture_data.filter, [](std::string& str) { Paint::SetNodeTexture(FindPlayerPed()->m_pVehicle, Paint::veh_nodes::selected, str, color::material_filter); @@ -1118,7 +1118,7 @@ Only some vehicles will have them."); if (ImGui::BeginTabItem("Tune")) { ImGui::Spacing(); - Ui::DrawImages(tune::image_vec, ImVec2(100, 80), tune::search_categories, tune::selected_item, tune::filter, + Ui::DrawImages(tune_data.images, ImVec2(100, 80), tune_data.categories, tune_data.selected, tune_data.filter, [](std::string& str) {AddComponent(str);}, [](std::string& str) {RemoveComponent(str); }, [](std::string& str) {return str;}, diff --git a/CheatMenu/Vehicle.h b/CheatMenu/Vehicle.h index 7a356fb..8d32b0b 100644 --- a/CheatMenu/Vehicle.h +++ b/CheatMenu/Vehicle.h @@ -41,32 +41,16 @@ private: struct spawner { - inline static ImGuiTextFilter filter = ""; - inline static std::string selected_item = "All"; - inline static std::vector search_categories; - inline static std::vector> image_vec; + inline static SearchData veh_data; inline static bool spawn_inside = true; inline static bool spawn_in_air = true; inline static char license_text[9] = ""; }; - struct texture9 - { - inline static ImGuiTextFilter filter = ""; - inline static std::string selected_item = "All"; - inline static std::vector search_categories; - inline static std::vector> image_vec; - }; + inline static SearchData texture_data; + inline static SearchData tune_data; inline static bool images_loaded = false; - struct tune - { - inline static ImGuiTextFilter filter = ""; - inline static std::string selected_item = "All"; - inline static std::vector search_categories; - inline static std::vector> image_vec; - }; - struct unlimited_nitro { inline static bool enabled = false; diff --git a/CheatMenu/Weapon.cpp b/CheatMenu/Weapon.cpp index fc08b2e..050ed3b 100644 --- a/CheatMenu/Weapon.cpp +++ b/CheatMenu/Weapon.cpp @@ -10,7 +10,7 @@ Weapon::Weapon() { if (!images_loaded) { - Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\weapons\\"), ".jpg", Weapon::search_categories, Weapon::weapon_vec); + Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\weapons\\"), ".jpg", Weapon::weapon_data.categories, Weapon::weapon_data.images); images_loaded = true; } @@ -63,7 +63,7 @@ Weapon::Weapon() Weapon::~Weapon() { - Util::ReleaseTextures(Weapon::weapon_vec); + Util::ReleaseTextures(Weapon::weapon_data.images); } void Weapon::SetGangWeapon(std::string& weapon_type) @@ -198,10 +198,10 @@ void Weapon::Draw() ImGui::Columns(1); ImGui::Spacing(); - ImGui::Text("Current weapon: %s", weapon_json.data[std::to_string(gang_weapons[selected_gang][selected_weapon_count])].get()); + ImGui::Text("Current weapon: %s", weapon_data.json.data[std::to_string(gang_weapons[selected_gang][selected_weapon_count])].get().c_str()); ImGui::Spacing(); - Ui::DrawImages(weapon_vec, ImVec2(65, 65), search_categories, selected_item, filter, SetGangWeapon, nullptr, - [](std::string str) {return weapon_json.data[str].get(); }, + Ui::DrawImages(weapon_data.images, ImVec2(65, 65), weapon_data.categories, weapon_data.selected, weapon_data.filter, SetGangWeapon, nullptr, + [](std::string str) {return weapon_data.json.data[str].get(); }, [](std::string str) {return str != "-1"; /*Jetpack*/ } ); ImGui::EndTabItem(); @@ -214,8 +214,8 @@ void Weapon::Draw() ammo_count = (ammo_count < 0) ? 0 : ammo_count; ammo_count = (ammo_count > 99999) ? 99999 : ammo_count; } - Ui::DrawImages(weapon_vec, ImVec2(65, 65), search_categories, selected_item, filter, GiveWeaponToPlayer, nullptr, - [](std::string str) {return weapon_json.data[str].get(); }, + Ui::DrawImages(weapon_data.images, ImVec2(65, 65), weapon_data.categories, weapon_data.selected, weapon_data.filter, GiveWeaponToPlayer, nullptr, + [](std::string str) {return weapon_data.json.data[str].get(); }, [](std::string str) {return str != "0"; /*Unarmed*/ } ); ImGui::EndTabItem(); diff --git a/CheatMenu/Weapon.h b/CheatMenu/Weapon.h index bc5c759..ebc899b 100644 --- a/CheatMenu/Weapon.h +++ b/CheatMenu/Weapon.h @@ -3,14 +3,9 @@ class Weapon { public: - inline static ImGuiTextFilter filter = ""; - inline static std::string selected_item = "All"; - inline static std::vector search_categories; - inline static std::vector> weapon_vec; + inline static SearchData weapon_data{ "weapon" }; inline static bool images_loaded = false; - inline static CJson weapon_json = CJson("weapon"); - inline static bool auto_aim = false; inline static bool fast_reload = false; inline static bool huge_damage = false; diff --git a/CheatMenu/pch.h b/CheatMenu/pch.h index 8e28a48..2c4012d 100644 --- a/CheatMenu/pch.h +++ b/CheatMenu/pch.h @@ -102,4 +102,14 @@ struct HotKeyData int key1; int key2; bool is_down = false; -}; \ No newline at end of file +}; + + +struct SearchData +{ + CJson json; + ImGuiTextFilter filter = ""; + std::vector categories; + std::string selected = "All"; + std::vector> images; +};