diff options
Diffstat (limited to 'source/platform/StarStatisticsService.hpp')
-rw-r--r-- | source/platform/StarStatisticsService.hpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/source/platform/StarStatisticsService.hpp b/source/platform/StarStatisticsService.hpp new file mode 100644 index 0000000..c6afec7 --- /dev/null +++ b/source/platform/StarStatisticsService.hpp @@ -0,0 +1,40 @@ +#ifndef STAR_STATS_BACKEND_HPP +#define STAR_STATS_BACKEND_HPP + +#include "StarJson.hpp" + +namespace Star { + +STAR_CLASS(StatisticsService); + +class StatisticsService { +public: + virtual ~StatisticsService() = default; + + virtual bool initialized() const = 0; + virtual Maybe<String> error() const = 0; + + // The functions below aren't valid unless initialized() returns true and + // error() is empty. + + // setStat should return false for stats or types that aren't known by the + // service, without reporting an error. + // By sending all stats to the StatisticsService, we can configure collection + // of new stats entirely on the service, without any modifications to the game. + virtual bool setStat(String const& name, String const& type, Json const& value) = 0; + virtual Json getStat(String const& name, String const& type, Json def = {}) const = 0; + + // reportEvent should return false if the service doesn't handle this event. + virtual bool reportEvent(String const& name, Json const& fields) = 0; + + virtual bool unlockAchievement(String const& name) = 0; + virtual StringSet achievementsUnlocked() const = 0; + + virtual void refresh() = 0; + virtual void flush() = 0; + virtual bool reset() = 0; +}; + +} + +#endif |