示例#1
0
文件: World.cpp 项目: emdeha/floyd
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();
}
示例#2
0
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;
}