DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
CAContinuousWaterSlot.c
См. документацию.
2{
3 protected float m_PlantThirstyness;
4 protected float m_TimeToComplete;
5 protected float m_StartQuantity;
6 protected Slot m_Slot;
7
8 void CAContinuousWaterSlot(float quantity_used_per_second)
9 {
10 m_QuantityUsedPerSecond = quantity_used_per_second;
11 }
12
13 override void Setup(ActionData action_data)
14 {
15 GardenBase targetGB;
16 if (Class.CastTo(targetGB, action_data.m_Target.GetObject()))
17 {
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)
30 m_ItemQuantity = action_data.m_MainItem.GetQuantity();
31
32 if (targetGB)
33 {
34 array<string> selections = new array<string>;
35 targetGB.GetActionComponentNameList(action_data.m_Target.GetComponentIndex(), selections);
36
37 for (int s = 0; s < selections.Count(); s++)
38 {
39 string selection = selections[s];
40 m_Slot = targetGB.GetSlotBySelection(selection);
41 if (m_Slot)
42 break;
43 }
44
45 if (m_Slot)
46 {
47 m_StartQuantity = m_Slot.GetWater();
48 m_PlantThirstyness = m_Slot.GetWaterUsage() - m_Slot.GetWater();
49 }
50 }
51
53 if (m_TimeToComplete <= 0.1) // Division by zero prevention
54 {
55 m_TimeToComplete = 0.1;
56 }
57 }
58 }
59
60 override int Execute(ActionData action_data)
61 {
62 m_ItemQuantity = action_data.m_MainItem.GetQuantity();
63 m_ItemMaxQuantity = action_data.m_MainItem.GetQuantityMax();
64
65 if (!action_data.m_Player)
66 {
67 return UA_ERROR;
68 }
69
70 if (m_ItemQuantity <= 0)
71 {
72 return UA_FINISHED;
73 }
74 else
75 {
77 {
78 m_SpentQuantity += m_QuantityUsedPerSecond * action_data.m_Player.GetDeltaT();
79 if (m_SpentQuantity > m_ItemQuantity) // dont transfer more water than the source's quantity
81
82 m_Slot.GiveWater(m_SpentQuantity);
83
84 CalcAndSetQuantity(action_data);
85
87
88 return UA_PROCESSING;
89 }
90 else
91 {
92 CalcAndSetQuantity(action_data);
93 OnCompletePogress(action_data);
94
95 return UA_FINISHED;
96 }
97 }
98 }
99
100 override float GetProgress()
101 {
102 return -((m_Slot.GetWater() - m_StartQuantity) / m_PlantThirstyness);
103 }
104
106 protected float m_SpentQuantityTotal;
107};
ActionBase ActionData
Определения ActionBase.c:30
void CalcAndSetQuantity()
Определения FireplaceBase.c:2657
void OnCompletePogress(ActionData action_data)
Определения CAContinuousBase.c:8
float m_ItemQuantity
Определения CAContinuousQuantity.c:3
ref Param1< float > m_SpentUnits
Определения CAContinuousQuantity.c:8
float m_ItemMaxQuantity
Определения CAContinuousQuantity.c:5
float m_SpentQuantity
Определения CAContinuousQuantity.c:4
float m_QuantityUsedPerSecond
Определения CAContinuousQuantity.c:6
void CAContinuousQuantity(float quantity_used_per_second)
Определения CAContinuousQuantity.c:10
void CAContinuousWaterSlot(float quantity_used_per_second)
Определения CAContinuousWaterSlot.c:8
override int Execute(ActionData action_data)
Определения CAContinuousWaterSlot.c:60
override float GetProgress()
Определения CAContinuousWaterSlot.c:100
float m_TimeToComplete
Определения CAContinuousWaterSlot.c:4
float m_StartQuantity
Определения CAContinuousWaterSlot.c:5
float m_SpentQuantityTotal
DEPRECATED.
Определения CAContinuousWaterSlot.c:106
float m_PlantThirstyness
Определения CAContinuousWaterSlot.c:3
override void Setup(ActionData action_data)
Определения CAContinuousWaterSlot.c:13
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения GardenPlot.c:2
Определения EnMath.c:7
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto float Min(float x, float y)
Returns smaller of two given values.
const int UA_FINISHED
Определения 3_Game/constants.c:466
const int UA_ERROR
Определения 3_Game/constants.c:485
const int UA_PROCESSING
Определения 3_Game/constants.c:464