/**********************************************************************************************/ // выключаем аварийный щит // /**********************************************************************************************/ public void DisableShield() { m_animator.SetBool("shieldIsActive", false); if(m_shieldPower > 0) { m_shieldState = SHIELD_STATE.ACTIVE; } else { m_shieldState = SHIELD_STATE.DISABLED; } m_currentShieldTimer = 0.0f; }
/**********************************************************************************************/ // увеличиваем мощность щита // /**********************************************************************************************/ public void IncreasePower(int powerToAdd) { m_shieldPower += powerToAdd; // проверяем на достижения лимита мощности if(m_shieldPower > m_maxPower) { m_shieldPower = m_maxPower; } // активируем щит if(m_shieldPower > 0) { if (m_shieldState == SHIELD_STATE.DISABLED) { m_shieldState = SHIELD_STATE.ACTIVE; } m_animator.SetBool("mainShieldIsActive", true); } }
/**********************************************************************************************/ // пробуем поглотить урон щитом // функция возвращает кол-во урона, которе щит не смог поглотить // /**********************************************************************************************/ public int TakeDamage(int damage) { int diff = m_shieldPower - damage; if (diff > 0) { // если есть запас прочности щита - включаем анимацию повреждения щита m_shieldPower = diff; m_animator.SetTrigger("mainShieldIsDamaged"); return 0; // возвращаем 0, так как весь урон будет поглощён щитом } else { // если запаса прочности щита нет - выключаем его m_shieldPower = 0; m_animator.SetBool("mainShieldIsActive", false); m_shieldState = SHIELD_STATE.DISABLED; return -diff; } }
/**********************************************************************************************/ // активируем аварийный щит и устанавливаем таймер щита // /**********************************************************************************************/ public void ActivateEmergencyShield() { m_animator.SetBool("shieldIsActive", true); m_shieldState = SHIELD_STATE.EMERGENCY_ACTIVE; m_currentShieldTimer = m_shiledDuration; }