Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
cacontinuoustransferquantity.c
Go to the documentation of this file.
2{
3 protected float m_TargetUnits;
4 protected float m_SpentQuantity;
5 protected float m_ItemQuantity;
6 protected float m_SourceQuantity;
7 protected float m_QuantityFilledPerSecond;
8 protected float m_TimeToComplete;
9 protected ref Param1<float> m_SpentUnits;
10
11 void CAContinuousTransferQuantity( float quantity_filled_per_second )
12 {
13 m_QuantityFilledPerSecond = quantity_filled_per_second;
14 }
15
16 override void Setup( ActionData action_data )
17 {
19 if ( !m_SpentUnits )
20 {
21 m_SpentUnits = new Param1<float>(0);
22 }
23 else
24 {
25 m_SpentUnits.param1 = 0;
26 }
27 m_ItemQuantity = action_data.m_MainItem.GetQuantity();
28 ItemBase trg;
29 if ( Class.CastTo(trg, action_data.m_Target.GetObject()) )
30 {
31 m_SourceQuantity = trg.GetQuantity();
32 }
33 m_TargetUnits = action_data.m_MainItem.GetQuantityMax();
35 }
36
37 override int Execute( ActionData action_data )
38 {
39 if ( !action_data.m_Player )
40 {
41 return UA_ERROR;
42 }
43 ItemBase trg;
44 Class.CastTo(trg, action_data.m_Target.GetObject());
45 if ( action_data.m_MainItem.GetQuantity() >= action_data.m_MainItem.GetQuantityMax() || trg.GetQuantity() == 0 )
46 {
47 return UA_FINISHED;
48 }
49 else
50 {
52 {
53 m_SpentQuantity += m_QuantityFilledPerSecond * action_data.m_Player.GetDeltaT();
55 if ( m_Action ) m_Action.SendMessageToClient(action_data.m_Player, val.ToString());
56 return UA_PROCESSING;
57 }
58 else
59 {
60 CalcAndSetQuantity( action_data );
61 OnCompletePogress(action_data);
62 return UA_FINISHED;
63 }
64 }
65 }
66
67 override override int Cancel( ActionData action_data )
68 {
69 if ( !action_data.m_Player )
70 {
71 return UA_ERROR;
72 }
73
74 CalcAndSetQuantity( action_data );
75 return UA_CANCEL;
76 }
77
83 //---------------------------------------------------------------------------
84
85 void CalcAndSetQuantity( ActionData action_data )
86 {
87 if ( GetGame().IsServer() )
88 {
89 if ( m_SpentUnits )
90 {
93 }
94 action_data.m_MainItem.AddQuantity(m_SpentQuantity);
95 ItemBase trg;
96 if ( Class.CastTo(trg, action_data.m_Target.GetObject()) )
97 {
98 trg.AddQuantity(-m_SpentQuantity,false,false);
99 }
100 }
101 }
102};
void SendMessageToClient(Object reciever, string message)
void SetACData(Param units)
Definition cabase.c:40
ActionBase m_Action
Definition cabase.c:3
override override int Cancel(ActionData action_data)
override int Execute(ActionData action_data)
void CAContinuousTransferQuantity(float quantity_filled_per_second)
void CalcAndSetQuantity(ActionData action_data)
override void Setup(ActionData action_data)
Super root of all classes in Enforce script.
Definition enscript.c:11
Definition enmath.c:7
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