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); } }
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); } }
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)); }
public static EDamageState GetWorstDamageState(EDamageState s1, EDamageState s2) { return((EDamageState)Mathf.Max((int)s1, (int)s2)); }
public static string DamageStateToStrWithColor(EDamageState damageState) { return(RichStrings.WithColor(DamageStateToStr(damageState), DamageStateToColor(damageState))); }