This commit is contained in:
Aria 2025-03-21 22:23:30 +11:00
commit 9c94d113d3
Signed by untrusted user who does not match committer: aria
GPG key ID: 19AB7AA462B8AB3B
10260 changed files with 1237388 additions and 0 deletions

View file

@ -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