DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PlayerStatBase.c
См. документацию.
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 {
76
77 int type = CachedObjectsParams.PARAM2_INT_FLOAT.param1;
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
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
Определения BleedingSource.c:25
override Widget Init()
Определения DayZGame.c:127
ERPCs
Определения ERPCs.c:2
DayZPlayer m_Player
Определения Hand_Events.c:42
enum MagnumStableStateID init
ModifiersManager m_Manager
Определения ModifierBase.c:11
float GetTime()
Определения NotificationSystem.c:35
class PlayerStatBase m_MinValue
PlayerStats GetManager()
Определения PlayerStatBase.c:198
void Add(T value, string system="")
Определения PlayerStatBase.c:129
void Set(T value, string system="")
Определения PlayerStatBase.c:85
void PlayerStat(T min, T max, T init, string label, int flags)
Определения PlayerStatBase.c:43
void CreateRecord(float value, string system)
Определения PlayerStatBase.c:164
int m_Flags
Определения PlayerStatBase.c:39
T m_ValueLastSynced
Определения PlayerStatBase.c:37
string m_ValueLabel
Определения PlayerStatBase.c:38
T m_MaxValue
Определения PlayerStatBase.c:35
ref array< PlayerStatRecord > m_Records
Определения PlayerStatBase.c:41
void PlayerStats(Man player)
Определения PlayerStats.c:19
EPSstatsFlags
Определения PlayerStats.c:2
eRemoteStatType
Определения RemotePlayerStatDebug.c:2
static ref Param2< int, float > PARAM2_INT_FLOAT
Определения UtilityClasses.c:17
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения EnMath.c:7
float GetNormalized()
Man m_Player
Определения PlayerStatBase.c:3
void SetPlayer(Man player)
Определения PlayerStatBase.c:26
void SetByFloat(float value)
int GetType()
Определения PlayerStatBase.c:21
void OnStoreSave(ParamsWriteContext ctx)
bool OnStoreLoad(ParamsReadContext ctx)
int m_Type
Определения PlayerStatBase.c:5
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()
Определения PlayerStatBase.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
Определения StatDebugObject.c:2
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
string m_Value
Определения EnEntity.c:806
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
static proto float AbsFloat(float f)
Returns absolute value.