示例#1
0
        public string Heal(string[] args)
        {
            string    healerName          = args[0];
            string    healingReceiverName = args[1];
            Character healer   = characters.FirstOrDefault(ch => ch.Name == healerName);
            Character receiver = characters.FirstOrDefault(ch => ch.Name == healingReceiverName);

            if (healer == null)
            {
                throw new ArgumentException($"Character {healerName} not found!");
            }
            if (receiver == null)
            {
                throw new ArgumentException($"Character {healingReceiverName} not found!");
            }

            if (healer.GetType().Name != nameof(Priest))
            {
                throw new ArgumentException($"{healerName} cannot heal!");
            }

            IHealer castedHealer = (IHealer)healer;

            castedHealer.Heal(receiver);

            StringBuilder sb = new StringBuilder();

            sb.AppendLine($"{healer.Name} heals {receiver.Name} for {healer.AbilityPoints}! {receiver.Name} has {receiver.Health} health now!");

            return(sb.ToString().Trim());
        }
示例#2
0
        // Many pieces, which focus around the soldier.
        // Using them is a problem because each time,
        // they need to be rewired, restructured and it's not known
        public void PlayWar()
        {
            var shooter = new Soldier();
            var target  = new Soldier();

            // Shot should determine if damage is taken or not
            shooter.Shoot(target);
            _damager.Damage(target);
            // Soldier can move by itself
            _mover.Move(shooter, new Vector3D());


            if (target.Hp <= 0)
            {
                // Soldier should know how it dies
                _killer.Kill(target);
            }
            else
            {
                // Soldiers know how to give first aid
                _healer.Heal(target);
            }
        }
示例#3
0
 /// <summary>
 /// Accepts the healer.
 /// </summary>
 /// <param name="healer">The healer.</param>
 public override void AcceptHealer(IHealer healer) => healer.Heal(this);