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()); }
// 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); } }
/// <summary> /// Accepts the healer. /// </summary> /// <param name="healer">The healer.</param> public override void AcceptHealer(IHealer healer) => healer.Heal(this);