mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-12-31 16:31:30 -06:00
36 lines
700 B
C++
36 lines
700 B
C++
#include "achievement_data.h"
|
|
|
|
#define NUM_RECORDS sizeof(Records) / sizeof(AchRecord)
|
|
|
|
bool AchievementData::VerifySignature() const
|
|
{
|
|
char sig[4] = ACH_SIGNATURE;
|
|
|
|
return memcmp(Signature, sig, sizeof(Signature)) == 0;
|
|
}
|
|
|
|
bool AchievementData::VerifyVersion() const
|
|
{
|
|
return Version == AchVersion ACH_VERSION;
|
|
}
|
|
|
|
bool AchievementData::VerifyChecksum()
|
|
{
|
|
return Checksum == CalculateChecksum();
|
|
}
|
|
|
|
uint32_t AchievementData::CalculateChecksum()
|
|
{
|
|
auto result = 0;
|
|
|
|
for (int i = 0; i < NUM_RECORDS; i++)
|
|
{
|
|
auto& record = Records[i];
|
|
|
|
for (size_t j = 0; j < sizeof(AchRecord); j++)
|
|
result ^= ((uint8_t*)(&record))[j];
|
|
}
|
|
|
|
return result;
|
|
}
|