Exemple #1
0
        public decimal ApplyDamage(IEnumerable <Damage> damageIEnumerable)
        {
            decimal totalDamageDone = 0;

            foreach (Damage damageItem in damageIEnumerable)
            {
                IArmourType armour = Armour.FirstOrDefault(x => x.DamageType == damageItem.DamageType);

                decimal damageAmount = damageItem.Amount;

                if (armour != null)
                {
                    // If there is an applicable armour then reduce incoming damage by the appropriate amount
                    damageAmount = damageAmount - armour.ArmourAmount;
                }
                //Make sure minimum damage is 0
                if (damageAmount < 0)
                {
                    damageAmount = 0;
                }

                _DamageTaken    = _DamageTaken + damageAmount;
                totalDamageDone = totalDamageDone + damageAmount;
                // make sure the damage taken never exceeds hitpoint
                if (_DamageTaken > _MaxHitpoints)
                {
                    _DamageTaken = _MaxHitpoints;
                }
            }

            return(totalDamageDone);
        }