Beispiel #1
0
void Controller::parseSpecFile(std::string file)
{
	std::string expandedFilename;
	if(file[0] == '~')
	{
		file.erase(0,1);
		expandedFilename = std::string(getenv("HOME"));
		expandedFilename += file;
	}
	else
	{
		expandedFilename = file;
	}

	std::ifstream specFile(expandedFilename.c_str());
	
	if(!specFile.fail())
	{
		YAML::Parser specParser(specFile);
		YAML::Node specDoc;
		specParser.GetNextDocument(specDoc);
		
		for(int i=0; i<specDoc["commands"].size(); i++)
		{
			if(specDoc["commands"][i]["command"].GetType() == YAML::CT_SCALAR && specDoc["commands"][i]["source"].GetType() == YAML::CT_SEQUENCE)
			{
				std::string command;
				specDoc["commands"][i]["command"] >> command;
				
				// lets check whether this command is for us
				for(int s=0; s<specDoc["commands"][i]["source"].size(); s++)
				{
					std::string source;
					specDoc["commands"][i]["source"][s] >> source;
					
					if(source == "controller")
					{
						CommandParser *parser = new CommandParser(specDoc["commands"][i]);
						commands->insert(std::make_pair(command, parser));

						if(parser->getCommand().length() > maxCommandNameLength)
						{
							maxCommandNameLength = parser->getCommand().length();
						}
					}
				}
			}
		}
Beispiel #2
0
std::vector<JsonNode> CHeroHandler::loadLegacyData(size_t dataSize)
{
	heroes.resize(dataSize);
	std::vector<JsonNode> h3Data;
	h3Data.reserve(dataSize);

	CLegacyConfigParser specParser("DATA/HEROSPEC.TXT");
	CLegacyConfigParser bioParser("DATA/HEROBIOS.TXT");
	CLegacyConfigParser parser("DATA/HOTRAITS.TXT");

	parser.endLine(); //ignore header
	parser.endLine();

	specParser.endLine(); //ignore header
	specParser.endLine();

	for (int i=0; i<GameConstants::HEROES_QUANTITY; i++)
	{
		JsonNode heroData;

		heroData["texts"]["name"].String() = parser.readString();
		heroData["texts"]["biography"].String() = bioParser.readString();
		heroData["texts"]["specialty"]["name"].String() = specParser.readString();
		heroData["texts"]["specialty"]["tooltip"].String() = specParser.readString();
		heroData["texts"]["specialty"]["description"].String() = specParser.readString();

		for(int x=0;x<3;x++)
		{
			JsonNode armySlot;
			armySlot["min"].Float() = parser.readNumber();
			armySlot["max"].Float() = parser.readNumber();
			armySlot["creature"].String() = genRefName(parser.readString());

			heroData["army"].Vector().push_back(armySlot);
		}
		parser.endLine();
		specParser.endLine();
		bioParser.endLine();

		h3Data.push_back(heroData);
	}
	return h3Data;
}