DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
CAContinuousFillFuel.c
См. документацию.
2{
3 protected float m_ItemQuantity;
4 protected float m_SpentQuantity;
5 protected float m_SpentQuantity_total;
6 protected float m_EmptySpace; //basically free capacity
7 protected float m_TimeElpased;
8 protected float m_QuantityUsedPerSecond;
10 protected float m_DefaultTimeStep;
11 protected ref Param1<float> m_SpentUnits;
12
14
15 void CAContinuousFillFuel( float quantity_used_per_second, float time_to_progress )
16 {
17 m_QuantityUsedPerSecond = quantity_used_per_second;
18 m_DefaultTimeStep = time_to_progress;
19 }
20
21 //---------------------------------------------------------------------------
22 override void Setup( ActionData action_data )
23 {
24 m_Player = action_data.m_Player;
25
26 m_TimeElpased = 0;
28
29 if ( !m_SpentUnits )
30 {
31 m_SpentUnits = new Param1<float>( 0 );
32 }
33 else
34 {
35 m_SpentUnits.param1 = 0;
36 }
37
38 Transport vehicle = Transport.Cast(action_data.m_Target.GetObject());
39 m_QuantityUsedPerSecond *= Math.Min(action_data.m_MainItem.GetLiquidThroughputCoef(),vehicle.GetLiquidThroughputCoef());
40
41 Car car = Car.Cast(vehicle);
42 Boat boat = Boat.Cast(vehicle);
43
44 float fuelCapacity, currentFuel;
45 if (car)
46 {
47 fuelCapacity = car.GetFluidCapacity( CarFluid.FUEL );
48 currentFuel = car.GetFluidFraction( CarFluid.FUEL );
49 }
50 else if (boat)
51 {
52 fuelCapacity = boat.GetFluidCapacity( BoatFluid.FUEL );
53 currentFuel = boat.GetFluidFraction( BoatFluid.FUEL );
54 }
55
56
57 currentFuel = currentFuel * fuelCapacity;
58 m_EmptySpace = (fuelCapacity - currentFuel) * 1000;
59 m_ItemQuantity = action_data.m_MainItem.GetQuantity();
60
63
64 }
65
66 //---------------------------------------------------------------------------
67 override int Execute( ActionData action_data )
68 {
69 if ( !action_data.m_Player )
70 {
71 return UA_ERROR;
72 }
73
74 if ( m_ItemQuantity <= 0 )
75 {
76 return UA_FINISHED;
77 }
78 else
79 {
81 {
83 m_SpentQuantity += m_AdjustedQuantityUsedPerSecond * action_data.m_Player.GetDeltaT();
84 m_TimeElpased += action_data.m_Player.GetDeltaT();
85
87 {
88 CalcAndSetQuantity( action_data );
89 m_TimeElpased = 0;
90 //Setup(action_data); //reset data after repeat
91 }
92
93 return UA_PROCESSING;
94 }
95 else
96 {
97 CalcAndSetQuantity( action_data );
98 OnCompletePogress(action_data);
99 return UA_FINISHED;
100 }
101 }
102 }
103
104 //---------------------------------------------------------------------------
105 override int Cancel( ActionData action_data )
106 {
107 if ( !action_data.m_Player )
108 {
109 return UA_ERROR;
110 }
111
112 CalcAndSetQuantity( action_data );
113 return UA_CANCEL;
114 }
115
116 //---------------------------------------------------------------------------
117 override float GetProgress()
118 {
119 if ( m_ItemQuantity <= 0 )
120 return 1;
121
123 }
124
125 //---------------------------------------------------------------------------
126 void CalcAndSetQuantity( ActionData action_data )
127 {
128
130
131 if ( m_SpentUnits )
132 {
135 }
136
137
138 if ( GetGame().IsServer() )
139 {
140 Car car = Car.Cast(action_data.m_Target.GetObject());
141 Boat boat = Boat.Cast(action_data.m_Target.GetObject());
142
143 if (car)
144 {
145 action_data.m_MainItem.AddQuantity( -m_SpentQuantity );
146 car.Fill( CarFluid.FUEL, (m_SpentQuantity * 0.001) );
147 }
148 else if (boat)
149 {
150 action_data.m_MainItem.AddQuantity( -m_SpentQuantity );
151 boat.Fill( BoatFluid.FUEL, (m_SpentQuantity * 0.001) );
152 }
153 }
154
155 m_SpentQuantity = 0;
156 }
157}
ActionBase ActionData
Определения ActionBase.c:30
BoatFluid
Type of vehicle's fluid. (native, do not change or extend)
Определения Boat.c:14
CarFluid
Type of vehicle's fluid. (native, do not change or extend)
Определения Car.c:19
void CalcAndSetQuantity()
Определения FireplaceBase.c:2640
void SetACData(Param units)
Определения CABase.c:40
void OnCompletePogress(ActionData action_data)
Определения CAContinuousBase.c:8
void CalcAndSetQuantity(ActionData action_data)
Определения CAContinuousFillFuel.c:126
float m_ItemQuantity
Определения CAContinuousFillFuel.c:3
float m_TimeElpased
Определения CAContinuousFillFuel.c:7
float m_SpentQuantity
Определения CAContinuousFillFuel.c:4
float m_AdjustedQuantityUsedPerSecond
Определения CAContinuousFillFuel.c:9
float m_EmptySpace
Определения CAContinuousFillFuel.c:6
override float GetProgress()
Определения CAContinuousFillFuel.c:117
float m_SpentQuantity_total
Определения CAContinuousFillFuel.c:5
float m_DefaultTimeStep
Определения CAContinuousFillFuel.c:10
override int Execute(ActionData action_data)
Определения CAContinuousFillFuel.c:67
override int Cancel(ActionData action_data)
Определения CAContinuousFillFuel.c:105
PlayerBase m_Player
Определения CAContinuousFillFuel.c:13
ref Param1< float > m_SpentUnits
Определения CAContinuousFillFuel.c:11
override void Setup(ActionData action_data)
Определения CAContinuousFillFuel.c:22
void CAContinuousFillFuel(float quantity_used_per_second, float time_to_progress)
Определения CAContinuousFillFuel.c:15
float m_QuantityUsedPerSecond
Определения CAContinuousFillFuel.c:8
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
Base native class for all motorized wheeled vehicles.
Определения Boat.c:28
proto native CGame GetGame()
static proto float Min(float x, float y)
Returns smaller of two given values.
const int UA_FINISHED
Определения constants.c:464
const int UA_ERROR
Определения constants.c:483
const int UA_PROCESSING
Определения constants.c:462
const int UA_CANCEL
Определения constants.c:465