示例#1
0
//Puzzle functions
void World::loadPuzzles(string file) {
	//Load puzzles
	char buffer[64];
	string dataText, argText;
	ifstream lvl(file);
	int phase = 0;

	//Helper variables for loading puzzles
	PartData data;
	string type, dynamic;
	vector <PartData> parts;
	Puzzle *puzzle = NULL;
	int bonus, challenge, time, par, parX, parY;

	//Load level
	while (!lvl.eof()) {
		//Read to buffer
		lvl >> buffer;
		argText = buffer;
		dataText = buffer;
		dataText.erase(std::remove(dataText.begin(), dataText.end(), ','), dataText.end());

		if (dataText.find("door") != -1) {
			//Done with description line, start phase 1
			phase = 1;
		}
		else if (phase && dataText.find("puzzle") != -1) {
			lvl >> buffer;

			if (puzzle != NULL) {
				puzzle->setParts(parts);
				puzzle->setChallenge(challenge);
				puzzle->setBonus(bonus);
				puzzle->setTime(time);
				puzzle->setParticleSpawn(par, parX, parY);
				puzzles->push_back(puzzle);
			}
			puzzle = new Puzzle();
			parts.clear();
			bonus = 0;
			challenge = 0;
			time = -1;
			par = 0;
			parX = 0;
			parY = 0;
		}
		else if (phase) {