bool WorldCustom::toFile()
{
	cout << "To file: " << file << endl;
	resetError();
	Writer* writer = new Writer(file.c_str());
	if (writer && writer->Open())
	{
		try
		{
			writer->writeMultipleFormats("[Continents=%u]\n", continentsVector->size());
			for (int i = 0; i < continentsVector->size(); i++)
				writer->writeMultipleFormats("%n=%u,%u\n", continentsVector->at(i)->getName(), continentsVector->at(i)->getRegistryValue(), continentsVector->at(i)->getControlValue());
			//cout << countriesVector->at(0)->getName();
			//cout << continentsVector->at(0)->getName();
			writer->writeMultipleFormats("[Territories=%u]\n", countriesVector->size());
			for (int i = 0; i < countriesVector->size(); i++)
				writer->writeMultipleFormats("%n=%u\n", countriesVector->at(i)->getName().c_str(), countriesVector->at(i)->getRegistryValue());
			writer->writeMultipleFormats("[Links=%u]\n", numberOfLinks);
			for (int i = 0, j = 0; i < (int)countriesVector->size(); i++)
			{
				writer->writeMultipleFormats("%u,%u,%u,%u,", countriesVector->at(i)->getRegistryValue(), countriesVector->at(i)->getPositionX(), countriesVector->at(i)->getPositionY(), countriesVector->at(i)->getContinent()->getRegistryValue());
				for (j = 0; j < (int)countriesVector->at(i)->getConnectedCountries()->size(); j++)
				{
					writer->writeNextPosSignedINT32(countriesVector->at(i)->getConnectedCountries()->at(j)->getRegistryValue());
					if (j == countriesVector->at(i)->getConnectedCountries()->size() - 1)
						writer->writeNextByte('\n');
					else
						writer->writeNextByte(',');
				}
			}
			writer->writeNextByte('\n');
		}
		//The data sent to the writer was corrupted.
		catch (DataNotGood dng) {
			setError(dng.what());
			return false;
		}
		//File does not respond.
		catch (fileNotGood fng) {
			setError(fng.what());
			return false;
		}
		//Close the file whatever happened not to loose data.
		writer->Close();

		return true;
	}
	else
		setError("Could not open the output file.");
	return false;
}
Exemple #2
0
/*
	* Reversed operation of what happened within analyseFile().
	* Please see analyseFile() for more information.
	*/
bool World::toFile(const char* _outputFile)
{
	lastOperationSuccess = false;
	Writer* writer = new Writer(_outputFile);
	if (writer && writer->Open())
	{
		try
		{
			writer->writeMultipleFormats("[Continents=%u]\n", continentsVector->size());
			for (int i = 0; i < continentsVector->size(); i++)
				writer->writeMultipleFormats("%n=%u\n", continentsVector->at(i)->getName(), continentsVector->at(i)->getRegistryValue());
			writer->writeMultipleFormats("[Territories=%u]\n", countriesVector->size());
			for (int i = 0; i < countriesVector->size(); i++)
				writer->writeMultipleFormats("%n=%u\n", countriesVector->at(i)->getName(), countriesVector->at(i)->getRegistryValue());
			writer->writeMultipleFormats("[Links=%u]\n", numberOfLinks);
			for (int i = 0, j = 0; i < countriesVector->size(); i++)
			{
				writer->writeMultipleFormats("%u,%u,%u,%u,", countriesVector->at(i)->getRegistryValue(), countriesVector->at(i)->getPositionX(), countriesVector->at(i)->getPositionY(), countriesVector->at(i)->getContinent()->getRegistryValue());
				for (j = 0; j < countriesVector->at(i)->getConnectedCountries()->size(); j++)
				{
					writer->writeNextPosSignedINT32(countriesVector->at(i)->getConnectedCountries()->at(j)->getRegistryValue());
					if (j == countriesVector->at(i)->getConnectedCountries()->size() - 1)
						writer->writeNextByte('\n');
					else
						writer->writeNextByte(',');
				}
			}
			writer->writeNextByte('\n');
		}
		//The data sent to the writer was corrupted.
		catch (DataNotGood dng) {
			lastErrorMessage = dng.what();
			return false;
		}
		//File does not respond.
		catch (fileNotGood fng) {
			lastErrorMessage = fng.what();
			return false;
		}
		//Close the file whatever happened not to loose data.
		writer->Close();

		lastOperationSuccess = true;
		return true;
	}
	else
		lastErrorMessage = "Could not open the output file.";
	return false;
}