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

◆ Update()

void StaminaHandler::Update ( float deltaT,
int pCurrentCommandID )
inlineprotected

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

490 {
491 #ifdef DIAG_DEVELOPER
492 if (m_StaminaDisabled)
493 return;
494 #endif
495
496 if (!m_Player)
497 return;
498
499 // Process cooldowns - subtract deltaT and remove expired ones
500 array<int> expiredCooldowns = new array<int>();
501 foreach (int modifier, StaminaCooldownParams cooldownParams : m_CooldownMap)
502 {
503 cooldownParams.param1 -= deltaT;
504 if (cooldownParams.param1 <= 0)
505 {
506 expiredCooldowns.Insert(modifier);
507 }
508 }
509
510 // Remove expired cooldowns
511 foreach (int expiredModifier : expiredCooldowns)
512 {
513 ResetCooldown(expiredModifier);
514 }
515
516 // Reset so we get current bonus value once in this update loop and then reuse the cached value within this update call
518
519 // Check if movement state has changed
521
522 bool isAiOrSingleplayer = m_Player.IsAuthorityOwner();
523 bool isServerOrSingleplayer = m_Player.IsAuthority();
524
525 // Calculates actual max stamina based on player's load
526 if (isServerOrSingleplayer)
527 {
528 float oldCap = m_StaminaCap;
529 bool forceLoadRecheck = m_ForceLoadRecheck;
530 m_ForceLoadRecheck = false;
531 m_PlayerLoad = m_Player.GetWeightEx(forceLoadRecheck);
532
533 float loadDiff = Math.AbsFloat(m_PlayerLoad - m_LastPlayerLoad);
534 if (forceLoadRecheck || loadDiff > LOAD_DIFF_UPDATE_THRESHOLD)
535 {
538
539 float capDiff = Math.AbsFloat(oldCap - m_StaminaCap);
540 if (capDiff > LOAD_DIFF_CAP_UPDATE_THRESHOLD)
541 {
543 {
545 }
546
549
551 m_Time = 0;
552 }
553 }
554 }
555 else
556 {
557 PlayerBaseMove move = PlayerBaseMove.Cast(m_Player.GetNextMove());
558 if (move)
559 {
560 move.m_fStaminaValue = m_Stamina;
561 move.m_fStaminaCapacity = m_StaminaCap;
562 }
563 }
564
565 if (isAiOrSingleplayer)
566 {
569 }
570
571 // Process movement if: state changed, we have stamina delta, in cooldown, not initialized, or stamina is bewlow cap
574
575 // Sets current stamina & stores + syncs data with client
576 ProcessStaminaChanges(deltaT, isServerOrSingleplayer);
577
580
581 m_StaminaDelta = 0;
582 m_StaminaDepletion = 0; // resets depletion modifier
584 if (!m_InitUpdate)
585 m_InitUpdate = true;
586 }
Param1< float > StaminaCooldownParams
Определения StaminaHandler.c:259
bool m_ForceLoadRecheck
Определения StaminaHandler.c:313
float m_StaminaCapSynced
Определения StaminaHandler.c:275
const float LOAD_DIFF_CAP_UPDATE_THRESHOLD
Определения StaminaHandler.c:267
void RecalculateStaminaCap()
Определения StaminaHandler.c:656
void CheckStaminaState()
check if the stamina is completely depleted
Определения StaminaHandler.c:1015
ref map< int, ref StaminaCooldownParams > m_CooldownMap
Определения StaminaHandler.c:305
float m_LastPlayerLoad
Определения StaminaHandler.c:300
bool m_InitUpdate
Определения StaminaHandler.c:269
PlayerBase m_Player
Определения StaminaHandler.c:285
float m_StaminaSynced
Определения StaminaHandler.c:273
float m_StaminaDepletion
Определения StaminaHandler.c:278
bool m_IsStaminaGainBonusCached
Определения StaminaHandler.c:303
void ApplyExhaustion()
Определения StaminaHandler.c:988
float m_StaminaCap
Определения StaminaHandler.c:274
bool m_MovementStateChanged
Определения StaminaHandler.c:311
bool HasMovementStateChanged()
Определения StaminaHandler.c:471
void SyncStaminaEx()
stamina sync - server part
Определения StaminaHandler.c:825
void ProcessStaminaChanges(float deltaT, bool isServerOrSingleplayer)
Определения StaminaHandler.c:614
float m_StaminaDelta
Определения StaminaHandler.c:271
float m_Time
Определения StaminaHandler.c:281
const float LOAD_DIFF_UPDATE_THRESHOLD
Определения StaminaHandler.c:266
float m_PlayerLoad
Определения StaminaHandler.c:270
float m_Stamina
Определения StaminaHandler.c:272
void ProcessMovementState()
Определения StaminaHandler.c:588
bool m_IsInCooldown
Определения StaminaHandler.c:295
void ResetCooldown(int modifier=-1)
Определения StaminaHandler.c:1047

Перекрестные ссылки Math::AbsFloat(), ApplyExhaustion(), CheckStaminaState(), HasMovementStateChanged(), LOAD_DIFF_CAP_UPDATE_THRESHOLD, LOAD_DIFF_UPDATE_THRESHOLD, m_CooldownMap, m_ForceLoadRecheck, m_InitUpdate, m_IsInCooldown, m_IsStaminaGainBonusCached, m_LastPlayerLoad, m_MovementStateChanged, m_Player, m_PlayerLoad, m_Stamina, m_StaminaCap, m_StaminaCapSynced, m_StaminaDelta, m_StaminaDepletion, m_StaminaSynced, m_Time, ProcessMovementState(), ProcessStaminaChanges(), RecalculateStaminaCap(), ResetCooldown() и SyncStaminaEx().