1#pragma once
2
3#include <basis/seadTypes.h>
4#include <container/seadPtrArray.h>
5
6#include "System/GameDataHolderAccessor.h"
7
8namespace al {
9struct ActorInitInfo;
10}
11class Achievement;
12class AchievementInfoReader;
13
14class AchievementHolder {
15public:
16 AchievementHolder();
17 void init(const al::ActorInitInfo&);
18 void init();
19 bool isGetMoon(s32, GameDataHolderAccessor) const;
20 bool isAchieve(s32, GameDataHolderAccessor) const;
21 s32 getAchievementProgressCurrent(s32, GameDataHolderAccessor) const;
22 s32 getAchievementProgressMax(s32, GameDataHolderAccessor) const;
23 s32 getAchievementProgressCurrentRow(s32, GameDataHolderAccessor) const;
24 s32 calcAchieveTotalNum(GameDataHolderAccessor) const;
25 s32 calcMoonGetTotalNum(GameDataHolderAccessor) const;
26 Achievement* tryGetNewAchievement(GameDataHolderAccessor) const;
27
28private:
29 sead::PtrArray<Achievement> mArray;
30 AchievementInfoReader* mAchievementInfoReader = nullptr;
31};
32