#ifndef __ILEADERBOARD__H__ #define __ILEADERBOARD__H__ #include #include #include #include class ILeaderboard { public: struct Entry { uint32_t charId{}; uint32_t lastPlayedTimestamp{}; float primaryScore{}; float secondaryScore{}; uint32_t tertiaryScore{}; uint32_t numWins{}; uint32_t numTimesPlayed{}; uint32_t ranking{}; std::string name{}; }; struct Score { auto operator<=>(const Score& rhs) const = default; float primaryScore{ 0.0f }; float secondaryScore{ 0.0f }; float tertiaryScore{ 0.0f }; }; // Get the donation total for the given activity id. virtual std::optional GetDonationTotal(const uint32_t activityId) = 0; virtual std::vector GetDescendingLeaderboard(const uint32_t activityId) = 0; virtual std::vector GetAscendingLeaderboard(const uint32_t activityId) = 0; virtual std::vector GetNsLeaderboard(const uint32_t activityId) = 0; virtual std::vector GetAgsLeaderboard(const uint32_t activityId) = 0; virtual std::optional GetPlayerScore(const uint32_t playerId, const uint32_t gameId) = 0; virtual void SaveScore(const uint32_t playerId, const uint32_t gameId, const Score& score) = 0; virtual void UpdateScore(const uint32_t playerId, const uint32_t gameId, const Score& score) = 0; virtual void IncrementNumWins(const uint32_t playerId, const uint32_t gameId) = 0; virtual void IncrementTimesPlayed(const uint32_t playerId, const uint32_t gameId) = 0; }; #endif //!__ILEADERBOARD__H__