void ShowDamageText(object healthable, HealthChangeEventArgs args) { if (worldUiCanvas.worldUiObjects.damageTextFeed == null) { return; } Actor owner = args.modifier.GetOwner(); // TODO hadcoded tag // Only player damage showing if (owner == null || !owner.CompareTag("Player")) { return; } GameObject damageText = worldUiCanvas.SpawnUi(worldUiCanvas.worldUiObjects.damageTextFeed, WorldUiType.DamageFeed); FloatingHealthChange healthChange = damageText.GetComponent <FloatingHealthChange>(); if (healthChange == null) { return; } healthChange.Init(transform, args.modifier.GetValue().ToString(), args.modifier.IsCrit()); }
public virtual void TakeDamage(Damage damage) { if (currentHealth <= 0) { return; } int damageValue = Mathf.FloorToInt(damage.GetValue() * GetArmorMultiplier()); damageValue = Mathf.Clamp(damageValue, 0, int.MaxValue); currentHealth -= damageValue; var finalDamage = new Damage(damageValue, damage.GetOwner(), damage.IsCrit()); lastDamage = finalDamage; if (currentHealth <= 0) { Die(); } onGetDamage?.Invoke(finalDamage); HealthChangeEventArgs args = new HealthChangeEventArgs { healthChange = -damageValue, actor = actor, modifier = finalDamage }; OnHealthChange?.Invoke(this, args); }
public void OnHealthUpdate(HealthChangeEventArgs e) { float perc = Mathf.Clamp01(1 - (float)e.CurrentHitPoints / e.MaxHitPoints); this._audioMixer.SetFloat(_DISTORTION_NAME, _distortionCurve.Evaluate(perc)); this._audioMixer.SetFloat(_PITCH_NAME, _pitchCurve.Evaluate(perc)); }
private void PlayDamageSound(object sender, HealthChangeEventArgs e) { if (e.oldValue > e.newValue) { FindObjectOfType <AudioManager>().Play("attack"); } }
public virtual void TakeDamage(Damage damage) { if (currentHealth <= 0) { return; } int damageValue = Mathf.FloorToInt(damage.GetValue() * GetArmorMultiplier()); damageValue = Mathf.Clamp(damageValue, 0, int.MaxValue); currentHealth -= damageValue; lastDamage = damage; if (currentHealth <= 0) { Die(); } onGetDamage?.Invoke(damage); HealthChangeEventArgs args = new HealthChangeEventArgs(); args.healthChange = -damageValue; args.initiator = damage.GetOwner(); args.modifier = damage; OnHealthChange?.Invoke(this, args); }
public void OnPlayerHealthChanged(HealthChangeEventArgs e) { if (e.CurrentHitPoints != 0) { return; } SceneManager.LoadScene(SceneManager.GetActiveScene().name); }
void OnGetDamage(object obj, HealthChangeEventArgs arg) { if (IsDead()) { mainCollider.enabled = false; aliveObject.SetActive(false); deadObject.SetActive(true); } }
private void UpdateHealthText(object sender, HealthChangeEventArgs e) { this.healthText.text = healthSystem.health.ToString(); if (e.oldValue > e.newValue) { DamageText.Create(transform.position, e.oldValue - e.newValue); } }
void ShowDamageText(object healthable, HealthChangeEventArgs args) { Actor owner = args.modifier.GetOwner(); if (owner == null || !owner.IsPlayer()) { return; } Add(args.actor.transform, args.modifier.GetValue().ToString(), args.modifier.IsCrit()); }
void ShowHealChange(object healthable, HealthChangeEventArgs args) { if (args.healthChange > 0) { StartCoroutine(SpawnParticle(healParticle, transform, particleLifetime)); } else if (args.healthChange < 0) { StartCoroutine(SpawnParticle(hitParticle, transform, particleLifetime)); } }
protected void UpdateCurrentStats() { currentMaxHealth = GetMaxHealth(); if (currentHealth > currentMaxHealth) { currentHealth = currentMaxHealth; } HealthChangeEventArgs args = new HealthChangeEventArgs(); OnHealthChange?.Invoke(this, args); }
public void Heal(Heal heal) { float healAmount = heal.GetValue() / 100f * GetMaxHealth(); currentHealth += Mathf.FloorToInt(healAmount); if (currentHealth > currentMaxHealth) { currentHealth = currentMaxHealth; } HealthChangeEventArgs args = new HealthChangeEventArgs(); args.healthChange = Mathf.FloorToInt(healAmount); args.modifier = heal; OnHealthChange?.Invoke(this, args); }
void ShowHealChange(object healthable, HealthChangeEventArgs args) { if (args.healthChange > 0) { StartCoroutine(SpawnParticle(healParticle, target, particleLifetime)); } else if (args.healthChange < 0) { if (args.initiator != null) { Quaternion quaternion = new Quaternion(); quaternion.SetLookRotation(args.initiator.transform.position); StartCoroutine(SpawnParticle(hitParticle, target, particleLifetime, quaternion)); return; } StartCoroutine(SpawnParticle(hitParticle, target, particleLifetime)); } }
private void ShowHealChange(object healthable, HealthChangeEventArgs args) { if (args.healthChange > 0) { StartCoroutine(SpawnParticle(healParticle, target, particleLifetime)); return; } var damageInitiator = args.modifier.GetOwner(); if (damageInitiator == null) { StartCoroutine(SpawnParticle(hitParticle, target, particleLifetime)); return; } Quaternion quaternion = new Quaternion(); quaternion.SetLookRotation(damageInitiator.transform.position); StartCoroutine(SpawnParticle(hitParticle, target, particleLifetime, quaternion)); }
public void OnHealthChanged(HealthChangeEventArgs e) { this._text.text = $"{e.CurrentHitPoints}/{e.MaxHitPoints} hp"; this._fill.fillAmount = (float)e.CurrentHitPoints / e.MaxHitPoints; this._color.color = _gradientColor.Evaluate(this._fill.fillAmount); }
private void OnGetHit(object obj, HealthChangeEventArgs eventArgs) { Stop(); doing = false; healthable.OnHealthChange -= OnGetHit; }