// ----------------------------------------------------------------------------- // Load game // Loads all the relevant data for a level. // If level != -1, it loads the filename with extension changed to .min // Otherwise it loads the appropriate level mine. // returns 0=everything ok, 1=old version, -1=error int LoadMineDataCompiled (CFile& cf, int bFileInfo) { int nStartOffset; nStartOffset = cf.Tell (); InitGameFileInfo (); if (ReadGameFileInfo (cf, nStartOffset)) return -1; if (ReadLevelInfo (cf)) return -1; gameStates.render.bD2XLights = gameStates.app.bD2XLevel && (gameTopFileInfo.fileinfoVersion >= 34); if (bFileInfo) return 0; gameData.objs.nNextSignature = 0; gameData.render.lights.nStatic = 0; nGameSaveOrgRobots = 0; nGameSavePlayers = 0; if (ReadObjectInfo (cf)) return -1; if (ReadWallInfo (cf)) return -1; if (ReadDoorInfo (cf)) return -1; if (ReadTriggerInfo (cf)) return -1; if (ReadReactorInfo (cf)) return -1; if (ReadBotGenInfo (cf)) return -1; if (ReadEquipGenInfo (cf)) return -1; if (ReadLightDeltaIndexInfo (cf)) return -1; if (ReadLightDeltaInfo (cf)) return -1; ClearLightSubtracted (); ResetObjects (gameFileInfo.objects.count); CheckAndLinkObjects (); ClearTransientObjects (1); //1 means clear proximity bombs CheckAndFixDoors (); //gameData.walls.nOpenDoors = gameFileInfo.doors.count; gameData.trigs.m_nTriggers = gameFileInfo.triggers.count; gameData.walls.nWalls = gameFileInfo.walls.count; CheckAndFixWalls (); CheckAndFixTriggers (); gameData.matCens.nBotCenters = gameFileInfo.botGen.count; FixObjectSegs (); #if DBG dump_mine_info (); #endif if ((gameTopFileInfo.fileinfoVersion < GAME_VERSION) && ((gameTopFileInfo.fileinfoVersion != 25) || (GAME_VERSION != 26))) return 1; //means old version return 0; }
void CGameServer::ReadLevels(tstring sDirectory) { tvector<tstring> asFiles = ListDirectory(sDirectory); for (size_t i = 0; i < asFiles.size(); i++) { tstring sFile = sDirectory + "/" + asFiles[i]; if (IsFile(sFile) && sFile.endswith(".txt")) ReadLevelInfo(sFile); if (IsDirectory(sFile)) ReadLevels(sFile); } }