DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
DayZPlayerImplementThrowing.c
См. документацию.
2{
4 {
5 m_Player = pPlayer;
7
9 }
10
11 void HandleThrowing(HumanInputController pHic, HumanCommandWeapons pHcw, EntityAI pEntityInHands, float pDt)
12 {
13 if ( !pEntityInHands && !m_bThrowingAnimationPlaying )
14 {
16 {
18 pHcw.SetThrowingMode(false);
19 }
20
21 return;
22 }
23
26
29 {
30 ResetState();
31
32 pHcw.SetActionProgressParams(0, 0);
34 }
35
38 {
40
41 if ( !CanContinueThrowingEx(pHic, pEntityInHands) )
42 {
44 ResetState();
45
46 pHcw.SetActionProgressParams(0, 0);
47 pHcw.SetThrowingMode(false);
48
49 return;
50 }
51
53 if ( pHcw.WasItemLeaveHandsEvent() )
54 {
55 float lr = pHcw.GetBaseAimingAngleLR();
56 float ud = pHcw.GetBaseAimingAngleUD();
57 vector aimOrientation = m_Player.GetOrientation();
58 aimOrientation[0] = aimOrientation[0] + lr;
59
60 //add 5 deg
61 aimOrientation[1] = aimOrientation[1] + ud + 5;
62
63
64 m_Player.GetHumanInventory().ThrowEntity(pEntityInHands, aimOrientation.AnglesToVector(), c_fThrowingForceMin + m_fThrowingForce01 * (c_fThrowingForceMax - c_fThrowingForceMin));
65 return;
66 }
67
70 {
71 if ( pHic.IsAttackButton() )
72 {
75
77 if ( m_fThrowingForce01 > 1.0 )
79
81 }
82 else
83 {
84 HumanCommandMove hcm = m_Player.GetCommand_Move();
85 bool standingFromBack = hcm && hcm.IsStandingFromBack();
86
87 if ( m_bThrowingInProgress && !standingFromBack)
88 {
90
91 int throwType = 1;
92
93 HumanItemBehaviorCfg itemCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
94 itemCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
95 if ( itemCfg )
96 {
97 switch ( itemCfg.m_iType )
98 {
99 case ItemBehaviorType.TWOHANDED:
100 case ItemBehaviorType.POLEARMS:
101 throwType = 2;
102 break;
103 case ItemBehaviorType.FIREARMS:
104 throwType = 3;
105 }
106 }
107
108 pHcw.ThrowItem(throwType);
110 }
111 }
112 }
113 }
114 else
115 {
116 ResetState();
117 }
118 }
119
121 {
123 m_bThrowingInProgress = false;
125 }
126
127 void SetThrowingModeEnabled(bool enable)
128 {
129 if (enable != m_bThrowingModeEnabled)
130 {
131 m_Player.OnThrowingModeChange(enable);
132 }
133 m_bThrowingModeEnabled = enable;
134 }
135
137 {
139 }
140
143 {
145 }
146
152
154 {
155 // basic stance has priority
156 if( pHic.IsStanceChange() )
157 return false;
158
159 // don't change mode in raise
160 if( pHic.IsWeaponRaised() )
161 return false;
162
163 // check if it's not a heavy item
164 HumanItemBehaviorCfg itemCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
165 if( itemCfg && itemCfg.m_iType == ItemBehaviorType.HEAVY )
166 return false;
167
168/* HumanMovementState movementState = new HumanMovementState();
169 m_Player.GetMovementState(movementState);
170 if( movementState.IsInProne() )
171 return false;*/
172
173 PlayerBase playerPB = PlayerBase.Cast(m_Player);
174 if( playerPB )
175 {
176 if( playerPB.GetEmoteManager().IsEmotePlaying() )
177 return false;
178
179 if( playerPB.GetActionManager().GetRunningAction() != NULL )
180 return false;
181
182 if( playerPB.IsRestrained() || playerPB.IsItemsToDelete())
183 return false;
184
185 if( playerPB.GetDayZPlayerInventory().IsProcessing() )
186 return false;
187
188 if( playerPB.GetWeaponManager().IsRunning() )
189 return false;
190 }
191
192 if (!CheckFreeSpace() )
193 return false;
194
195 return true;
196 }
197
199 {
200 HumanItemBehaviorCfg itemInHandsCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
201 bool boo = false;
202 UAInterface input_interface = m_Player.GetInputInterface();
203 if(input_interface && input_interface.SyncedPress("UAGear"))
204 {
205 boo = true;
206 }
207 if( boo || pHic.IsWeaponRaised() || (itemInHandsCfg && itemInHandsCfg.m_iType == ItemBehaviorType.HEAVY) )
208 {
209 return false;
210 }
211
212 if (!CheckFreeSpace() )
213 return false;
214
215 return true;
216 }
217
219 {
220 if ( pEntityInHands == null )
221 return false;
222
223 return CanContinueThrowing(pHic);
224 }
225
227 {
228 return m_Player.CheckFreeSpace(vector.Forward, 0.7, false);
229 }
230
235 private float m_fThrowingForce01;
236
237 private const float c_fThrowingForceMin = 20.0;
238 private const float c_fThrowingForceMax = 90.0;
239 private const float c_fThrowingForceCoef = 1.0;
240}
void DayZPlayerImplementThrowing(DayZPlayer pPlayer)
Определения DayZPlayerImplementThrowing.c:3
bool CanContinueThrowing(HumanInputController pHic)
Определения DayZPlayerImplementThrowing.c:198
bool CanContinueThrowingEx(HumanInputController pHic, EntityAI pEntityInHands)
Определения DayZPlayerImplementThrowing.c:218
void SetThrowingModeEnabled(bool enable)
Определения DayZPlayerImplementThrowing.c:127
const float c_fThrowingForceCoef
Определения DayZPlayerImplementThrowing.c:239
const float c_fThrowingForceMin
Определения DayZPlayerImplementThrowing.c:237
bool CanChangeThrowingStance(HumanInputController pHic)
Определения DayZPlayerImplementThrowing.c:153
void HandleThrowing(HumanInputController pHic, HumanCommandWeapons pHcw, EntityAI pEntityInHands, float pDt)
Определения DayZPlayerImplementThrowing.c:11
const float c_fThrowingForceMax
Определения DayZPlayerImplementThrowing.c:238
bool IsThrowingInProgress()
Throwing wind-up only (button hold)
Определения DayZPlayerImplementThrowing.c:142
bool IsThrowingAnimationPlaying()
Throwing animation after button release.
Определения DayZPlayerImplementThrowing.c:148
Определения Building.c:6
proto native bool IsStandingFromBack()
return true if prone on back is chaning to crounch/stand
Определения human.c:434
proto native bool WasItemLeaveHandsEvent()
proto native void SetThrowingMode(bool pState)
proto native void SetActionProgressParams(float pStart, float pEnd)
sets start and end animation position - f.e. for reload clip action
proto native bool IsThrowingMode()
proto native float GetBaseAimingAngleLR()
returns base aiming angle LR - without sway/offsets/...
proto native void ThrowItem(int throwType)
proto native float GetBaseAimingAngleUD()
returns base aiming angle UD - without sway/offsets/...
Определения human.c:994
proto native bool IsAttackButton()
returns true if 'UAFire' button is pressed (== true for multiple ticks). Synced.
proto native bool IsThrowingModeChange()
returns true if change of throwing mode has been requested
proto native bool IsWeaponRaised()
returns true if weapon is raised
proto native bool IsStanceChange()
stance change button was pressed
Определения human.c:18
int m_iType
Определения humanitems.c:15
Определения humanitems.c:6
Определения PlayerBaseClient.c:2
proto native bool SyncedPress(string action, bool check_focus=true)
Определения UAInput.c:97
static const vector Forward
Определения EnConvert.c:109
proto vector AnglesToVector()
Converts spherical coordinates (yaw, pitch, roll in degrees) to unit length vector.
Определения EnConvert.c:106