Files
GTASource/game/SaveLoad/SavegameMigration/savegame_migration_metadata.cpp
T
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

104 lines
3.5 KiB
C++

#include "savegame_migration_metadata.h"
#include "savegame_migration_metadata_parser.h"
// #if __ALLOW_EXPORT_OF_SP_SAVEGAMES || __ALLOW_IMPORT_OF_SP_SAVEGAMES
#include <time.h>
// Rage headers
#include "file/asset.h"
#include "parser/manager.h"
// Game headers
#include "SaveLoad/savegame_channel.h"
#include "SaveLoad/savegame_date.h"
void CSaveGameMigrationMetadata::SetCompletedMissionLocalizedText(const char *pLocalizedText)
{
savegameDisplayf("CSaveGameMigrationMetadata::SetCompletedMissionLocalizedText - setting m_LastCompletedMissionLocalizedText to %s", pLocalizedText);
m_LastCompletedMissionLocalizedText = pLocalizedText;
}
void CSaveGameMigrationMetadata::SetCompletionPercentage(float percentage)
{
savegameDisplayf("CSaveGameMigrationMetadata::SetCompletionPercentage - setting m_fCompletionPercentage to %.2f", percentage);
m_fCompletionPercentage = percentage;
}
void CSaveGameMigrationMetadata::SetCompletedMissionTextKeyHash(u32 textKeyHash)
{
savegameDisplayf("CSaveGameMigrationMetadata::SetCompletedMissionTextKeyHash - setting m_HashOfTextKeyOfLastCompletedMission to %u", textKeyHash);
m_HashOfTextKeyOfLastCompletedMission = textKeyHash;
}
void CSaveGameMigrationMetadata::SetSavePosixTime(CDate &savedDateTime)
{
#if RSG_ORBIS
// It seems that savedDateTime already has 2000 added to it on PS4
int year = savedDateTime.GetYear(); // + 2000;
#else
int year = savedDateTime.GetYear() + 2000;
#endif
int month = savedDateTime.GetMonth();
int day = savedDateTime.GetDay();
int hour = savedDateTime.GetHour();
int minute = savedDateTime.GetMinute();
int second = savedDateTime.GetSecond();
savegameDisplayf("CSaveGameMigrationMetadata::SetSavePosixTime - year=%d month=%d day=%d hour=%d minute=%d second=%d",
year, month, day, hour, minute, second);
tm inputTime;
inputTime.tm_year = year - 1900; // Year - 1900
inputTime.tm_mon = month - 1; // Month, where 0 = jan
inputTime.tm_mday = day; // Day of the month
inputTime.tm_hour = hour;
inputTime.tm_min = minute;
inputTime.tm_sec = second;
inputTime.tm_isdst = -1; // Is DST on? 1 = yes, 0 = no, -1 = unknown
time_t posixTime;
posixTime = mktime(&inputTime);
u64 posixTime64 = static_cast<u64>(posixTime);
m_SavePosixTime = posixTime64 & 0xffffffff;
#if !__NO_OUTPUT
u32 posixTimeHigh32 = posixTime64 >> 32;
if (posixTimeHigh32 != 0)
{
savegameErrorf("CSaveGameMigrationMetadata::SetSavePosixTime - Expected posixTimeHigh32 to be 0, but it's %u", posixTimeHigh32);
savegameAssertf(0, "CSaveGameMigrationMetadata::SetSavePosixTime - Expected posixTimeHigh32 to be 0, but it's %u", posixTimeHigh32);
}
savegameDisplayf("CSaveGameMigrationMetadata::SetSavePosixTime - posixTime64 = %" I64FMT "u Setting m_SavePosixTime to the lower 32 bits = %u", posixTime64, m_SavePosixTime);
#endif // !__NO_OUTPUT
}
void CSaveGameMigrationMetadata::SetCompressedSize(u32 compressedSize)
{
savegameDisplayf("CSaveGameMigrationMetadata::SetCompressedSize - setting m_CompressedSize to %u", compressedSize);
m_CompressedSize = compressedSize;
}
void CSaveGameMigrationMetadata::SetUncompressedSize(u32 uncompressedSize)
{
savegameDisplayf("CSaveGameMigrationMetadata::SetUncompressedSize - setting m_UncompressedSize to %u", uncompressedSize);
m_UncompressedSize = uncompressedSize;
}
bool CSaveGameMigrationMetadata::SaveToLocalFile()
{
#if !__FINAL
ASSET.PushFolder("X:");
PARSER.SaveObject("exported_savegame_metadata", "xml", this, parManager::XML);
ASSET.PopFolder();
#endif // !__FINAL
return true;
}
// #endif //__ALLOW_EXPORT_OF_SP_SAVEGAMES || __ALLOW_IMPORT_OF_SP_SAVEGAMES