Path: blob/master/RSDKv5/RSDK/User/Core/UserAchievements.hpp
1167 views
#ifndef USER_ACHIEVEMENTS_H1#define USER_ACHIEVEMENTS_H23#include <vector>4#include <string>56namespace RSDK7{8namespace SKU9{1011struct AchievementID {12uint8 idPS4; // achievement ID (PS4)13int32 idUnknown; // achievement ID (unknown platform)14const char *identifier; // achievement ID (as a string, used for most platforms)15};1617#if RETRO_REV0218// This is the base struct, it serves as the base for any API-specific stats19// This struct should never be removed20struct UserAchievements {21UserAchievements() {}2223virtual ~UserAchievements() = default;2425virtual void FrameInit() {}26virtual void StageLoad() { enabled = true; }27virtual void OnUnknownEvent() {}28#if RETRO_VER_EGS || RETRO_USE_DUMMY_ACHIEVEMENTS29virtual bool32 CheckAchievementsEnabled() { return false; }30virtual void SetAchievementNames(String **names, int32 count) {}31virtual String *GetAchievementString(String *string)32{33string->chars = NULL;34string->length = 0;35string->size = 0;36return string;37}38virtual String *GetAchievementName(String *name, uint32 id)39{40name->chars = NULL;41name->length = 0;42name->size = 0;43return name;44}45virtual bool32 CheckAchievementPopupEnabled() { return false; }46virtual int32 GetNextAchievementID() { return 0; }47virtual void RemoveLastAchievementID() {}48#endif49virtual void TryUnlockAchievement(AchievementID *id) { PrintLog(PRINT_POPUP, "Achievement Unlocked: %s", id->identifier); }5051bool32 enabled = true;52};5354#endif5556#if RETRO_REV0257extern UserAchievements *achievements;5859// ====================60// API Cores61// ====================6263// Dummy API64#if RETRO_USERCORE_DUMMY65#include "RSDK/User/Dummy/DummyAchievements.hpp"66#endif6768// Steam API69#if RETRO_USERCORE_STEAM70#include "RSDK/User/Steam/SteamAchievements.hpp"71#endif7273// Epic Games API74#if RETRO_USERCORE_EOS75#include "RSDK/User/EOS/EOSAchievements.hpp"76#endif7778// Switch API79#if RETRO_USERCORE_NX80#include "RSDK/User/NX/NXAchievements.hpp"81#endif8283inline bool32 GetAchievementsEnabled() { return achievements->enabled; }84inline void SetAchievementsEnabled(bool32 enabled) { achievements->enabled = enabled; }85#endif8687#if RETRO_VER_EGS || RETRO_USE_DUMMY_ACHIEVEMENTS88inline bool32 CheckAchievementsEnabled() { return achievements->CheckAchievementsEnabled(); }89inline void SetAchievementNames(String **names, int32 count) { achievements->SetAchievementNames(names, count); }90#endif9192#if RETRO_REV0293inline void TryUnlockAchievement(AchievementID *id) { achievements->TryUnlockAchievement(id); }94#else95void TryUnlockAchievement(AchievementID *id);96#endif97void ClearAchievements();9899#if RETRO_VER_EGS || RETRO_USE_DUMMY_ACHIEVEMENTS100extern bool32 achievementsEnabled;101extern uint16 achievementAniFrames[2];102extern Animator achievementAnimator[2];103extern String achievementStrings[2];104extern int32 achievementStringWidth[2];105extern int32 achievementID;106extern int32 achievementDisplayDuration;107extern int32 achievementsDrawn;108extern int32 achievementStrW;109extern int32 achievementStrX;110extern bool32 achievementsLoaded;111extern bool32 achievementDrawReady;112extern bool32 achievementForceReset;113114void LoadAchievementAssets();115void ProcessAchievements();116void DrawAchievements();117#endif118119} // namespace SKU120121void RegisterAchievement(const char *identifier, const char *name, const char *desc);122123// Start Dummy Achievment code124struct AchievementInfo {125std::string identifier;126std::string name;127std::string description;128bool32 achieved;129};130131extern std::string achievementText;132extern std::vector<AchievementInfo> achievementList;133extern std::vector<int32> achievementStack;134135// End Dummy Achievement code136137} // namespace RSDK138139#endif // USER_ACHIEVEMENTS_H140141142