/// <summary> /// Implements battle with an enemy. /// Changes IsAlive to false if the battle is lost. /// Fires event every time when a member of the team dies in the battle. /// </summary> /// <param name="enemy">The enemy to fight with.</param> public void Fight(Enemy enemy) { if (!(enemy is IEnemy)) { throw new ArgumentException("Parameter enemy must implement interface IEnemy."); } double teamStrengthAtBattleStart = this.Strength; if (teamStrengthAtBattleStart <= enemy.BattleStrength) { base.IsAlive = false; return; } while (enemy.BattleStrength > 0) { Friend currentFighter = this.companions[this.companions.Count - 1]; double fighterStrength = currentFighter.BattleStrength; currentFighter.BattleStrength -= enemy.BattleStrength; enemy.BattleStrength -= fighterStrength; if (!currentFighter.IsAlive) { this.RemoveCompanion(currentFighter); } string message = string.Format("{0} perished in battle with evil {1}s. Eternal glory upon his name!", currentFighter.Name, enemy.GetType()); FriendDiedInBattleEventArgs diedArgs = new FriendDiedInBattleEventArgs(currentFighter, message); //FriendDiedInBattle(currentFighter, diedArgs); } }
private void FriendDied(Friend aFriend, FriendDiedInBattleEventArgs eventArgs) { this.joinInTeamMessage += "\n" + eventArgs.Message; }
private void FriendDied(Friend aFriend, FriendDiedInBattleEventArgs eventArgs) { Console.WriteLine(eventArgs.Message); }