1#include "Game/System/AlreadyDoneFlagInGalaxy.hpp"
2#include "Game/Util/HashUtil.hpp"
3#include "Game/Util/JMapUtil.hpp"
4#include "Game/Util/SceneUtil.hpp"
6AlreadyDoneInfo::AlreadyDoneInfo() {
14void AlreadyDoneInfo::clear() {
20void AlreadyDoneInfo::init(
const char *pInfo, s32 a2, s32 a3) {
21 u32 val = MR::getHashCode(pInfo) & 0x7FFF;
30 if ((otherInfo._0 & 0x7FFF) == (_0 & 0x7FFF)) {
31 if (otherInfo._2 == _2) {
32 if (otherInfo._4 == _4) {
41void AlreadyDoneInfo::set(
bool flag) {
42 _0 = (flag ? 0 : 0x8000) | _0 & 0x7FFF;
45AlreadyDoneFlagInGalaxy::AlreadyDoneFlagInGalaxy(
int numInfos)
46 : mDoneInfos(0), mNumInfos(0), _8(0) {
52void AlreadyDoneFlagInGalaxy::clear() {
57u32 AlreadyDoneFlagInGalaxy::setupFlag(
const char *pName,
const JMapInfoIter &rIter, u32 *a3) {
61 MR::getJMapInfoLinkID(rIter, &linkID);
62 s32 zoneID = MR::getPlacedZoneId(rIter);
65 info.init(pName, zoneID, linkID);
70 while (infs != lastInfs && !infs->isEqual(info)) {
77 if (infs != new_infs) {
78 result = infs - mDoneInfos;
79 *a3 = (infs->_0 >> 15) & 0x1;
84 new_infs->_0 = info._0;
85 new_infs->_2 = info._2;
86 new_infs->_4 = info._4;