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; }
/* * 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; }