#pragma once #include "file_manager/file.hpp" #include "vehicle_item.hpp" #include "ped_item.hpp" #include "weapon_item.hpp" #include "gta/joaat.hpp" namespace big { class gta_data_service { std::vector m_vehicle_class_arr; std::map m_vehicle_hash_idx_map; std::vector m_vehicle_item_arr; const vehicle_item empty_vehicle_item = vehicle_item(); std::vector m_ped_type_arr; std::map m_ped_hash_idx_map; std::vector m_ped_item_arr; const ped_item empty_ped_item = ped_item(); std::vector m_weapon_type_arr; std::map m_weapon_hash_idx_map; std::vector m_weapon_item_arr; const weapon_item empty_weapon_item = weapon_item(); public: gta_data_service(); ~gta_data_service(); const vehicle_item& find_vehicle_by_hash(Hash hash); const std::vector& get_vehicle_class_arr(); const std::vector& get_vehicle_arr(); const ped_item& find_ped_by_hash(Hash hash); const std::vector& get_ped_type_arr(); const std::vector& get_ped_arr(); const weapon_item& find_weapon_by_hash(Hash hash); const std::vector& get_weapon_type_arr(); const std::vector& get_weapon_arr(); private: void load_from_file( std::string file_path, std::string etag_path, std::string url, bool(gta_data_service::* load_func)(std::filesystem::path), std::string data_name ); bool load_vehicles(std::filesystem::path path); bool load_peds(std::filesystem::path path); bool load_weapons(std::filesystem::path path); }; inline gta_data_service* g_gta_data_service{}; }