Refactored code

This commit is contained in:
Grinch_ 2021-06-17 19:00:32 +06:00
parent 14e2ba358e
commit d67a91b473
17 changed files with 89 additions and 108 deletions

View File

@ -5,8 +5,8 @@
Animation::Animation() Animation::Animation()
{ {
json.LoadData(search_categories, selected_item); anim_data.json.LoadData(anim_data.categories, anim_data.selected);
Cutscene::json.LoadData(Cutscene::categories, Cutscene::selected); Cutscene::data.json.LoadData(Cutscene::data.categories, Cutscene::data.selected);
Events::processScriptsEvent += [] Events::processScriptsEvent += []
{ {
@ -81,7 +81,7 @@ void Animation::Draw()
if (ImGui::BeginChild("Anims Child")) if (ImGui::BeginChild("Anims Child"))
{ {
ImGui::Spacing(); 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::EndChild();
} }
ImGui::EndTabItem(); ImGui::EndTabItem();
@ -126,8 +126,8 @@ void Animation::Draw()
ImGui::Spacing(); ImGui::Spacing();
if (ImGui::Button("Add animation", Ui::GetSize())) if (ImGui::Button("Add animation", Ui::GetSize()))
{ {
json.data["Custom"][anim_buffer] = ("0, " + std::string(ifp_buffer)); anim_data.json.data["Custom"][anim_buffer] = ("0, " + std::string(ifp_buffer));
json.WriteToDisk(); anim_data.json.WriteToDisk();
} }
ImGui::EndTabItem(); ImGui::EndTabItem();
} }
@ -153,7 +153,7 @@ void Animation::Draw()
if (ImGui::BeginChild("Cutscene Child")) if (ImGui::BeginChild("Cutscene Child"))
{ {
ImGui::Spacing(); 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::EndChild();
} }
ImGui::EndTabItem(); ImGui::EndTabItem();
@ -186,8 +186,8 @@ void Animation::RemoveAnimation(std::string& ifp, std::string& anim, std::string
{ {
if (ifp == "Custom") if (ifp == "Custom")
{ {
json.data["Custom"].erase(anim); anim_data.json.data["Custom"].erase(anim);
json.WriteToDisk(); anim_data.json.WriteToDisk();
CHud::SetHelpMessage("Animation removed", false, false, false); CHud::SetHelpMessage("Animation removed", false, false, false);
} }
else else

View File

@ -5,23 +5,16 @@ private:
inline static bool loop = false; inline static bool loop = false;
inline static bool secondary = false; inline static bool secondary = false;
inline static CJson json = CJson("animation"); inline static SearchData anim_data{"animation"};
inline static ImGuiTextFilter filter = "";
inline static std::vector<std::string> search_categories;
inline static std::string selected_item = "All";
struct Cutscene struct Cutscene
{ {
inline static CJson json = CJson("cutscene"); inline static SearchData data{ "cutscene" };
inline static ImGuiTextFilter filter = "";
inline static std::vector<std::string> categories;
inline static std::string selected = "All";
inline static std::string scene_name = ""; inline static std::string scene_name = "";
inline static int interior = 0; inline static int interior = 0;
inline static bool running = false; inline static bool running = false;
}; };
inline static char anim_buffer[INPUT_BUFFER_SIZE] = ""; inline static char anim_buffer[INPUT_BUFFER_SIZE] = "";
inline static char ifp_buffer[INPUT_BUFFER_SIZE] = ""; inline static char ifp_buffer[INPUT_BUFFER_SIZE] = "";

View File

@ -26,7 +26,7 @@ void Game::RealTimeClock()
Game::Game() 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); stat::json.LoadData(stat::search_categories, stat::selected_item);
freecam::fov = TheCamera.FindCamFOV(); 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(); 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(); ImGui::EndTabItem();
} }

View File

@ -2,10 +2,7 @@
class Game class Game
{ {
public: public:
inline static CJson json = CJson("mission"); inline static SearchData mission_data{ "mission" };
inline static ImGuiTextFilter filter = "";
inline static std::vector<std::string> search_categories;
inline static std::string selected_item = "All";
inline static std::vector<std::string> day_names = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" }; inline static std::vector<std::string> day_names = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
inline static char save_game_name[22] = ""; inline static char save_game_name[22] = "";

View File

@ -3,6 +3,9 @@
CJson::CJson(const char* name) CJson::CJson(const char* name)
{ {
if (name == "")
return;
file_path = PLUGIN_PATH((char*)"/CheatMenu/json/") + std::string(name) + ".json"; file_path = PLUGIN_PATH((char*)"/CheatMenu/json/") + std::string(name) + ".json";
if (fs::exists(file_path)) if (fs::exists(file_path))

View File

@ -105,7 +105,7 @@ public:
Saves json data to disk Saves json data to disk
*/ */
void WriteToDisk(); void WriteToDisk();
CJson(const char* text); CJson(const char* text = "");
}; };

View File

@ -12,7 +12,7 @@ Ped::Ped()
{ {
if (!images_loaded) 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; images_loaded = true;
} }
}; };
@ -20,7 +20,7 @@ Ped::Ped()
Ped::~Ped() Ped::~Ped()
{ {
Util::ReleaseTextures(peds_vec); Util::ReleaseTextures(ped_data.images);
for (CPed* ped : spawn_ped::list) for (CPed* ped : spawn_ped::list)
{ {
CWorld::Remove(ped); CWorld::Remove(ped);
@ -36,7 +36,7 @@ void Ped::SpawnPed(std::string& model)
return; return;
} }
if (Ped::ped_json.data.contains(model)) if (Ped::ped_data.json.data.contains(model))
{ {
CPlayerPed* player = FindPlayerPed(); CPlayerPed* player = FindPlayerPed();
CVector pos = player->GetPosition(); CVector pos = player->GetPosition();
@ -226,8 +226,8 @@ void Ped::Draw()
{ {
ImGui::Spacing(); ImGui::Spacing();
Ui::DrawImages(peds_vec, ImVec2(65, 110), search_categories, selected_item, filter, SpawnPed, nullptr, Ui::DrawImages(ped_data.images, ImVec2(65, 110), ped_data.categories, ped_data.selected, ped_data.filter, SpawnPed, nullptr,
[](std::string str) {return ped_json.data[str].get<std::string>(); }); [](std::string str) {return ped_data.json.data[str].get<std::string>(); });
ImGui::EndTabItem(); ImGui::EndTabItem();
} }
if (ImGui::BeginTabItem("Config")) if (ImGui::BeginTabItem("Config"))
@ -253,12 +253,12 @@ void Ped::Draw()
Ui::ListBox("Ped type", spawn_ped::ped_type, spawn_ped::selected_ped_type); Ui::ListBox("Ped type", spawn_ped::ped_type, spawn_ped::selected_ped_type);
ImGui::Spacing(); ImGui::Spacing();
ImGui::Text("Selected weapon: %s", Weapon::weapon_json.data[std::to_string(spawn_ped::weapon_id)].get<std::string>()); ImGui::Text("Selected weapon: %s", Weapon::weapon_data.json.data[std::to_string(spawn_ped::weapon_id)].get<std::string>());
ImGui::Spacing(); 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); }, [](std::string str) { spawn_ped::weapon_id = std::stoi(str); },
nullptr, nullptr,
[](std::string str) {return Weapon::weapon_json.data[str].get<std::string>(); }, [](std::string str) {return Weapon::weapon_data.json.data[str].get<std::string>(); },
[](std::string str) {return str != "-1"; /*Jetpack*/ } [](std::string str) {return str != "-1"; /*Jetpack*/ }
); );

View File

@ -5,14 +5,9 @@
class Ped class Ped
{ {
private: private:
inline static ImGuiTextFilter filter = ""; inline static SearchData ped_data{ "ped" };
inline static std::string selected_item = "All";
inline static std::vector<std::string> search_categories;
inline static std::vector<std::unique_ptr<TextureStructure>> peds_vec;
inline static bool images_loaded = false;
inline static CJson ped_json = CJson("ped");
inline static CJson pedspecial_json = CJson("ped special"); inline static CJson pedspecial_json = CJson("ped special");
inline static bool images_loaded = false;
inline static std::vector<std::string> gang_names = inline static std::vector<std::string> gang_names =
{ {
@ -22,7 +17,8 @@ private:
inline static bool exgangwars_installed = false; inline static bool exgangwars_installed = false;
inline static int ped_remove_radius = 5; inline static int ped_remove_radius = 5;
struct spawn_ped { struct spawn_ped
{
inline static std::vector<CPed*> list; inline static std::vector<CPed*> list;
inline static int accuracy = 50; inline static int accuracy = 50;
inline static int health = 100; inline static int health = 100;

View File

@ -50,7 +50,7 @@ Player::Player()
if (!images_loaded) 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; images_loaded = true;
} }
@ -118,7 +118,7 @@ Player::Player()
Player::~Player() Player::~Player()
{ {
Util::ReleaseTextures(clothes_vec); Util::ReleaseTextures(cloth_data.images);
} }
void Player::ChangePlayerCloth(std::string& name) void Player::ChangePlayerCloth(std::string& name)
@ -161,7 +161,7 @@ void Player::ChangePlayerCloth(std::string& name)
void Player::ChangePlayerModel(std::string& model) 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(); 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(); CPlayerPed* player = FindPlayerPed();
if (Ped::pedspecial_json.data.contains(model) || custom_skin) if (Ped::pedspecial_json.data.contains(model) || custom_skin)
@ -373,7 +373,7 @@ void Player::Draw()
} }
ImGui::Spacing(); 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::string str)
{ {
std::stringstream ss(str); std::stringstream ss(str);
@ -400,8 +400,8 @@ void Player::Draw()
} }
if (ImGui::BeginTabItem("Ped skins")) if (ImGui::BeginTabItem("Ped skins"))
{ {
Ui::DrawImages(Ped::peds_vec, ImVec2(65, 110), Ped::search_categories, Ped::selected_item, Ped::filter, ChangePlayerModel, nullptr, 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_json.data[str].get<std::string>(); }); [](std::string str) {return Ped::ped_data.json.data[str].get<std::string>(); });
ImGui::EndTabItem(); ImGui::EndTabItem();
} }
if (ImGui::BeginTabItem("Custom skins")) if (ImGui::BeginTabItem("Custom skins"))
@ -410,7 +410,7 @@ void Player::Draw()
if (modloader_installed) 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'"); Ui::ShowTooltip("Place your dff & txd files inside 'modloader/Custom Skins'");
ImGui::Spacing(); ImGui::Spacing();
ImGui::TextWrapped("Note: Your txd & dff names can't exceed 8 characters. Don't change names while the game is running."); 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 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(); ImGui::Spacing();
if (ImGui::Button("Download Modloader", ImVec2(Ui::GetSize(1)))) if (ImGui::Button("Download Modloader", ImVec2(Ui::GetSize(1))))
ShellExecute(NULL, "open", "https://gtaforums.com/topic/669520-mod-loader/", NULL, NULL, SW_SHOWNORMAL); ShellExecute(NULL, "open", "https://gtaforums.com/topic/669520-mod-loader/", NULL, NULL, SW_SHOWNORMAL);

View File

@ -10,10 +10,7 @@ private:
inline static bool god_mode = false; inline static bool god_mode = false;
inline static int body = 0; inline static int body = 0;
inline static bool aim_skin_changer = false; inline static bool aim_skin_changer = false;
inline static ImGuiTextFilter filter = ""; inline static SearchData cloth_data;
inline static std::string selected_item = "All";
inline static std::vector<std::string> search_categories;
inline static std::vector<std::unique_ptr<TextureStructure>> clothes_vec;
inline static bool images_loaded = false; inline static bool images_loaded = false;
struct custom_skins struct custom_skins

View File

@ -16,7 +16,7 @@ void Teleport::FetchRadarSpriteData()
if (cur_timer - timer < 5000) if (cur_timer - timer < 5000)
return; 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 // 175 is the max number of sprites, FLA can increase this limit, might need to update this
for (int i = 0; i != 175; ++i) 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>(); std::string sprite_name = sprite_name_json.data[std::to_string(sprite)].get<std::string>();
std::string key_name = sprite_name + ", " + Util::GetLocationName(&pos); 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" : { "Radar" : {
@ -38,7 +38,7 @@ void Teleport::FetchRadarSpriteData()
Teleport::Teleport() 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); quick_teleport = config.GetValue("quick_teleport", false);
Events::processScriptsEvent += [] Events::processScriptsEvent += []
@ -153,9 +153,9 @@ void Teleport::RemoveTeleportEntry(std::string& category, std::string& key, std:
{ {
if (category == "Custom") if (category == "Custom")
{ {
json.data["Custom"].erase(key); tp_data.json.data["Custom"].erase(key);
CHud::SetHelpMessage("Location removed", false, false, false); 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); else CHud::SetHelpMessage("You can only remove custom location", false, false, false);
} }
@ -228,7 +228,7 @@ void Teleport::Draw()
{ {
FetchRadarSpriteData(); FetchRadarSpriteData();
ImGui::Spacing(); 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(); ImGui::EndTabItem();
} }
@ -240,13 +240,13 @@ void Teleport::Draw()
ImGui::Spacing(); ImGui::Spacing();
if (ImGui::Button("Add location", Ui::GetSize())) 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 // Clear the Radar coordinates
json.data.erase("Radar"); tp_data.json.data.erase("Radar");
json.data["Radar"] = {}; tp_data.json.data["Radar"] = {};
json.WriteToDisk(); tp_data.json.WriteToDisk();
} }
ImGui::EndTabItem(); ImGui::EndTabItem();
} }

View File

@ -8,10 +8,7 @@ private:
inline static bool insert_coord = false; inline static bool insert_coord = false;
inline static bool quick_teleport = false; inline static bool quick_teleport = false;
inline static char input_buffer[INPUT_BUFFER_SIZE] = ""; inline static char input_buffer[INPUT_BUFFER_SIZE] = "";
inline static CJson json = CJson("teleport"); inline static SearchData tp_data{ "teleport" };
inline static ImGuiTextFilter filter = "";
inline static std::vector<std::string> search_categories;
inline static std::string selected_item = "All";
inline static char location_buffer[INPUT_BUFFER_SIZE] = ""; inline static char location_buffer[INPUT_BUFFER_SIZE] = "";
inline static uint quick_teleport_timer = 0; inline static uint quick_teleport_timer = 0;

View File

@ -12,9 +12,9 @@ Vehicle::Vehicle()
{ {
if (!images_loaded) 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\\images\\"), ".jpg", spawner::veh_data.categories, spawner::veh_data.images);
Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\components\\"), ".jpg", tune::search_categories, tune::image_vec); Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\components\\"), ".jpg", tune_data.categories, tune_data.images);
Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\paintjobs\\"), ".png", texture9::search_categories, texture9::image_vec); Util::LoadTexturesInDirRecursive(PLUGIN_PATH((char*)"CheatMenu\\vehicles\\paintjobs\\"), ".png", texture_data.categories, texture_data.images);
images_loaded = true; images_loaded = true;
} }
@ -153,9 +153,9 @@ Vehicle::Vehicle()
Vehicle::~Vehicle() Vehicle::~Vehicle()
{ {
Util::ReleaseTextures(spawner::image_vec); Util::ReleaseTextures(spawner::veh_data.images);
Util::ReleaseTextures(tune::image_vec); Util::ReleaseTextures(tune_data.images);
Util::ReleaseTextures(texture9::image_vec); Util::ReleaseTextures(texture_data.images);
} }
void Vehicle::AddComponent(const std::string& component, const bool display_message) 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::SetNextItemWidth(ImGui::GetWindowContentRegionWidth() - 2.5);
ImGui::InputTextWithHint("##LicenseText", "License plate text", spawner::license_text, 9); 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) [](std::string str)
{ {
return GetNameFromModel(std::stoi(str)); return GetNameFromModel(std::stoi(str));
@ -1104,7 +1104,7 @@ Only some vehicles will have them.");
ImGui::SameLine(); ImGui::SameLine();
ImGui::Checkbox("Material filter", &color::material_filter); ImGui::Checkbox("Material filter", &color::material_filter);
ImGui::Spacing(); 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) [](std::string& str)
{ {
Paint::SetNodeTexture(FindPlayerPed()->m_pVehicle, Paint::veh_nodes::selected, str, color::material_filter); 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")) if (ImGui::BeginTabItem("Tune"))
{ {
ImGui::Spacing(); 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) {AddComponent(str);},
[](std::string& str) {RemoveComponent(str); }, [](std::string& str) {RemoveComponent(str); },
[](std::string& str) {return str;}, [](std::string& str) {return str;},

View File

@ -41,32 +41,16 @@ private:
struct spawner struct spawner
{ {
inline static ImGuiTextFilter filter = ""; inline static SearchData veh_data;
inline static std::string selected_item = "All";
inline static std::vector<std::string> search_categories;
inline static std::vector<std::unique_ptr<TextureStructure>> image_vec;
inline static bool spawn_inside = true; inline static bool spawn_inside = true;
inline static bool spawn_in_air = true; inline static bool spawn_in_air = true;
inline static char license_text[9] = ""; inline static char license_text[9] = "";
}; };
struct texture9 inline static SearchData texture_data;
{ inline static SearchData tune_data;
inline static ImGuiTextFilter filter = "";
inline static std::string selected_item = "All";
inline static std::vector<std::string> search_categories;
inline static std::vector<std::unique_ptr<TextureStructure>> image_vec;
};
inline static bool images_loaded = false; inline static bool images_loaded = false;
struct tune
{
inline static ImGuiTextFilter filter = "";
inline static std::string selected_item = "All";
inline static std::vector<std::string> search_categories;
inline static std::vector<std::unique_ptr<TextureStructure>> image_vec;
};
struct unlimited_nitro struct unlimited_nitro
{ {
inline static bool enabled = false; inline static bool enabled = false;

View File

@ -10,7 +10,7 @@ Weapon::Weapon()
{ {
if (!images_loaded) 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; images_loaded = true;
} }
@ -63,7 +63,7 @@ Weapon::Weapon()
Weapon::~Weapon() Weapon::~Weapon()
{ {
Util::ReleaseTextures(Weapon::weapon_vec); Util::ReleaseTextures(Weapon::weapon_data.images);
} }
void Weapon::SetGangWeapon(std::string& weapon_type) void Weapon::SetGangWeapon(std::string& weapon_type)
@ -198,10 +198,10 @@ void Weapon::Draw()
ImGui::Columns(1); ImGui::Columns(1);
ImGui::Spacing(); ImGui::Spacing();
ImGui::Text("Current weapon: %s", weapon_json.data[std::to_string(gang_weapons[selected_gang][selected_weapon_count])].get<std::string>()); ImGui::Text("Current weapon: %s", weapon_data.json.data[std::to_string(gang_weapons[selected_gang][selected_weapon_count])].get<std::string>().c_str());
ImGui::Spacing(); ImGui::Spacing();
Ui::DrawImages(weapon_vec, ImVec2(65, 65), search_categories, selected_item, filter, SetGangWeapon, nullptr, Ui::DrawImages(weapon_data.images, ImVec2(65, 65), weapon_data.categories, weapon_data.selected, weapon_data.filter, SetGangWeapon, nullptr,
[](std::string str) {return weapon_json.data[str].get<std::string>(); }, [](std::string str) {return weapon_data.json.data[str].get<std::string>(); },
[](std::string str) {return str != "-1"; /*Jetpack*/ } [](std::string str) {return str != "-1"; /*Jetpack*/ }
); );
ImGui::EndTabItem(); ImGui::EndTabItem();
@ -214,8 +214,8 @@ void Weapon::Draw()
ammo_count = (ammo_count < 0) ? 0 : ammo_count; ammo_count = (ammo_count < 0) ? 0 : ammo_count;
ammo_count = (ammo_count > 99999) ? 99999 : ammo_count; ammo_count = (ammo_count > 99999) ? 99999 : ammo_count;
} }
Ui::DrawImages(weapon_vec, ImVec2(65, 65), search_categories, selected_item, filter, GiveWeaponToPlayer, nullptr, Ui::DrawImages(weapon_data.images, ImVec2(65, 65), weapon_data.categories, weapon_data.selected, weapon_data.filter, GiveWeaponToPlayer, nullptr,
[](std::string str) {return weapon_json.data[str].get<std::string>(); }, [](std::string str) {return weapon_data.json.data[str].get<std::string>(); },
[](std::string str) {return str != "0"; /*Unarmed*/ } [](std::string str) {return str != "0"; /*Unarmed*/ }
); );
ImGui::EndTabItem(); ImGui::EndTabItem();

View File

@ -3,14 +3,9 @@
class Weapon class Weapon
{ {
public: public:
inline static ImGuiTextFilter filter = ""; inline static SearchData weapon_data{ "weapon" };
inline static std::string selected_item = "All";
inline static std::vector<std::string> search_categories;
inline static std::vector<std::unique_ptr<TextureStructure>> weapon_vec;
inline static bool images_loaded = false; inline static bool images_loaded = false;
inline static CJson weapon_json = CJson("weapon");
inline static bool auto_aim = false; inline static bool auto_aim = false;
inline static bool fast_reload = false; inline static bool fast_reload = false;
inline static bool huge_damage = false; inline static bool huge_damage = false;

View File

@ -103,3 +103,13 @@ struct HotKeyData
int key2; int key2;
bool is_down = false; bool is_down = false;
}; };
struct SearchData
{
CJson json;
ImGuiTextFilter filter = "";
std::vector<std::string> categories;
std::string selected = "All";
std::vector<std::unique_ptr<TextureStructure>> images;
};