Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
modifierbase.c
Go to the documentation of this file.
7
8class ModifierBase
9{
10 int m_ID = 0;
12 string m_System = "Modifiers";
24 int m_TickType = (eModifiersTickType.TICK | eModifiersTickType.ACTIVATE_CHECK | eModifiersTickType.DEACTIVATE_CHECK);//some modifiers do not need to check activate condition, as they get activated by request
26 bool m_IsLocked = false;
27 EActivationType m_ActivationType;
29 PluginPlayerStatus m_ModulePlayerStatus;
30
32
34 {
35 Class.CastTo(m_ModulePlayerStatus, GetPlugin(PluginPlayerStatus));
36 }
37
38 void InitBase(PlayerBase player, ModifiersManager manager)
39 {
40 m_Manager = manager;
41 m_Player = player;
42 Init();
43 }
44
45 void Init()
46 {
48 AnalyticsRegisterStat(m_ID, "state");
49 }
50
52 {
53 return m_Player;
54 }
55
57 {
58 return m_IsPersistent;
59 }
60
62 {
63 m_Manager.m_ParamList.Insert(object);
64 }
65
67 {
69 }
70
71 string GetDebugText()
72 {
73 return "";
74 }
75
76 string GetDebugTextSimple()
77 {
78 return "";
79 }
80
82 {
83 m_TickType = (m_TickType & ~eModifiersTickType.ACTIVATE_CHECK);
84 }
85
87 {
88 m_TickType = (m_TickType & ~eModifiersTickType.DEACTIVATE_CHECK);
89 }
90
91 void Tick(float delta_time)
92 {
94 Activate();
95
96 if (m_IsActive)
97 {
98 m_AccumulatedTimeActive += delta_time;
100 {
101 if (m_TickType & eModifiersTickType.DEACTIVATE_CHECK && DeactivateCondition(m_Player) && !IsLocked())
102 {
103 Deactivate();
104 }
105 else
106 {
109 }
110
112 }
113 }
114 else if (m_TickType & eModifiersTickType.ACTIVATE_CHECK)
115 {
116 m_AccumulatedTimeInactive += delta_time;
118 {
119 if (ActivateCondition(m_Player))
120 {
121 if (!IsLocked())
122 ActivateRequest(EActivationType.TRIGGER_EVENT_ON_ACTIVATION);
123 }
124
126 }
127 }
128 }
129
130 bool IsActive()
131 {
132 return m_IsActive;
133 }
134
135 void SetLock(bool state)
136 {
137 m_IsLocked = state;
138 }
139
140 bool IsLocked()
141 {
142 return m_IsLocked;
143 }
144
146 {
148 }
149
151 {
152 return m_ActivatedTime;
153 }
154
155 void SetAttachedTime(float time)
156 {
157 m_ActivatedTime = time;
158 }
159
161 {
162 return m_ID;
163 }
164
165 string GetName()
166 {
167 string name = ClassName();
168 int indexStart = name.Length() - 4;
169 int indexEnd = name.Length();
170
171 name = name.SubstringInverted(name, indexStart, indexEnd);
172
173 return name;
174 }
175
176 bool ActivateCondition(PlayerBase player)
177 {
178 return false;
179 }
180
181 bool DeactivateCondition(PlayerBase player)
182 {
183 return false;
184 }
185
187 void OnActivate(PlayerBase player);
188
190 void OnReconnect(PlayerBase player);
191 void OnDeactivate(PlayerBase player);
192
193 void Activate()
194 {
196 {
197 AnalyticsRegisterStat(m_ID, "state");
198 AnalyticsSetState(m_ID, 1.0);
199 }
200
201 m_IsActive = true;
202 m_Player.m_SyncedModifiers = (m_Player.m_SyncedModifiers | m_SyncID);
203 if (m_ActivationType == EActivationType.TRIGGER_EVENT_ON_ACTIVATION)
205 else if (m_ActivationType == EActivationType.TRIGGER_EVENT_ON_CONNECT)
206 OnReconnect(m_Player);
207
208 m_Player.SetSynchDirty();
209 }
210
211 void ActivateRequest(EActivationType trigger)
212 {
213 m_ShouldBeActive = true;
214 m_ActivationType = trigger;
215 }
216
217 void Deactivate(bool trigger = true)
218 {
219 if (!m_IsActive)
220 return;
221
223 AnalyticsSetState(m_ID, -1.0);
224
225 m_Player.m_SyncedModifiers = (m_Player.m_SyncedModifiers & ~m_SyncID);
226 m_ShouldBeActive = false;
227 m_IsActive = false;
228 m_ActivatedTime = 0;
229 if (trigger)
231 }
232
233
235
236 private void OnTick(PlayerBase player, float deltaT);
237
238
239 private void AnalyticsRegisterStat(int modifierId, string keySuffix)
240 {
241 string modifierIdName = EnumTools.EnumToString(eModifiers, modifierId);
242 modifierIdName.ToLower();
243
244 m_Player.StatRegister(string.Format("%1_%2", modifierIdName, keySuffix));
245 }
246
248 private void AnalyticsSetState(int modifierId, float value)
249 {
250 string modifierStatKey = EnumTools.EnumToString(eModifiers, modifierId);
251 modifierStatKey.ToLower();
252
253 string formatttedKey = string.Format("%1_state", modifierStatKey);
254 if (value == -1.0)
255 {
256 if(m_Player.StatGet(formatttedKey) == 0.0)
257 return;
258 }
259
260 if (value == 1.0)
261 {
262 if(m_Player.StatGet(formatttedKey) == 1.0)
263 return;
264 }
265
266 m_Player.StatUpdate(formatttedKey, value);
267 }
268}
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
Super root of all classes in Enforce script.
Definition enscript.c:11
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Definition param.c:12
Serialization general interface. Serializer API works with:
Definition serializer.c:56
override void Tick()
int m_ID
ID of effect, given by SEffectManager when registered (automatically done when playing through it)
Definition effect.c:51
eModifiers
Definition emodifiers.c:2
DayZPlayer m_Player
Definition hand_events.c:42
bool m_TrackActivatedTime
overall time this modifier was active
void DisableDeactivateCheck()
void SetAttachedTime(float time)
void ModifierBase()
ModifiersManager m_Manager
float m_AccumulatedTimeInactive
void InitBase(PlayerBase player, ModifiersManager manager)
float m_AccumulatedTimeActive
void SetLock(bool state)
bool IsTrackAttachedTime()
eModifiersTickType
Definition modifierbase.c:2
@ ACTIVATE_CHECK
Definition modifierbase.c:4
@ TICK
Definition modifierbase.c:3
@ DEACTIVATE_CHECK
Definition modifierbase.c:5
float GetAttachedTime()
bool m_ShouldBeActive
void DisableActivateCheck()
bool m_IsLocked
void ResetLastTickTime()
float m_ActivatedTime
bool m_AnalyticsStatsEnabled
float m_LastTickedActive
bool m_IsActive
float m_LastTickedInactive
bool IsLocked()
int m_TickType
eModifierSyncIDs m_SyncID
float m_TickIntervalActive
float m_TickIntervalInactive
PlayerBase GetPlayer()
void ActivateRequest(EActivationType trigger)
EActivationType m_ActivationType
string m_System
the manager instance
void OnDeactivate(PlayerBase player)
Definition heavymetal.c:211
int GetModifierID()
bool IsActive()
void Deactivate(bool trigger=true)
void OnStoreSave(ParamsWriteContext ctx)
void MakeParamObjectPersistent(Param object)
bool IsPersistent()
bool m_IsPersistent
should this modifier track overall time it was active ?
void Activate()
PluginPlayerStatus m_ModulePlayerStatus
max 32 synced modifiers supported, 0 == no sync
eModifierSyncIDs
void ModifiersManager(PlayerBase player)
PluginBase GetPlugin(typename plugin_type)
void OnActivate()