#pragma once #include #include "Pool/IZoneAssetPools.h" #include "Pool/AssetPool.h" #include "IW4.h" class GameAssetPoolIW4 final : public IZoneAssetPools { int m_priority; std::vector m_assets_in_order; static const std::string ASSET_TYPE_INVALID; static const std::string ASSET_TYPE_NAMES[]; public: std::unique_ptr> m_phys_preset; std::unique_ptr> m_phys_collmap; std::unique_ptr> m_xanim_parts; std::unique_ptr> m_xmodel; std::unique_ptr> m_material; std::unique_ptr> m_material_pixel_shader; std::unique_ptr> m_material_vertex_shader; std::unique_ptr> m_material_vertex_decl; std::unique_ptr> m_technique_set; std::unique_ptr> m_image; // std::unique_ptr> m_sound; // std::unique_ptr> m_sound_curve; // std::unique_ptr> m_loaded_sound; // std::unique_ptr> m_clip_map; // std::unique_ptr> m_com_world; // std::unique_ptr> m_game_world_sp; // std::unique_ptr> m_game_world_mp; // std::unique_ptr> m_map_ents; // std::unique_ptr> m_fx_world; // std::unique_ptr> m_gfx_world; // std::unique_ptr> m_gfx_light_def; // std::unique_ptr> m_font; // std::unique_ptr> m_menu_list; // std::unique_ptr> m_menu_def; // std::unique_ptr> m_localize; // std::unique_ptr> m_weapon; // std::unique_ptr> m_snd_driver_globals; // std::unique_ptr> m_fx; // std::unique_ptr> m_fx_impact_table; std::unique_ptr> m_raw_file; std::unique_ptr> m_string_table; // std::unique_ptr> m_leaderboard; // std::unique_ptr> m_structed_data_def_set; // std::unique_ptr> m_tracer; // std::unique_ptr> m_vehicle; // std::unique_ptr> m_addon_map_ents; explicit GameAssetPoolIW4(int priority); ~GameAssetPoolIW4() override = default; void InitPoolStatic(asset_type_t type, size_t capacity) override; void InitPoolDynamic(asset_type_t type) override; XAssetInfoGeneric* AddAsset(asset_type_t type, std::string name, void* asset, std::vector& scriptStrings, std::vector& dependencies) override; XAssetInfoGeneric* GetAsset(asset_type_t type, std::string name) const override; const std::string& GetAssetTypeName(asset_type_t assetType) const override; iterator begin() const override; iterator end() const override; };