DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
CAContinuousQuantityRepeat.c
Go to the documentation of this file.
2{
3 protected float m_ItemQuantity;
4 protected float m_SpentQuantity;
5 protected float m_ItemMaxQuantity;
6 protected float m_TimeElpased;
7 protected float m_QuantityUsedPerSecond;
9 protected float m_DefaultTimeToRepeat;
10 protected ref Param1<float> m_SpentUnits;
11
12 void CAContinuousQuantityRepeat( float quantity_used_per_second, float time_to_repeat )
13 {
14 m_QuantityUsedPerSecond = quantity_used_per_second;
15 m_DefaultTimeToRepeat = time_to_repeat;
16 }
17
18 override void Setup( ActionData action_data )
19 {
20 m_TimeElpased = 0;
22
23 if ( !m_SpentUnits )
24 {
25 m_SpentUnits = new Param1<float>( 0 );
26 }
27 else
28 {
29 m_SpentUnits.param1 = 0;
30 }
31
32 m_ItemMaxQuantity = action_data.m_MainItem.GetQuantityMax();
33 m_ItemQuantity = action_data.m_MainItem.GetQuantity();
34 }
35
36
37 override int Execute( ActionData action_data )
38 {
39 if ( !action_data.m_Player )
40 {
41 return UA_ERROR;
42 }
43
44 if ( m_ItemQuantity <= 0 )
45 {
46 return UA_FINISHED;
47 }
48 else
49 {
51 {
52 m_AdjustedQuantityUsedPerSecond = action_data.m_Player.GetSoftSkillsManager().AddSpecialtyBonus( m_QuantityUsedPerSecond, m_Action.GetSpecialtyWeight(), true);
53 m_SpentQuantity += m_AdjustedQuantityUsedPerSecond * action_data.m_Player.GetDeltaT();
54 m_TimeElpased += action_data.m_Player.GetDeltaT();
55
57 {
58 CalcAndSetQuantity( action_data );
59 Setup(action_data); //reset data after repeat
60 }
61
62 return UA_PROCESSING;
63 }
64 else
65 {
66 CalcAndSetQuantity( action_data );
67 OnCompletePogress(action_data);
68 return UA_FINISHED;
69 }
70 }
71 }
72
73 override int Cancel( ActionData action_data )
74 {
75 if ( !action_data.m_Player )
76 {
77 return UA_ERROR;
78 }
79 if (GetProgress() > 0)
80 {
81 CalcAndSetQuantity( action_data );
82 }
83 return UA_CANCEL;
84 }
85
86 override float GetProgress()
87 {
88 //float progress = ( m_ItemQuantity - m_SpentQuantity ) / m_ItemMaxQuantity;
90 }
91
92 //---------------------------------------------------------------------------
93
94
95 void CalcAndSetQuantity( ActionData action_data )
96 {
97 if ( GetGame().IsServer() )
98 {
99 if ( m_SpentUnits )
100 {
103 }
104
105 action_data.m_MainItem.AddQuantity( -m_SpentQuantity, false, false );
106 }
107 }
108}
protected void CalcAndSetQuantity()
ItemBase m_MainItem
Definition ActionBase.c:28
PlayerBase m_Player
Definition ActionBase.c:33
void SetACData(Param units)
Definition CABase.c:40
protected ActionBase m_Action
Definition CABase.c:3
void OnCompletePogress(ActionData action_data)
override int Cancel(ActionData action_data)
void CAContinuousQuantityRepeat(float quantity_used_per_second, float time_to_repeat)
override int Execute(ActionData action_data)
protected ref Param1< float > m_SpentUnits
void CalcAndSetQuantity(ActionData action_data)
override void Setup(ActionData action_data)
proto native CGame GetGame()
const int UA_FINISHED
Definition constants.c:420
const int UA_ERROR
Definition constants.c:439
const int UA_PROCESSING
Definition constants.c:418
const int UA_CANCEL
Definition constants.c:421