Exemple #1
0
        public static string DamageStateToStr(EDamageState damageState)
        {
            switch (damageState)
            {
            case EDamageState.Terminal:
                return(TerminalDamageStateName);

            case EDamageState.Critical:
                return(CriticalDamageStateName);

            case EDamageState.Major:
                return(MajorDamageStateName);

            case EDamageState.Minor:
                return(MinorDamageStateName);

            default:
                return(NoneDamageStateName);
            }
        }
Exemple #2
0
        public static Color DamageStateToColor(EDamageState damageState)
        {
            switch (damageState)
            {
            case EDamageState.Terminal:
                return(TerminalDamageStateColor);

            case EDamageState.Critical:
                return(CriticalDamageStateColor);

            case EDamageState.Major:
                return(MajorDamageStateColor);

            case EDamageState.Minor:
                return(MinorDamageStateColor);

            default:
                return(NoneDamageStateColor);
            }
        }
Exemple #3
0
        public static float DamageStateToModifierAmount(EDamageState damageState)
        {
            switch (damageState)
            {
            case EDamageState.Terminal:
                return(TerminalDamageStateModifierAmount);

            case EDamageState.Critical:
                return(CriticalDamageStateModifierAmount);

            case EDamageState.Major:
                return(MajorDamageStateModifierAmount);

            case EDamageState.Minor:
                return(MinorDamageStateModifierAmount);

            default:
                return(NoneDamageStateModifierAmount);
            }
        }
    private void Update()
    {
        // Update alive state
        _IsAlive = _Health > 0f;

        // Update damaged state
        if (_Health > _DamagedMinorThreshold)
        {
            _DamageState = EDamageState.Okay;
        }
        else if (_Health <= _DamagedMinorThreshold && _Health > _DamagedMajorThreshold)
        {
            _DamageState = EDamageState.DamagedMinor;
        }
        else if (_Health <= _DamagedMajorThreshold && _Health > 0f)
        {
            _DamageState = EDamageState.DamagedMajor;
        }
        else /* (_Health <= 0f) */
        {
            _DamageState = EDamageState.Destroyed;
        }

        // Update damage state visuals
        switch (_DamageState)
        {
        // Okay
        case EDamageState.Okay: {
            // Update mesh
            if (_OkayMesh)
            {
                _MeshFilter.mesh = _OkayMesh;
            }
            break;
        }

        // Minor damage
        case EDamageState.DamagedMinor: {
            // Update mesh
            if (_DamagedMinorMesh)
            {
                _MeshFilter.mesh = _DamagedMinorMesh;
            }

            // Play particle effects
            if (_DamagedMinorParticleSystems.Count > 0 && _DamagedMinorParticleTransforms.Count > 0)
            {
                int i = 0;
                foreach (var particleSystem in _DamagedMinorParticleSystems)
                {
                    Instantiate(particleSystem, _DamagedMinorParticleTransforms[i]).Play();
                    ++i;
                }
            }
            break;
        }

        // Major damage
        case EDamageState.DamagedMajor: {
            // Update mesh
            if (_DestroyedMesh)
            {
                _MeshFilter.mesh = _DestroyedMesh;
            }

            // Play particle effects
            if (_DamagedMajorParticleSystems.Count > 0 && _DamagedMajorParticleTransforms.Count > 0)
            {
                int i = 0;
                foreach (var particleSystem in _DamagedMajorParticleSystems)
                {
                    Instantiate(particleSystem, _DamagedMajorParticleTransforms[i]).Play();
                    ++i;
                }
            }
            break;
        }

        // Destroyed
        case EDamageState.Destroyed: {
            // Update mesh
            if (_DamagedMajorMesh)
            {
                _MeshFilter.mesh = _DamagedMajorMesh;
            }

            // Play particle effects
            if (_DestroyedParticleSystems.Count > 0 && _DestroyedParticleTransforms.Count > 0)
            {
                int i = 0;
                foreach (var particleSystem in _DestroyedParticleSystems)
                {
                    Instantiate(particleSystem, _DestroyedParticleTransforms[i]).Play();
                    ++i;
                }
            }
            break;
        }

        default: break;
        }
    }
 public string GetStatusString(EDamageState damageState)
 {
     return(_statusField + DamageStates.DamageStateToStrWithColor(damageState));
 }
Exemple #6
0
 public static EDamageState GetWorstDamageState(EDamageState s1, EDamageState s2)
 {
     return((EDamageState)Mathf.Max((int)s1, (int)s2));
 }
Exemple #7
0
 public static string DamageStateToStrWithColor(EDamageState damageState)
 {
     return(RichStrings.WithColor(DamageStateToStr(damageState), DamageStateToColor(damageState)));
 }