#pragma once #include #include "Pool/ZoneAssetPools.h" #include "Pool/AssetPool.h" #include "Game/T5/T5.h" class GameAssetPoolT5 final : public ZoneAssetPools { int m_priority; static constexpr const char* ASSET_TYPE_INVALID = "invalid_asset_type"; static const char* ASSET_TYPE_NAMES[]; protected: XAssetInfoGeneric* AddAssetToPool(asset_type_t type, std::string name, void* asset, std::vector dependencies, std::vector usedScriptStrings, Zone* zone) override; public: std::unique_ptr> m_phys_preset; std::unique_ptr> m_phys_constraints; std::unique_ptr> m_destructible_def; std::unique_ptr> m_xanim_parts; std::unique_ptr> m_xmodel; std::unique_ptr> m_material; std::unique_ptr> m_technique_set; std::unique_ptr> m_image; std::unique_ptr> m_sound_bank; std::unique_ptr> m_sound_patch; 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_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_pack_index; std::unique_ptr> m_xglobals; std::unique_ptr> m_ddl; std::unique_ptr> m_glasses; std::unique_ptr> m_emblem_set; GameAssetPoolT5(Zone* zone, int priority); ~GameAssetPoolT5() override = default; void InitPoolStatic(asset_type_t type, size_t capacity) override; void InitPoolDynamic(asset_type_t type) override; _NODISCARD XAssetInfoGeneric* GetAsset(asset_type_t type, std::string name) const override; static const char* AssetTypeNameByType(asset_type_t assetType); _NODISCARD const char* GetAssetTypeName(asset_type_t assetType) const override; static asset_type_t AssetTypeCount(); _NODISCARD asset_type_t GetAssetTypeCount() const override; };