#include "igamemgr.h" #include "tier0/platform.h" #include "tier1/interface.h" #include "tier2/ifilesystem.h" #include "tier2/fileformats/ini.h" abstract_class CGame: public IGame { public: virtual void Load() override; virtual void GameFrame() override; private: void *m_pLibrary; }; abstract_class CGameManager: public IGameManager { public: virtual void Init() override; virtual void Shutdown() override; virtual IGame *LoadGame( const char *szGameName ) override; virtual IGameMod *LoadGlobalMod( const char *szModName ) override; private: IINIFile *g_pGameParameters; }; void CGameManager::Init() { IFileHandle *pFile; size_t nDataSize = 0; CUtlBuffer szData; IINISection *pMainGame; CUtlString sz; pFile = filesystem->Open("game.ini", FILEMODE_READ); szData = CUtlBuffer(pFile->Size()); pFile->Read(szData.GetMemory(), szData.GetSize()); pFile->Close(); g_pGameParameters= INIManager()->ReadString(szData); pMainGame = g_pGameParameters->GetSection("MainGame"); LoadGame(pMainGame->GetStringValue("path")); } void CGameManager::Shutdown() { INIManager()->ReleaseFile(g_pGameParameters); } //----------------------------------------------------------------------------- // Load all the packages //----------------------------------------------------------------------------- IGame *CGameManager::LoadGame( const char *szGameName ) { } IGameMod *CGameManager::LoadGlobalMod( const char *szModName ) { } IGameManager *GameManager() { static CGameManager manager; return (IGameManager*)&manager; }