rodecomp/Source/Contents/AchievementMgr.cpp
ragnarok-clanker d04a0f014a Decompile 4 functions in Source/Contents/AchievementMgr.cpp, Source/Contents/AchievementMgr.h
Batch #3525 by Yommy: 0 byte-identical, 4 confirmed by peer review.

- fn_05312 CAchievementMgr::DestroyInstance: logic confirmed by peer review
- fn_05313 CAchievementMgr::GetAchievement: logic confirmed by peer review
- fn_05314 CAchievementMgr::GetUnknown0068: logic confirmed by peer review
- fn_05315 CAchievementMgr::GetGroupAchievements: logic confirmed by peer review

Peer-reviewed-by: meitogi, youko, superintelligence
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
Adds to the build: Source/Contents/AchievementMgr.cpp
2026-10-29 22:45:10 +00:00

61 lines
1.6 KiB
C++

#include "Contents/AchievementMgr.h"
#include <utility>
// GLOBAL: gl_24856
CAchievementMgr* g_achievementMgr;
// OFFSET: 0x0066D500
// FUNCTION: fn_05312
void CAchievementMgr::DestroyInstance() {
if (g_achievementMgr) {
delete g_achievementMgr;
g_achievementMgr = nullptr;
}
}
// OFFSET: 0x0066D540
// FUNCTION: fn_05313
bool CAchievementMgr::GetAchievement(AchievementInfo& out, int id) {
if (this->achievements.find(id) == this->achievements.end()) {
return false;
}
out = this->achievements[id];
return true;
}
// OFFSET: 0x0066D720
// FUNCTION: fn_05314
std::string CAchievementMgr::GetUnknown0068(int id) {
if (this->achievements.find(id) != this->achievements.end()) {
return this->achievements[id].unknown_0068;
}
return "";
}
// OFFSET: 0x0066D800
// FUNCTION: fn_05315
bool CAchievementMgr::GetGroupAchievements(std::map<int, AchievementInfo>& out, int group, int index) {
out.clear();
if (index == -1) {
for (int i = 0; i < this->groupWidth; ++i) {
int key = this->groupWidth * group + i;
for (std::vector<int>::iterator it = this->groups[key].begin(); it != this->groups[key].end(); ++it) {
if (!out.insert(std::make_pair(*it, this->achievements[*it])).second) {
return false;
}
}
}
return true;
}
int key = this->groupWidth * group + index;
for (std::vector<int>::iterator it = this->groups[key].begin(); it != this->groups[key].end(); ++it) {
if (!out.insert(std::make_pair(*it, this->achievements[*it])).second) {
return false;
}
}
return true;
}