Plasma Engine  2.0
Loading...
Searching...
No Matches
Stats.h
1#pragma once
2
3#include <Foundation/Basics.h>
4#include <Foundation/Communication/Event.h>
5#include <Foundation/Containers/Map.h>
6#include <Foundation/Strings/String.h>
7#include <Foundation/Types/Variant.h>
8
14class PL_FOUNDATION_DLL plStats
15{
16public:
18
22 static void RemoveStat(plStringView sStatName);
23
30 static void SetStat(plStringView sStatName, const plVariant& value);
31
33 static const plVariant& GetStat(plStringView sStatName) { return s_Stats[sStatName]; }
34
36 static const MapType& GetAllStats() { return s_Stats; }
37
40 {
43 {
46 Remove
47 };
48
49 EventType m_EventType;
50 plStringView m_sStatName;
51 plVariant m_NewStatValue;
52 };
53
54 using plEventStats = plEvent<const StatsEventData&, plMutex>;
55
57 static void AddEventHandler(plEventStats::Handler handler) { s_StatsEvents.AddEventHandler(handler); }
58
60 static void RemoveEventHandler(plEventStats::Handler handler) { s_StatsEvents.RemoveEventHandler(handler); }
61
62private:
63 static plMutex s_Mutex;
64 static MapType s_Stats;
65 static plEventStats s_StatsEvents;
66};
Definition Event.h:177
Definition Map.h:408
Provides a simple mechanism for mutual exclusion to prevent multiple threads from accessing a shared ...
Definition Mutex.h:13
This class holds a simple map that maps strings (keys) to strings (values), which represent certain s...
Definition Stats.h:15
static void AddEventHandler(plEventStats::Handler handler)
Adds an event handler that is called every time a stat is changed.
Definition Stats.h:57
static const MapType & GetAllStats()
Returns the entire map of stats, can be used to display them.
Definition Stats.h:36
static void RemoveEventHandler(plEventStats::Handler handler)
Removes a previously added event handler.
Definition Stats.h:60
static const plVariant & GetStat(plStringView sStatName)
Returns the value of the given stat. Returns an invalid plVariant, if the stat did not exist before.
Definition Stats.h:33
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
The event data that is broadcast whenever a stat is changed.
Definition Stats.h:40
EventType
Which type of event this is.
Definition Stats.h:43
@ Add
A variable has been set for the first time.
Definition Stats.h:44
@ Set
A variable has been changed.
Definition Stats.h:45