DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ CalculateQuantity()

override void GetBurningMaterial::CalculateQuantity ( )

См. определение в файле Broom.c строка 188

189{
190 override void Init()
191 {
192 super.Init();
193 m_DecraftResult = "LongWoodenStick";
194 m_ParticleLocalPos = Vector(0, 1.2, 0);
195 }
196
197 override void SetActions()
198 {
199 super.SetActions();
200
203 }
204
205 override bool CanReceiveUpgrade()
206 {
207 return false;
208 }
209
210 override void OnWorkStart()
211 {
212 super.OnWorkStart();
214 }
215
216 override void ApplyResultModifications(ItemBase result)
217 {
218 result.SetHealth(result.GetHealthLevelValue(2,""));
219 result.SetQuantity(1);
220 }
221
222 override bool CanTransformIntoStick()
223 {
224 if ( GetGame().IsServer() && !IsIgnited() && GetEnergy() < 1 && !IsSetForDeletion())
225 return true;
226 else
227 return false;
228 }
229
230
231 override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
232 {
233 super.EEHitBy(damageResult, damageType, source, component, dmgZone, ammo, modelPos, speedCoef);
234
235 GetCompEM().SetEnergy0To1(GetHealth01("",""));
236 }
237
238
239 override void CalculateQuantity()
240 {
241 if (GetGame().IsServer())
242 {
243 float currentHealth01 = GetHealth01();
244 float currentEnergy01 = GetCompEM().GetEnergy0To1();
245
246 //Health needs to copy internal energy, but only if that means it will be going down from its current value(the item can't heal itself after obtaining damage just because it has full internal energy)
247 SetHealth01("","",Math.Min(currentHealth01,currentEnergy01));
248 //Energy needs to copy health, but only if it is higher(in 01 terms) than health, that means if an item with full energy gets damaged and lit, the internal energy needs to be adjusted to follow the health. Situations where internal energy is lower than health are handled on the line above
249 GetCompEM().SetEnergy0To1(GetHealth01());
250 }
251 }
252
253 override void UpdateParticle()
254 {
255 float normalizedQuant = GetQuantity() / GetQuantityMax();
256
257 if (!m_FireParticle)
258 {
259 m_FireParticle = ParticleManager.GetInstance().PlayOnObject(ParticleList.BROOM_TORCH_T1, this, m_ParticleLocalPos);
260 }
261 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.VELOCITY, 1.0);
262 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.VELOCITY_RND, 1.0);
263 if (m_FireParticle)
264 {
265 float scale = Math.Max(normalizedQuant * 2.4, 0.4);
266
267 m_FireParticle.ScaleParticleParamFromOriginal(EmitorParam.SIZE, scale);
268 }
269 }
270
271 // DEBUG BELLOW
272 void DebugSetHealthAndEnergy(float time)
273 {
274 float max_energy = GetCompEM().GetEnergyMaxPristine();
275 float health01 = Math.InverseLerp(0, max_energy, time);
276 SetHealth01("","", health01);
277 GetCompEM().SetEnergy( time );
278 }
279
280 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
281 {
282 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_VERY_SHORT, "SetBurnTimeTo15Secs", FadeColors.LIGHT_GREY));
283 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_SHORT, "SetBurnTimeTo1Min", FadeColors.LIGHT_GREY));
284 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_MEDIUM, "SetBurnTimeTo10Min", FadeColors.LIGHT_GREY));
285 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.BROOM_BURN_LONG, "SetBurnTimeToMax", FadeColors.LIGHT_GREY));
286 outputList.Insert(new TSelectableActionInfoWithColor(SAT_DEBUG_ACTION, EActions.SEPARATOR, "___________________________", FadeColors.LIGHT_GREY));
287
288 super.GetDebugActions(outputList);
289 }
290
291 override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
292 {
293 if (super.OnAction(action_id, player, ctx))
294 return true;
295 if (GetGame().IsServer() || !GetGame().IsMultiplayer())
296 {
297 if (action_id == EActions.BROOM_BURN_VERY_SHORT)
298 {
300 OnIgnitedThis(null);
301 }
302 else if (action_id == EActions.BROOM_BURN_SHORT)
303 {
305 OnIgnitedThis(null);
306 }
307 else if (action_id == EActions.BROOM_BURN_MEDIUM)
308 {
310 OnIgnitedThis(null);
311 }
312 else if (action_id == EActions.BROOM_BURN_LONG)
313 {
314 DebugSetHealthAndEnergy(GetCompEM().GetEnergyMaxPristine());
315 OnIgnitedThis(null);
316 }
317 }
318 return false;
319 }
320
321}
322
323class Broom: BroomBase
324{
325 override string GetBurningMaterial()
326 {
327 return "DZ\\gear\\tools\\data\\broom_emissive.rvmat";
328 }
329
330 override string GetBurntMaterial()
331 {
332 return "DZ\\gear\\tools\\data\\broom_burn.rvmat";
333 }
334}
Param4< int, int, string, int > TSelectableActionInfoWithColor
Определения EntityAI.c:97
void AddAction(typename actionName)
Определения AdvancedCommunication.c:220
override void UpdateParticle()
Определения Broom.c:202
override void CalculateQuantity()
Определения Broom.c:188
override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
Определения Broom.c:229
override bool CanReceiveUpgrade()
Определения Broom.c:154
override void SetActions()
Определения Broom.c:146
override void OnWorkStart()
Определения Broom.c:159
override bool OnAction(int action_id, Man player, ParamsReadContext ctx)
Определения Broom.c:240
override bool CanTransformIntoStick()
Определения Broom.c:171
override void Init()
Launched from 'DayZGame.DeferredInit' to make earlier access, use, and updates impossible (downside o...
Определения Broom.c:139
override void EEHitBy(TotalDamageResult damageResult, int damageType, EntityAI source, int component, string dmgZone, string ammo, vector modelPos, float speedCoef)
Определения Broom.c:180
void DebugSetHealthAndEnergy(float time)
Определения Broom.c:221
override void ApplyResultModifications(ItemBase result)
Определения Broom.c:165
EActions
Определения EActions.c:2
override void OnIgnitedThis(EntityAI fire_source)
Executed on Server when some item ignited this one.
Определения FireworksBase.c:96
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
override float GetQuantity()
Определения ItemBase.c:8154
float GetEnergy()
Определения ItemBase.c:8278
override int GetQuantityMax()
Определения ItemBase.c:8106
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Определения ParticleManager.c:88
Определения Broom.c:2
Определения Building.c:6
override void SetActions()
Определения Torch.c:754
string GetBurningMaterial()
Определения Torch.c:796
string GetBurntMaterial()
Определения Torch.c:801
Определения Torch.c:2
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfWoodenPlanks.c:88
Определения InventoryItem.c:731
Определения EnMath.c:7
static const int BROOM_TORCH_T1
Определения ParticleList.c:78
Определения ParticleList.c:12
Определения DamageSystem.c:2
Определения EnConvert.c:106
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto float Max(float x, float y)
Returns bigger of two given values.
static proto float Min(float x, float y)
Returns smaller of two given values.
static proto float InverseLerp(float a, float b, float value)
Calculates the linear value that produces the interpolant value within the range [a,...
EmitorParam
Определения EnVisual.c:114
const int SAT_DEBUG_ACTION
Определения constants.c:452