DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
SmptAnimMeta.c
Go to the documentation of this file.
2{
5}
6
8{
16
18 {
19 }
20
22 {
23 m_Manager = manager;
24 m_Player = player;
25 }
26
27 bool IsPlaying()
28 {
29 return m_IsPlaying;
30 }
31
33 {
34 return m_DestroyRequested;
35 }
36
38 {
39 m_DestroyRequested = true;
41
42 if( type == eAnimFinishType.FAILURE)// <--------------- FAILED
43 {
44 if( m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_SERVER || !GetGame().IsMultiplayer())
45 {
46 if( Symptom )
47 {
48 Symptom.AnimationPlayFailed();
49 }
50 }
51 }
52 else if( type == eAnimFinishType.SUCCESS)// <--------------- SUCCESS
53 {
54 if( m_Player.GetInstanceType() == DayZPlayerInstanceType.INSTANCETYPE_SERVER || !GetGame().IsMultiplayer())
55 {
56 if( Symptom )
57 {
58 Symptom.AnimationFinish();
59 }
60 }
61 }
62 }
63
65 {
66 EAnimPlayState played = Play();
67
68 if(played == EAnimPlayState.FAILED)
69 {
71 }
72 return played;
73 }
74
75 protected EAnimPlayState Play();
76
77 void Update(HumanMovementState movement_state);
78
79};
80
81class SmptAnimMetaFB extends SmptAnimMetaBase
82{
85
87 {
88 if(m_Player)
90 }
91
92 override void Init(ParamsReadContext ctx, SymptomManager manager, PlayerBase player)
93 {
94 super.Init(ctx, manager, player);
96 }
97
99 {
100 m_Canceled = false;
101
102 HumanCommandActionCallback callback = m_Player.GetCommand_Action();
103
104 if (!callback)
105 {
106 callback = m_Player.GetCommandModifier_Action();
107 }
108 if( callback )
109 {
110 callback.InternalCommand(DayZPlayerConstants.CMD_ACTIONINT_INTERRUPT);
111 m_Canceled = true;
112 }
113
114 if(!m_Canceled)
115 {
116 SymptomCB anim_callback = SymptomCB.Cast(m_Player.StartCommand_Action(m_AnimID, SymptomCB, m_StanceMask));
117
118 if(anim_callback)
119 {
120 anim_callback.Init(m_Duration, m_Player);
121 m_IsPlaying = true;
123 return EAnimPlayState.OK;
124 }
125 else
126 {
127 return EAnimPlayState.FAILED;
128 }
129 }
130 return EAnimPlayState.POSTPONED;
131 }
132}
133
135{
137 override void Init(ParamsReadContext ctx, SymptomManager manager, PlayerBase player)
138 {
139 super.Init(ctx, manager, player);
141 }
142
144 {
145 HumanCommandActionCallback callback = m_Player.GetCommand_Action();
146 if (!callback)
147 {
148 callback = m_Player.GetCommandModifier_Action();
149 }
150 if( !callback )
151 {
152 HumanCommandWeapons hcw = m_Player.GetCommandModifier_Weapons();
153 if (hcw && !hcw.IsActionFinished())
154 return EAnimPlayState.FAILED;
155
156 HumanCommandAdditives ad = m_Player.GetCommandModifier_Additives();
157 if(ad)
158 {
159 //Print("------------------ Playing -----------------");
160 ad.StartModifier(m_AnimID);
161 m_IsPlaying = true;
162
163 return EAnimPlayState.OK;
164 }
165 }
166 return EAnimPlayState.FAILED;
167 }
168
169 override void Update(HumanMovementState movement_state)
170 {
171 if( m_IsPlaying )
172 {
173 HumanCommandAdditives ad = m_Player.GetCommandModifier_Additives();
174 if(!ad || !ad.IsModifierActive())
175 {
176 //Print("------------------ Not Playing -----------------");
178 }
179 else
180 {
182 {
184 m_CalledAnimStart = true;
185 }
186 }
187 }
188 }
189}
190
191
192class HeatComfortmMetaADD extends SmptAnimMetaADD
193{
194 override void Update(HumanMovementState movement_state)
195 {
196 //if( movement_state.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_WALK || movement_state.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_RUN || movement_state.m_iMovement == DayZPlayerConstants.MOVEMENTIDX_SPRINT)
197 if( movement_state.m_iMovement != DayZPlayerConstants.MOVEMENTIDX_IDLE || movement_state.IsInProne())
198 {
199 HumanCommandAdditives ad = m_Player.GetCommandModifier_Additives();
200 if(ad && ad.IsModifierActive())
201 {
202 ad.CancelModifier();
203 }
204 }
205
206 super.Update(movement_state);
207 }
208}
protected int m_StanceMask
Definition ActionBase.c:53
float m_Duration
override Widget Init()
Definition DayZGame.c:122
protected bool m_IsPlaying
Whether the Effect is currently playing.
Definition Effect.c:37
DayZPlayer m_Player
Definition Hand_Events.c:42
protected EAnimPlayState Play()
EAnimPlayState PlayRequest()
bool m_DestroyRequested
class SmptAnimMetaFB extends SmptAnimMetaBase m_CalledAnimStart
int m_SymptomType
int m_AnimID
PlayerBase m_Player
bool IsDestroyReqested()
enum eAnimFinishType m_IsPlaying
bool m_Canceled
bool IsPlaying()
SymptomManager m_Manager
void AnimFinished(eAnimFinishType type)
eAnimFinishType
Definition SmptAnimMeta.c:2
@ FAILURE
Definition SmptAnimMeta.c:4
@ SUCCESS
Definition SmptAnimMeta.c:3
EAnimPlayState
static bool ReadPlayerSymptomFBParams(ParamsReadContext pCtx, out DayZPlayerConstants anim_id, out int stance_mask, out float duration)
static bool ReadPlayerSymptomADDParams(ParamsReadContext pCtx, out int type)
proto native bool IsActionFinished()
int m_iMovement
current stance (DayZPlayerConstants.STANCEIDX_ERECT, ...), only if the command has a stance
Definition human.c:1118
Serialization general interface. Serializer API works with:
Definition Serializer.c:56
override void Update(HumanMovementState movement_state)
override EAnimPlayState Play()
override void Init(ParamsReadContext ctx, SymptomManager manager, PlayerBase player)
void AnimationFinish()
gets called upon animation Symptom exit
Definition StateBase.c:308
void AnimationPlayFailed()
Definition StateBase.c:315
SymptomBase GetCurrentPrimaryActiveSymptom()
void OnAnimationStarted()
void OnAnimationFinished(eAnimFinishType type=eAnimFinishType.SUCCESS)
DayZPlayerInstanceType
defined in C++
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()
proto native volatile void Update()
class HumanCommandWeapons HumanCommandAdditives()
Definition human.c:1088