DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionContinuousBase.c
См. документацию.
2{
3 bool m_inLoop = false;
4 bool m_callLoopEnd = false;
5
7 {
8 if ( !m_ActionData )
9 {
11 }
13 {
15 if ( m_ActionData.m_State == UA_INITIALIZE )
16 {
19 m_callLoopEnd = true;
20 }
21
22 if (!m_Interrupted)
23 actionS.Do(m_ActionData, m_ActionData.m_State);
24 }
25 else if (m_callLoopEnd == true)
26 {
29 m_callLoopEnd = false;
30 }
32 }
33
34 void SetInLoop(bool value)
35 {
36 m_inLoop = value;
37 }
38
39 override void InitActionComponent()
40 {
41 m_Interrupted = false;
42 m_Canceled = false;
43 m_inLoop = false;
44
46 if ( m_ActionData.m_ActionComponent )
47 {
48 m_ActionData.m_ActionComponent.Init(m_ActionData);
49 }
51 RegisterAnimationEvent("ActionExecStart", UA_IN_START);
52 RegisterAnimationEvent("ActionExecEnd", UA_IN_END);
55 m_SoundObject = m_ActionData.m_Action.PlayActionSound(m_ActionData.m_Player);
56 }
57
58 //TODO: consider this for general use
59 /*override void EndActionComponent()
60 {
61 ActionContinuousBase action = ActionContinuousBase.Cast(m_ActionData.m_Action);
62
63 if (m_ActionData.m_State != UA_FINISHED)
64 m_Canceled = true;
65
66 if (m_ActionData.m_State == UA_FINISHED || m_ActionData.m_State == UA_CANCEL)
67 {
68 if (action.UseAlternativeInterrupt(m_ActionData))
69 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_FINISH);
70 else
71 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_END);
72 }
73 else
74 {
75 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_INTERRUPT);
76 }
77 }*/
78
79 override void EndActionComponent()
80 {
81 // TODO for second type animation SetCommand(DayZPlayerConstants.CMD_ACTIONINT_FINISH);
82 if ( m_ActionData.m_State == UA_FINISHED )
83 {
84 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_END);
85 }
86 else if (m_ActionData.m_State == UA_CANCEL )
87 {
89 if(action.HasAlternativeInterrupt())
90 {
91 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_FINISH);
92 }
93 else
94 {
95 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_END);
96 }
97 m_Canceled = true;
98 return;
99 //Cancel();
100 }
101 else
102 {
103 m_Canceled = true;
104 SetCommand(DayZPlayerConstants.CMD_ACTIONINT_END);
105 return;
106 }
107 m_ActionData.m_State = UA_FINISHED;
108 }
109
111 {
112 if ( m_ActionData.m_ActionComponent )
113 {
114 m_ActionData.m_State = m_ActionData.m_ActionComponent.Cancel(m_ActionData);
115 }
116 //EndActionComponent(); //already handled in 'AnimatedActionBase::Do' on cancel
117 }
118};
119
121{
122 PluginAdminLog m_AdminLog;
123
125 {
127 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_EAT;
128
129 if( g_Game && g_Game.IsServer() )
130 {
131 m_AdminLog = PluginAdminLog.Cast( GetPlugin(PluginAdminLog) );
132 }
133 }
134
135 override void OnEndInput( ActionData action_data )
136 {
137 ActionContinuousBaseCB callback;
138 if( Class.CastTo(callback, action_data.m_Callback) )
139 {
140 if ( callback.GetState() != callback.STATE_LOOP_END && callback.GetState() != callback.STATE_LOOP_END2 )
141 {
142 callback.UserEndsAction();
143 }
144 }
145 }
146
148 {
149 return false;
150 }
151
153 {
154 return false;
155 }
156
157 // lock default camera while performing the action
159 {
160 return true;
161 }
162
163 // camera up/down angle when performing a fullbody action
164 // values beetwen 0 and -90 (looking at ground) / 0 and 90 (looking above)
166 {
167 Vector2 udAngle = new Vector2(-70, 45);
168 return udAngle;
169 }
170
171 // camera (heading) left/right angle when performing a fullbody action
172 // values beetwen 0 and -180 (left restriction) / 0 and 180 (right restriction)
174 {
175 Vector2 lrAngle = new Vector2(-70, 70);
176 return lrAngle;
177 }
178
179 override typename GetInputType()
180 {
182 }
183
184 override int GetActionCategory()
185 {
186 return AC_CONTINUOUS;
187 }
188
189 override void OnAnimationEvent(ActionData action_data)
190 {
191 super.OnAnimationEvent(action_data);
192 ActionContinuousBaseCB callback;
193 if (Class.CastTo(callback, action_data.m_Callback))
194 {
195 if (action_data.m_DelayedAnimationEventID == UA_IN_START)
196 {
197 OnStartAnimationLoop(action_data);
198 callback.SetInLoop(true);
199 }
200 else if (action_data.m_DelayedAnimationEventID == UA_IN_END)
201 {
202 OnEndAnimationLoop(action_data);
203 callback.SetInLoop(false);
204 }
205 }
206 }
207
209 {
210#ifdef ENABLE_LOGGING
212 {
213 Debug.ActionLog("STS = " + action_data.m_Player.GetSimulationTimeStamp(), this.ToString() , "n/a", "OnStartAnimationLoop", action_data.m_Player.ToString() );
214 }
215#endif
216
217 if (g_Game.IsServer())
218 {
219 OnStartAnimationLoopServer(action_data);
220 }
221 else
222 {
223 OnStartAnimationLoopClient(action_data);
224 }
225 action_data.m_WasExecuted = false;
226 }
227
228 void OnEndAnimationLoop( ActionData action_data )
229 {
230#ifdef ENABLE_LOGGING
232 {
233 Debug.ActionLog("STS = " + action_data.m_Player.GetSimulationTimeStamp(), this.ToString() , "n/a", "OnEndAnimationLoop", action_data.m_Player.ToString() );
234 }
235#endif
236 if (g_Game.IsServer())
237 {
238 OnEndAnimationLoopServer(action_data);
239 }
240 else
241 {
242 OnEndAnimationLoopClient(action_data);
243 }
244 action_data.m_WasExecuted = false;
245 }
246
247 void OnFinishProgress( ActionData action_data )
248 {
249#ifdef ENABLE_LOGGING
251 {
252 Debug.ActionLog("STS = " + action_data.m_Player.GetSimulationTimeStamp(), this.ToString() , "n/a", "OnFinishProgress", action_data.m_Player.ToString() );
253 }
254#endif
255 if (g_Game.IsServer())
256 {
257 OnFinishProgressServer(action_data);
258
259 if ( m_AdminLog )
260 {
261 m_AdminLog.OnContinouousAction( action_data );
262 }
263 }
264 else
265 {
266 OnFinishProgressClient(action_data);
267 }
268 action_data.m_WasExecuted = false;
269 }
270
271
272 protected void OnStartAnimationLoopServer( ActionData action_data ) //method called on start main animation loop (after in animation part )
273 {
274 action_data.m_WasActionStarted = true;
275 }
276
277 protected void OnStartAnimationLoopClient( ActionData action_data ) //method called on start main animation loop (after in animation part )
278 {
279 action_data.m_WasActionStarted = true;
280 }
281
282 protected void OnEndAnimationLoopServer( ActionData action_data ) //method called on finish main animation loop (before out animation part )
283 {
284 }
285 protected void OnEndAnimationLoopClient( ActionData action_data ) //method called on finish main animation loop (before out animation part )
286 {
287 }
288
289 protected void OnFinishProgressServer( ActionData action_data )
290 {
291 }
292
293 protected void OnFinishProgressClient( ActionData action_data )
294 {
295 }
296};
const int AC_CONTINUOUS
void ContinuousDefaultActionInput(PlayerBase player)
Определения ActionInput.c:630
class DayZCreatureAnimInterface RegisterAnimationEvent(string event_name, string function_name)
DayZGame g_Game
Определения DayZGame.c:4074
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:326
bool m_Interrupted
Определения AnimatedActionBase.c:6
bool m_Canceled
Определения AnimatedActionBase.c:5
void CreateActionComponent()
Определения AnimatedActionBase.c:63
void SetCommand(int command_uid)
Определения AnimatedActionBase.c:56
SoundOnVehicle m_SoundObject
Определения AnimatedActionBase.c:4
void ActionBaseCB()
Определения AnimatedActionBase.c:9
ActionData m_ActionData
Определения AnimatedActionBase.c:3
Vector2 GetCameraLRAngle()
Определения ActionContinuousBase.c:173
override GetInputType()
Определения ActionContinuousBase.c:179
void OnEndAnimationLoop(ActionData action_data)
Определения ActionContinuousBase.c:228
bool UseAlternativeInterrupt(ActionData action_data)
Определения ActionContinuousBase.c:152
void OnFinishProgressClient(ActionData action_data)
Определения ActionContinuousBase.c:293
void OnEndAnimationLoopClient(ActionData action_data)
Определения ActionContinuousBase.c:285
bool HasAlternativeInterrupt()
Определения ActionContinuousBase.c:147
void OnStartAnimationLoopServer(ActionData action_data)
Определения ActionContinuousBase.c:272
override void OnEndInput(ActionData action_data)
Определения ActionContinuousBase.c:135
override int GetActionCategory()
Определения ActionContinuousBase.c:184
Vector2 GetCameraUDAngle()
Определения ActionContinuousBase.c:165
void OnFinishProgress(ActionData action_data)
Определения ActionContinuousBase.c:247
void OnStartAnimationLoop(ActionData action_data)
Определения ActionContinuousBase.c:208
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
void OnFinishProgressServer(ActionData action_data)
Определения ActionContinuousBase.c:289
bool IsCameraLockOnPerform()
Определения ActionContinuousBase.c:158
void OnStartAnimationLoopClient(ActionData action_data)
Определения ActionContinuousBase.c:277
override void OnAnimationEvent(ActionData action_data)
Определения ActionContinuousBase.c:189
PluginAdminLog m_AdminLog
Определения ActionContinuousBase.c:122
void OnEndAnimationLoopServer(ActionData action_data)
Определения ActionContinuousBase.c:282
bool CancelCondition()
Определения ActionContinuousBase.c:6
override void EndActionComponent()
Определения ActionContinuousBase.c:79
bool m_callLoopEnd
Определения ActionContinuousBase.c:4
void SetInLoop(bool value)
Определения ActionContinuousBase.c:34
void UserEndsAction()
Определения ActionContinuousBase.c:110
override void InitActionComponent()
Определения ActionContinuousBase.c:39
PlayerBase m_Player
Определения ActionBase.c:40
ActionBaseCB m_Callback
Определения ActionBase.c:36
bool m_WasActionStarted
Определения ActionBase.c:47
int m_DelayedAnimationEventID
Определения ActionBase.c:45
bool m_WasExecuted
Определения ActionBase.c:46
Определения ActionBase.c:22
void Do(ActionData action_data, int state)
Определения AnimatedActionBase.c:395
int m_CommandUID
Определения AnimatedActionBase.c:147
void AnimatedActionBase()
Определения AnimatedActionBase.c:155
Super root of all classes in Enforce script.
Определения EnScript.c:11
static void ActionLog(string message=LOG_DEFAULT, string plugin=LOG_DEFAULT, string author=LOG_DEFAULT, string label=LOG_DEFAULT, string entity=LOG_DEFAULT)
Определения 3_Game/DayZ/tools/Debug.c:188
Определения 3_Game/DayZ/tools/Debug.c:2
static bool IsActionLogEnable()
Определения 3_Game/DayZ/tools/Debug.c:749
Определения Vector2.c:2
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
const int UA_IN_START
Определения 3_Game/DayZ/constants.c:512
const int UA_FINISHED
Определения 3_Game/DayZ/constants.c:498
const int UA_INITIALIZE
Определения 3_Game/DayZ/constants.c:506
const int UA_ANIM_EVENT
Определения 3_Game/DayZ/constants.c:505
const int UA_IN_END
Определения 3_Game/DayZ/constants.c:513
const int UA_PROCESSING
Определения 3_Game/DayZ/constants.c:496
const int UA_CANCEL
Определения 3_Game/DayZ/constants.c:499
proto native void EnableCancelCondition(bool pEnable)
static const int STATE_LOOP_LOOP
Определения human.c:373
proto native int GetState()
returns one of STATE_...
Определения StaminaHandler.c:31
static const int STATE_LOOP_LOOP2
Определения human.c:376
proto native bool DefaultCancelCondition()
system implemented cancel condition (now raise or sprint cancels action)