示例#1
0
        //TODO BasicAttack method and SpellDamage method

        private void DealDamage(Characters.Character stats, DamageType type, float physicalDamageAmount, float magicDamageAmount, bool reduced)
        {
            if (reduced)
            {
                physicalDamageAmount *= 1 - stats.DamageReducePercentage / 100;
                magicDamageAmount    *= 1 - stats.DamageReducePercentage / 100;
            }

            switch (type)
            {
            case DamageType.Physical:
                stats.TakeDamage(_myStats, physicalDamageAmount, 0);
                break;

            case DamageType.PhysicalLethal:
                stats.TakeLethalDamage(_myStats, physicalDamageAmount, 0);
                break;

            case DamageType.Magic:
                stats.TakeDamage(_myStats, 0, magicDamageAmount);
                break;

            case DamageType.PhysicalMagic:
                stats.TakeLethalDamage(_myStats, 0, magicDamageAmount);
                break;

            case DamageType.Mixed:
                stats.TakeDamage(_myStats, physicalDamageAmount, magicDamageAmount);
                break;

            case DamageType.MixedLethal:
                stats.TakeLethalDamage(_myStats, physicalDamageAmount, magicDamageAmount);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
        }