#pragma once #include "Game/GameLanguage.h" #include "Game/IGame.h" #include "Pool/ZoneAssetPools.h" #include "Zone/ZoneTypes.h" #include "ZoneMemory.h" #include "ZoneScriptStrings.h" #include #include class IGame; class ZoneAssetPools; class Zone { public: std::string m_name; zone_priority_t m_priority; GameLanguage m_language; IGame* m_game; ZoneScriptStrings m_script_strings; std::unique_ptr m_pools; Zone(std::string name, zone_priority_t priority, IGame* game); ~Zone(); Zone(const Zone& other) = delete; Zone(Zone&& other) noexcept = default; Zone& operator=(const Zone& other) = delete; Zone& operator=(Zone&& other) noexcept = default; void Register(); [[nodiscard]] ZoneMemory& Memory() const; private: std::unique_ptr m_memory; bool m_registered; };