[Kernel] Store earned achievements in-memory to prevent achievements spam
This doesn't store them externally so after restarting they will unlock again
This commit is contained in:
@@ -728,6 +728,13 @@ dword_result_t XamUserCreateAchievementEnumerator_entry(
|
||||
db.GetAchievements();
|
||||
|
||||
for (const util::XdbfAchievementTableEntry& entry : achievement_list) {
|
||||
auto is_unlocked =
|
||||
kernel_state()->achievement_manager()->IsAchievementUnlocked(
|
||||
entry.id);
|
||||
auto unlock_time =
|
||||
kernel_state()->achievement_manager()->GetAchievementUnlockTime(
|
||||
entry.id);
|
||||
|
||||
auto item = XStaticAchievementEnumerator::AchievementDetails{
|
||||
entry.id,
|
||||
xe::to_utf16(db.GetStringTableEntry(language, entry.label_id)),
|
||||
@@ -735,8 +742,9 @@ dword_result_t XamUserCreateAchievementEnumerator_entry(
|
||||
xe::to_utf16(db.GetStringTableEntry(language, entry.unachieved_id)),
|
||||
entry.image_id,
|
||||
entry.gamerscore,
|
||||
{0, 0},
|
||||
entry.flags};
|
||||
(uint32_t)(unlock_time << 31),
|
||||
(uint32_t)unlock_time,
|
||||
is_unlocked ? entry.flags | 0x20000 : entry.flags};
|
||||
|
||||
e->AppendItem(item);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user