void World::InitLevels() { levels.clear(); std::ifstream world(ResolveFileName(FILE_WORLD_DEF, DIR_WORLD)); if (world.is_open()) { std::string levelDef; while (std::getline(world, levelDef, ';').good()) { Level newLevel; std::string levelName = GetLevelName(levelDef); newLevel.Init(levelName + EXT_LEVEL); std::vector<std::string> cutscenes = GetLevelArrayOfCutscenes(levelDef); newLevel.InitCutscenes(cutscenes); levels.push_back(newLevel); } } else { Report::UnexpectedError("Can't open world file", __LINE__, __FILE__); } world.close(); }
Level* LevelFactory::CreateLevel(const std::string& aFilepath) { Level* newLevel = new Level(); myCurrentLevelFilePath = aFilepath; tinyxml2::XMLElement* levelElement = XMLUTIL::LoadFile(myCurrentLevelFilePath); Vector2f gridDimensionsF = XMLUTIL::GetVector2(levelElement,"GridDimensions"); Vector2<int> gridDimenions(static_cast<int>(gridDimensionsF.x),static_cast<int>(gridDimensionsF.y)); newLevel->Init(gridDimenions); if(levelElement->Attribute("WinningTile") != NULL) { Vector2<float> winningTileFloat = XMLUTIL::GetVector2(levelElement, "WinningTile"); Vector2<int> winningTileInt(static_cast<int>(winningTileFloat.myX), static_cast<int>(winningTileFloat.myY)); newLevel->SetWinningTile(winningTileInt); } CreateBlocks(newLevel,levelElement->FirstChildElement("Block")); return newLevel; }