Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Rubberduckycooly
GitHub Repository: Rubberduckycooly/RSDKv5-Decompilation
Path: blob/master/RSDKv5/RSDK/User/Core/UserAchievements.hpp
1167 views
1
#ifndef USER_ACHIEVEMENTS_H
2
#define USER_ACHIEVEMENTS_H
3
4
#include <vector>
5
#include <string>
6
7
namespace RSDK
8
{
9
namespace SKU
10
{
11
12
struct AchievementID {
13
uint8 idPS4; // achievement ID (PS4)
14
int32 idUnknown; // achievement ID (unknown platform)
15
const char *identifier; // achievement ID (as a string, used for most platforms)
16
};
17
18
#if RETRO_REV02
19
// This is the base struct, it serves as the base for any API-specific stats
20
// This struct should never be removed
21
struct UserAchievements {
22
UserAchievements() {}
23
24
virtual ~UserAchievements() = default;
25
26
virtual void FrameInit() {}
27
virtual void StageLoad() { enabled = true; }
28
virtual void OnUnknownEvent() {}
29
#if RETRO_VER_EGS || RETRO_USE_DUMMY_ACHIEVEMENTS
30
virtual bool32 CheckAchievementsEnabled() { return false; }
31
virtual void SetAchievementNames(String **names, int32 count) {}
32
virtual String *GetAchievementString(String *string)
33
{
34
string->chars = NULL;
35
string->length = 0;
36
string->size = 0;
37
return string;
38
}
39
virtual String *GetAchievementName(String *name, uint32 id)
40
{
41
name->chars = NULL;
42
name->length = 0;
43
name->size = 0;
44
return name;
45
}
46
virtual bool32 CheckAchievementPopupEnabled() { return false; }
47
virtual int32 GetNextAchievementID() { return 0; }
48
virtual void RemoveLastAchievementID() {}
49
#endif
50
virtual void TryUnlockAchievement(AchievementID *id) { PrintLog(PRINT_POPUP, "Achievement Unlocked: %s", id->identifier); }
51
52
bool32 enabled = true;
53
};
54
55
#endif
56
57
#if RETRO_REV02
58
extern UserAchievements *achievements;
59
60
// ====================
61
// API Cores
62
// ====================
63
64
// Dummy API
65
#if RETRO_USERCORE_DUMMY
66
#include "RSDK/User/Dummy/DummyAchievements.hpp"
67
#endif
68
69
// Steam API
70
#if RETRO_USERCORE_STEAM
71
#include "RSDK/User/Steam/SteamAchievements.hpp"
72
#endif
73
74
// Epic Games API
75
#if RETRO_USERCORE_EOS
76
#include "RSDK/User/EOS/EOSAchievements.hpp"
77
#endif
78
79
// Switch API
80
#if RETRO_USERCORE_NX
81
#include "RSDK/User/NX/NXAchievements.hpp"
82
#endif
83
84
inline bool32 GetAchievementsEnabled() { return achievements->enabled; }
85
inline void SetAchievementsEnabled(bool32 enabled) { achievements->enabled = enabled; }
86
#endif
87
88
#if RETRO_VER_EGS || RETRO_USE_DUMMY_ACHIEVEMENTS
89
inline bool32 CheckAchievementsEnabled() { return achievements->CheckAchievementsEnabled(); }
90
inline void SetAchievementNames(String **names, int32 count) { achievements->SetAchievementNames(names, count); }
91
#endif
92
93
#if RETRO_REV02
94
inline void TryUnlockAchievement(AchievementID *id) { achievements->TryUnlockAchievement(id); }
95
#else
96
void TryUnlockAchievement(AchievementID *id);
97
#endif
98
void ClearAchievements();
99
100
#if RETRO_VER_EGS || RETRO_USE_DUMMY_ACHIEVEMENTS
101
extern bool32 achievementsEnabled;
102
extern uint16 achievementAniFrames[2];
103
extern Animator achievementAnimator[2];
104
extern String achievementStrings[2];
105
extern int32 achievementStringWidth[2];
106
extern int32 achievementID;
107
extern int32 achievementDisplayDuration;
108
extern int32 achievementsDrawn;
109
extern int32 achievementStrW;
110
extern int32 achievementStrX;
111
extern bool32 achievementsLoaded;
112
extern bool32 achievementDrawReady;
113
extern bool32 achievementForceReset;
114
115
void LoadAchievementAssets();
116
void ProcessAchievements();
117
void DrawAchievements();
118
#endif
119
120
} // namespace SKU
121
122
void RegisterAchievement(const char *identifier, const char *name, const char *desc);
123
124
// Start Dummy Achievment code
125
struct AchievementInfo {
126
std::string identifier;
127
std::string name;
128
std::string description;
129
bool32 achieved;
130
};
131
132
extern std::string achievementText;
133
extern std::vector<AchievementInfo> achievementList;
134
extern std::vector<int32> achievementStack;
135
136
// End Dummy Achievement code
137
138
} // namespace RSDK
139
140
#endif // USER_ACHIEVEMENTS_H
141
142