#pragma once namespace Components { class Maps : public Component { public: Maps(); ~Maps(); #if defined(DEBUG) || defined(FORCE_UNIT_TESTS) const char* getName() override { return "Maps"; }; #endif static void HandleAsSPMap(); static void AddDependency(std::string expression, std::string zone); static std::pair GetTeamsForMap(std::string map); static std::vector GetDependenciesForMap(std::string map); static std::string CurrentMainZone; private: class DLC { public: int index; std::string url; std::vector maps; }; static bool IsSPMap; static std::vector DlcPacks; static std::vector EntryPool; static std::vector> DependencyList; static std::vector CurrentDependencies; static void GetBSPName(char* buffer, size_t size, const char* format, const char* mapname); static void LoadAssetRestrict(Game::XAssetType type, Game::XAssetHeader asset, std::string name, bool* restrict); static void LoadMapZones(Game::XZoneInfo *zoneInfo, unsigned int zoneCount, int sync); static void OverrideMapEnts(Game::MapEnts* ents); static int IgnoreEntityStub(const char* entity); static Game::G_GlassData* GetWorldData(); static void GetWorldDataStub(); static void LoadRawSun(); static void AddDlc(DLC dlc); static void UpdateDlcStatus(); #if defined(DEBUG) && defined(ENABLE_DXSDK) static void ExportMap(Game::GfxWorld* world); #endif void reallocateEntryPool(); }; }