/** ****************************************************************************** * Xenia : Xbox 360 Emulator Research Project * ****************************************************************************** * Copyright 2023 Ben Vanik. All rights reserved. * * Released under the BSD license - see LICENSE in the root for more details. * ****************************************************************************** */ #ifndef XENIA_KERNEL_ACHIEVEMENT_MANAGER_H_ #define XENIA_KERNEL_ACHIEVEMENT_MANAGER_H_ #include #include #include #include "xenia/xbox.h" namespace xe { namespace kernel { // TODO(gibbed): probably a FILETIME/LARGE_INTEGER, unknown currently struct X_ACHIEVEMENT_UNLOCK_TIME { xe::be unk_0; xe::be unk_4; }; struct X_ACHIEVEMENT_DETAILS { xe::be id; xe::be label_ptr; xe::be description_ptr; xe::be unachieved_ptr; xe::be image_id; xe::be gamerscore; X_ACHIEVEMENT_UNLOCK_TIME unlock_time; xe::be flags; static const size_t kStringBufferSize = 464; }; static_assert_size(X_ACHIEVEMENT_DETAILS, 36); class AchievementManager { public: AchievementManager(); void EarnAchievement(uint64_t xuid, uint32_t title_id, uint32_t achievement_id); bool IsAchievementUnlocked(uint32_t achievement_id); uint64_t GetAchievementUnlockTime(uint32_t achievement_id); private: std::map unlocked_achievements; // void Load(); // void Save(); }; } // namespace kernel } // namespace xe #endif // XENIA_KERNEL_ACHIEVEMENT_MANAGER_H_