DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
Slot.c
См. документацию.
2{
3 NONE = 0,
5 //This will be used to set bit values (DO NOT ADD MORE VALUES)
6}
7
8enum eWateredState
9{
10 DRY = 0,
11 WET = 1
12 //Used to improve readability of watered state changes
13}
14
15class Slot
16{
17 static const int STATE_DIGGED = 1;
18 static const int STATE_PLANTED = 2;
19
20 private int m_WaterQuantity;
21 static private int m_WaterNeeded = 190; // How much water is needed to water a plant from a bottle. Value is in mililitres
22 static private int m_WaterMax = 200;
23
24 float m_Fertility;
25 float m_FertilizerUsage;
26 float m_FertilizerQuantity;
27 float m_FertilizerQuantityMax; // how much of a fertilizer can the slot contain
28 int m_slotIndex;
29 int m_slotId;
30
31 string m_FertilizerType;
32 int m_FertilityState = eFertlityState.NONE;
33 int m_WateredState = eWateredState.DRY;
34 string m_DiggedSlotComponent; // example: "Component02" for the 1st slot in GardenBase
35 string m_PlantType;
36 private ItemBase m_Seed;
37 private GardenBase m_Garden;
38
39 float m_HarvestingEfficiency;
40
41 int m_State;
42
43 private PlantBase m_Plant;
44
45 void Slot( float base_fertility )
46 {
47 m_Seed = NULL;
48 m_Plant = NULL;
49 m_WaterQuantity = 0.0;
50 Init( base_fertility );
51 }
52
53 void ~Slot()
54 {
55 if (m_Plant && GetGame()) // GetGame() returns NULL when the game is being quit!
56 {
57 GetGame().ObjectDelete( GetPlant() );
58 }
59 }
60
61 int GetSlotIndex()
62 {
63 return m_slotIndex;
64 }
65
66 void SetSlotIndex(int index)
67 {
68 m_slotIndex = index;
69 }
70
71 int GetSlotId()
72 {
73 return m_slotId;
74 }
75
76 void SetSlotId(int id)
77 {
78 m_slotId = id;
79 }
80
81 void SetGarden(GardenBase garden)
82 {
83 m_Garden = garden;
84 }
85
86 GardenBase GetGarden()
87 {
88 return m_Garden;
89 }
90
91 void SetSeed(ItemBase seed)
92 {
93 m_Seed = seed;
94 }
95
96 PlantBase GetPlant()
97 {
98 return m_Plant;
99 }
100
101 void SetPlant(PlantBase plant)
102 {
103 m_Plant = plant;
104
105 if (plant)
106 {
107 plant.SetSlot(this);
108 }
109 }
110
111 //Used to force water level an go around sync issues
112 void SetWater( int val )
113 {
114 val = Math.Clamp( val, 0, m_WaterMax );
115 m_WaterQuantity = val;
116 }
117
118 ItemBase GetSeed()
119 {
120 return m_Seed;
121 }
122
123 bool HasSeed()
124 {
125 if (m_Seed)
126 return true;
127
128 return false;
129 }
130
131 void GiveWater( float consumed_quantity )
132 {
133 bool needed_water = NeedsWater();
134 m_WaterQuantity += consumed_quantity;
135
136 if (m_WaterQuantity >= GetWaterMax())
137 m_WaterQuantity = GetWaterMax();
138
139 if (m_WaterQuantity < 0)
140 m_WaterQuantity = 0;
141
142 if (!g_Game.IsServer())
143 return;
144
145 if (!GetPlant() && GetSeed() && !NeedsWater()) // if there is no seed then do not create plant. Plant will be created when the seed is inserted into watered slot.
146 GetGarden().CreatePlant(this);
147
148 if ( needed_water != NeedsWater() )
149 {
150 SetWateredState( eWateredState.WET );
151 if ( m_Garden.GetSlotWateredState() != m_Garden.GetMaxWaterStateVal() )
152 m_Garden.SlotWaterStateUpdate( this );
153 }
154 }
155
156 bool NeedsWater()
157 {
158 if ( m_WaterQuantity < GetWaterUsage() )
159 {
160 return true;
161 }
162 else
163 {
164 return false;
165 }
166 }
167
168 bool CanBeWatered()
169 {
170 if ( m_WaterQuantity < GetWaterMax() )
171 {
172 return true;
173 }
174 else
175 {
176 return false;
177 }
178 }
179
180 float GetWater()
181 {
182 return m_WaterQuantity;
183 }
184
185 float GetFertility()
186 {
187 return m_Fertility;
188 }
189
190 float GetFertilityMax()
191 {
192 return m_FertilizerUsage;
193 }
194
195 void SetFertility(float fertility)
196 {
197 m_Fertility = fertility;
198 }
199
200 float GetFertilizerQuantity()
201 {
202 return m_FertilizerQuantity;
203 }
204
205 void SetFertilizerQuantity(float fertility)
206 {
207 m_FertilizerQuantity = fertility;
208 }
209
210 float GetFertilizerQuantityMax()
211 {
212 return m_FertilizerQuantityMax;
213 }
214
215 void SetFertilizerQuantityMax(float quantMax)
216 {
217 m_FertilizerQuantityMax = quantMax;
218 }
219
220
221 string GetFertilityType()
222 {
223 return m_FertilizerType;
224 }
225
226 void SetFertilityType(string type)
227 {
228 m_FertilizerType = type;
229 }
230
231 int GetFertilityState()
232 {
233 return m_FertilityState;
234 }
235
236 void SetFertilityState( int newState )
237 {
238 m_FertilityState = newState;
239 }
240
241 int GetWateredState()
242 {
243 return m_WateredState;
244 }
245
246 void SetWateredState( int newState )
247 {
248 m_WateredState = newState;
249 if ( m_WateredState == eWateredState.WET )
250 SetWater( GetWaterMax() );
251 }
252
253 float GetWaterUsage()
254 {
255 return m_WaterNeeded;
256 }
257
258 float GetWaterMax()
259 {
260 return m_WaterMax;
261 }
262
263 int GetState()
264 {
265 return m_State;
266 }
267
268 void SetState(int new_state)
269 {
270 m_State = new_state;
271 }
272
273 bool IsDigged()
274 {
275 if (m_State == STATE_DIGGED)
276 {
277 return true;
278 }
279
280 return false;
281 }
282 bool IsPlanted()
283 {
284 if (m_State == STATE_PLANTED)
285 {
286 return true;
287 }
288
289 return false;
290 }
291
292 void Init( float base_fertility )
293 {
294 m_Fertility = base_fertility;
295 m_FertilizerUsage = 200;
296 m_FertilizerQuantity = 0.0;
297 m_FertilizerType = "";
298 m_FertilityState = eFertlityState.NONE;
299
300 m_WaterQuantity = 0;
301 m_WateredState = eWateredState.DRY;
302
303 m_HarvestingEfficiency = 1.0;
304 //m_DiggedSlotComponent = "";
305 m_State = STATE_DIGGED;
306 m_Plant = NULL;
307 }
308
309 void SetSlotComponent(string component)
310 {
311 m_DiggedSlotComponent = component;
312 }
313
314 string GetSlotComponent()
315 {
316 return m_DiggedSlotComponent;
317 }
318
319 bool OnStoreLoadCustom( ParamsReadContext ctx, int version )
320 {
321 if ( version < 102 )
322 {
323 ctx.Read( m_Fertility );
324 ctx.Read( m_FertilizerUsage );
325 ctx.Read( m_FertilizerQuantity );
326
327 if ( !ctx.Read( m_FertilizerType ) )
328 m_FertilizerType = "";
329
330 ctx.Read( m_HarvestingEfficiency );
331 ctx.Read( m_State );
332 }
333
334 if ( version >= 102 )
335 {
336 ctx.Read( m_Fertility );
337 ctx.Read( m_FertilizerUsage );
338 ctx.Read( m_FertilizerQuantity );
339 ctx.Read( m_HarvestingEfficiency );
340 ctx.Read( m_State );
341
342 if ( !ctx.Read( m_FertilizerType ) )
343 {
344 m_FertilizerType = "";
345 }
346 }
347
348 return true;
349 }
350
352 {
353 ctx.Write( m_Fertility );
354 ctx.Write( m_FertilizerUsage );
355 ctx.Write( m_FertilizerQuantity );
356 ctx.Write( m_HarvestingEfficiency );
357 ctx.Write( m_State );
358 ctx.Write( m_FertilizerType );
359 }
360}
@ WET
Определения EntityAI.c:5
@ DRY
Определения EntityAI.c:3
DayZGame g_Game
Определения DayZGame.c:3868
override Widget Init()
Определения DayZGame.c:127
class GP5GasMask extends MaskBase ItemBase
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
enum EObjectTemperatureState m_State
bool NeedsWater()
Определения PlantBase.c:685
void OnStoreSaveCustom(ParamsWriteContext ctx)
Определения PlantBase.c:371
GardenBase GetGarden()
Определения PlantBase.c:726
float GetWaterMax()
Определения PlantBase.c:677
void PlantBase()
Определения PlantBase.c:54
float GetWater()
Определения PlantBase.c:669
bool OnStoreLoadCustom(ParamsReadContext ctx, int version)
Определения PlantBase.c:225
eFertlityState
Определения Slot.c:2
@ FERTILIZED
Определения Slot.c:4
void SetState(bool state)
Определения StaminaHandler.c:32
proto native void ObjectDelete(Object obj)
proto bool Write(void value_out)
proto bool Read(void value_in)
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
@ NONE
No flags.
Определения EnProfiler.c:11
proto native int GetState()
returns one of STATE_...
Определения StaminaHandler.c:31