private void Bunny_OnHealthChange(object sender, PointEventArgs e) { if (e.DeltaPoints >= 0) { PlayBattleSound(healSound); } }
/// <summary> /// Use a skill. /// </summary> /// <param name="skillIndex">The index of the skill to use.</param> /// <param name="targets">The fighters that this skill should target.</param> public void UseSkill(int skillIndex, Fighter[] targets) { if (!CanUseSkill(skillIndex)) { return; } Skill skill = Skills[skillIndex]; int previousSkillPoints = CurrentSkillPoints; CurrentSkillPoints -= skill.Cost; skill.Use(this, targets); PointEventArgs args = new PointEventArgs(previousSkillPoints, CurrentSkillPoints); OnSkillPointsChange?.Invoke(this, args); }
public void RestoreSkillPoints(int skillAmount) { if (!IsAlive) { return; } int previousSkillPoints = CurrentSkillPoints; CurrentSkillPoints += skillAmount; // Clamp skill points if (CurrentSkillPoints > MaxSkillPoints) { CurrentSkillPoints = MaxSkillPoints; } PointEventArgs args = new PointEventArgs(previousSkillPoints, CurrentSkillPoints); OnSkillPointsChange?.Invoke(this, args); }
/// <summary> /// Add health to this fighter. /// </summary> /// <param name="healthAmount">The amount of health to add.</param> public void Heal(int healthAmount) { if (!IsAlive) { return; } int previousHealth = CurrentHealth; CurrentHealth += healthAmount; // Clamp health if (CurrentHealth > MaxHealth) { CurrentHealth = MaxHealth; } PointEventArgs args = new PointEventArgs(previousHealth, CurrentHealth); OnHealthChange?.Invoke(this, args); }
public virtual void TakeDamage(int damage) { if (!IsAlive) { return; } int previousHealth = CurrentHealth; CurrentHealth -= damage; // Check for defeat if (CurrentHealth <= 0) { CurrentHealth = 0; OnDefeat?.Invoke(this, EventArgs.Empty); } PointEventArgs args = new PointEventArgs(previousHealth, CurrentHealth); OnHealthChange?.Invoke(this, args); }
protected void InvokeOnHealthChange(int previousHealth) { PointEventArgs args = new PointEventArgs(previousHealth, CurrentHealth); OnHealthChange?.Invoke(this, args); }