/** * * @author OLiver */ void SavedFile::WriteVersion(BinaryFile& file, unsigned int signature_length, const char* signature, unsigned short version) { // Signatur schreiben file.WriteRawData(signature, signature_length); // Version vom Programm reinschreiben (mal 0 mit reinschreiben, damits ne runde 8 ergibt!) file.WriteRawData(GetWindowRevision(), 8); // Version des Save-Formats file.WriteUnsignedShort(version); }
/** * schreibt die GlobalGameSettings in die Datei. * * @author OLiver */ void SavedFile::WriteGGS(BinaryFile& file) { Serializer ser; ggs.Serialize(&ser); file.WriteUnsignedInt(ser.GetLength()); file.WriteRawData(ser.GetData(), ser.GetLength()); }
/** * * @author OLiver */ bool Savegame::Save(BinaryFile& file) { // Versionszeug schreiben WriteVersion(file, 8, SAVE_SIGNATURE, SAVE_VERSION); // Timestamp der Aufzeichnung unser_time_t tmpTime = libendian::ConvertEndianess<false>::fromNative(save_time); file.WriteRawData(&tmpTime, 8); // Mapname file.WriteShortString(map_name); // Anzahl Spieler file.WriteUnsignedChar(GetPlayerCount()); // Größe der Spielerdaten (später ausfüllen) unsigned players_size = 0; unsigned players_pos = file.Tell(); file.WriteUnsignedInt(players_size); // Spielerdaten WritePlayerData(file); // Wieder zurückspringen und Größe des Spielerblocks eintragen unsigned new_pos = file.Tell(); file.Seek(players_pos, SEEK_SET); file.WriteUnsignedInt(new_pos - players_pos - 4); file.Seek(new_pos, SEEK_SET); // GGS WriteGGS(file); // Start-GF file.WriteUnsignedInt(start_gf); // Serialisiertes Spielzeug reinschreiben sgd.WriteToFile(file); return true; }
bool Savegame::Save(BinaryFile& file) { // Versionszeug schreiben WriteFileHeader(file); // Timestamp der Aufzeichnung unser_time_t tmpTime = libendian::ConvertEndianess<false>::fromNative(save_time); file.WriteRawData(&tmpTime, sizeof(tmpTime)); // Mapname file.WriteShortString(mapName); WritePlayerData(file); WriteGGS(file); // Start-GF file.WriteUnsignedInt(start_gf); // Serialisiertes Spielzeug reinschreiben sgd.WriteToFile(file); return true; }