Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
playerstatbase.c
Go to the documentation of this file.
2{
3 protected Man m_Player;
4
5 int m_Type;
10 float Get();
11 string GetLabel();
12 void SetByFloat(float value);
13 void SetByFloatEx(float value, string system = "" );
14 bool IsSynced();
16 void Init(int id);
19 float GetMax();
20 float GetMin();
21 int GetType()
22 {
23 return m_Type;
24 }
25
26 void SetPlayer(Man player)
27 {
28 m_Player = player;
29 }
30}
31
32class PlayerStat<Class T> extends PlayerStatBase
33{
34 protected T m_MinValue;
35 protected T m_MaxValue;
36 protected T m_Value;
37 protected T m_ValueLastSynced;
38 protected string m_ValueLabel;
39 protected int m_Flags;
40
42
43 void PlayerStat(T min, T max, T init, string label, int flags)
44 {
45 m_MinValue = min;
46 m_MaxValue = max;
47 m_Value = init;
48 m_ValueLabel = label;
49 m_Flags = flags;
50
52 }
53
54 override void Init(int id)
55 {
56 m_Type = id;
57 }
58
59 override void SerializeValue(array<ref StatDebugObject> objects, int flags)
60 {
61 objects.Insert(new StatDebugObject(GetLabel(), Get(), eRemoteStatType.PLAYER_STATS));
62 }
63
64 override bool IsSynced()
65 {
66 return m_Flags & EPSstatsFlags.SYNCED == EPSstatsFlags.SYNCED;
67 }
68
69 override void OnRPC(ParamsReadContext ctx)
70 {
71 super.OnRPC(ctx);
72
73 if (IsSynced())
74 {
75 ctx.Read(CachedObjectsParams.PARAM2_INT_FLOAT);
76
77 int type = CachedObjectsParams.PARAM2_INT_FLOAT.param1;
78 T value = CachedObjectsParams.PARAM2_INT_FLOAT.param2;
79
80 if (m_Type == type)
81 Set(value);
82 }
83 }
84
85 void Set(T value, string system = "")
86 {
87 if (value > m_MaxValue)
88 {
90 }
91 else if (value < m_MinValue)
92 {
94 }
95 else
96 {
97 m_Value = value;
98 }
99
100 #ifdef SERVER
101 if (IsSynced())
102 {
104 {
106 if (T == float && Math.AbsFloat(m_ValueLastSynced - m_Value) < 0.05)
107 return;
108
109 CachedObjectsParams.PARAM2_INT_FLOAT.param1 = m_Type;
110 CachedObjectsParams.PARAM2_INT_FLOAT.param2 = m_Value;
111 m_Player.RPCSingleParam(ERPCs.RPC_PLAYER_STAT, CachedObjectsParams.PARAM2_INT_FLOAT, true, m_Player.GetIdentity());
113 }
114 }
115 #endif
116 }
117
118 void SetByFloat(float value, string system = "")
119 {
120 T f = value;
121 Set(f, system);
122 }
123
124 override void SetByFloatEx(float value, string system = "")
125 {
126 SetByFloat(value, system);
127 }
128
129 void Add( T value, string system = "" )
130 {
131 Set(m_Value+value, system);
132 }
133
134 override float Get()
135 {
136 return m_Value;
137 }
138
139 override string GetLabel()
140 {
141 return m_ValueLabel;
142 }
143
144 override float GetMax()
145 {
146 return m_MaxValue;
147 }
148
149 override float GetMin()
150 {
151 return m_MinValue;
152 }
153
154 override float GetNormalized()
155 {
156 return Math.InverseLerp(GetMin(), GetMax(), Get());
157 }
158
160 {
161 return m_Records;
162 }
163
164 void CreateRecord(float value, string system)
165 {
166 m_Records.Insert( new PlayerStatRecord(value, GetGame().GetTime(), system ) );
167 }
168
170 {
171 ctx.Write(m_Value);
172 }
173
174 override bool OnStoreLoad( ParamsReadContext ctx)
175 {
176 T value;
177 if (ctx.Read(value))
178 {
179 m_Value = value;
180 }
181 else
182 {
183 return false;
184 }
185
186 return true;
187 }
188
189 override void OnAfterStoreLoad()
190 {
191 // forces the sync
192 Set(Get());
193 }
194
197
199 {
200 return m_Manager;
201 }
202}
eBleedingSourceType m_Type
Super root of all classes in Enforce script.
Definition enscript.c:11
Definition enmath.c:7
float GetNormalized()
void SetPlayer(Man player)
void SetByFloat(float value)
void OnStoreSave(ParamsWriteContext ctx)
bool OnStoreLoad(ParamsReadContext ctx)
array< PlayerStatRecord > GetRecords()
void SerializeValue(array< ref StatDebugObject > objects, int flags)
string GetLabel()
void SetByFloatEx(float value, string system="")
void Init(int id)
void OnRPC(ParamsReadContext ctx)
void OnAfterStoreLoad()
Serialization general interface. Serializer API works with:
Definition serializer.c:56
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
override Widget Init()
Definition dayzgame.c:127
ERPCs
Definition erpcs.c:2
proto native CGame GetGame()
string m_Value
Definition enentity.c:808
DayZPlayer m_Player
Definition hand_events.c:42
enum MagnumStableStateID init
float GetTime()
T m_Value
class PlayerStatBase m_MinValue
PlayerStats GetManager()
void Add(T value, string system="")
void Set(T value, string system="")
void PlayerStat(T min, T max, T init, string label, int flags)
void CreateRecord(float value, string system)
int m_Flags
T m_ValueLastSynced
PlayerStats m_Manager
DEPRECATED.
string m_ValueLabel
T m_MaxValue
ref array< PlayerStatRecord > m_Records
void PlayerStats(Man player)
Definition playerstats.c:19
EPSstatsFlags
Definition playerstats.c:2