#ifndef __ILEADERBOARD__H__ #define __ILEADERBOARD__H__ #include #include #include #include #include "dCommonVars.h" class ILeaderboard { public: struct Entry { LWOOBJID charId{}; uint32_t lastPlayedTimestamp{}; float primaryScore{}; float secondaryScore{}; float 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 LWOOBJID playerId, const uint32_t gameId) = 0; virtual void SaveScore(const LWOOBJID playerId, const uint32_t gameId, const Score& score) = 0; virtual void UpdateScore(const LWOOBJID playerId, const uint32_t gameId, const Score& score) = 0; virtual void IncrementNumWins(const LWOOBJID playerId, const uint32_t gameId) = 0; virtual void IncrementTimesPlayed(const LWOOBJID playerId, const uint32_t gameId) = 0; }; #endif //!__ILEADERBOARD__H__