コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
 private void FriendDied(Friend aFriend, FriendDiedInBattleEventArgs eventArgs)
 {
     this.joinInTeamMessage += "\n" + eventArgs.Message;
 }
コード例 #3
0
 private void FriendDied(Friend aFriend, FriendDiedInBattleEventArgs eventArgs)
 {
     Console.WriteLine(eventArgs.Message);
 }