コード例 #1
0
 private void Bunny_OnHealthChange(object sender, PointEventArgs e)
 {
     if (e.DeltaPoints >= 0)
     {
         PlayBattleSound(healSound);
     }
 }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        protected void InvokeOnHealthChange(int previousHealth)
        {
            PointEventArgs args = new PointEventArgs(previousHealth, CurrentHealth);

            OnHealthChange?.Invoke(this, args);
        }