Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
cacontinuousempty.c
Go to the documentation of this file.
2{
3 protected float m_TargetUnits;
4 protected float m_SpentQuantity;
5 protected float m_SpentQuantity_total;
8 protected bool m_WringingClothes;
9 protected ref Param1<float> m_SpentUnits;
10 protected float m_TimeElpased;
11 protected float m_DefaultTimeStep = 0.25;
12
13 void CAContinuousEmpty( float quantity_emptied_per_second )
14 {
15 m_QuantityEmptiedPerSecond = quantity_emptied_per_second;
16 }
17
18 override void Setup( ActionData action_data )
19 {
20 if ( !m_SpentUnits )
21 {
22 m_SpentUnits = new Param1<float>(0);
23 }
24 else
25 {
26 m_SpentUnits.param1 = 0;
27 }
28
29 if ( action_data.m_MainItem.IsClothing() )
30 {
31 m_WringingClothes = true;
32
33 m_SpentQuantity = action_data.m_MainItem.GetWetMax() - action_data.m_MainItem.GetWet();
34 m_TargetUnits = action_data.m_MainItem.GetWetMax();
35 }
36 else
37 {
38 m_WringingClothes = false;
39
40 m_SpentQuantity = action_data.m_MainItem.GetQuantityMin();
41 m_TargetUnits = action_data.m_MainItem.GetQuantity();
42 }
43
45 }
46
47 override int Execute( ActionData action_data )
48 {
49 if ( !action_data.m_Player )
50 {
51 return UA_ERROR;
52 }
53
54 if ( m_WringingClothes && action_data.m_MainItem.GetWet() >= action_data.m_MainItem.GetWetMax() )
55 {
56 return UA_FINISHED;
57 }
58 else
59 {
61 {
62 m_SpentQuantity += m_AdjustedQuantityEmptiedPerSecond * action_data.m_Player.GetDeltaT();
63 m_TimeElpased += action_data.m_Player.GetDeltaT();
64
66 {
67 CalcAndSetQuantity( action_data );
68 m_TimeElpased = 0;
69 }
70 return UA_PROCESSING;
71 }
72 else
73 {
74 CalcAndSetQuantity( action_data );
75 OnCompletePogress(action_data);
76 return UA_FINISHED;
77 }
78 }
79 }
80
81 override int Cancel( ActionData action_data )
82 {
83 if ( !action_data.m_Player || !action_data.m_MainItem )
84 {
85 return UA_ERROR;
86 }
87
88 CalcAndSetQuantity( action_data );
89 return UA_CANCEL;
90 }
91
92 override float GetProgress()
93 {
95 }
96
97 //---------------------------------------------------------------------------
98
99 void CalcAndSetQuantity( ActionData action_data )
100 {
102 if (GetGame().IsServer())
103 {
104 if ( m_SpentUnits )
105 {
108 }
109
110 if (action_data.m_MainItem.GetQuantity() > 0.0)
111 action_data.m_MainItem.AddQuantity(-m_SpentQuantity);
112 }
113 m_SpentQuantity = 0;
114 }
115};
void SetACData(Param units)
Definition cabase.c:40
override void Setup(ActionData action_data)
override int Execute(ActionData action_data)
float m_AdjustedQuantityEmptiedPerSecond
void CAContinuousEmpty(float quantity_emptied_per_second)
void CalcAndSetQuantity(ActionData action_data)
override int Cancel(ActionData action_data)
override float GetProgress()
ref Param1< float > m_SpentUnits
void CalcAndSetQuantity()
proto native CGame GetGame()
const int UA_FINISHED
Definition constants.c:466
const int UA_ERROR
Definition constants.c:485
const int UA_PROCESSING
Definition constants.c:464
const int UA_CANCEL
Definition constants.c:467