Beispiel #1
0
        /// <summary>
        /// Each Recruit Attacks an enemy
        /// </summary>
        /// <param name="enemy"></param>
        private void Attack(IEnemy enemy)
        {
            _writer.Information();
            _writer.WriteMessage($"\n{" ",-80}");
            _writer.WriteMessage($"{"-----------",22} {"The Army begins its Attack!!",5} {"-----------",10}{" ",17}");
            _writer.WriteMessage($"{" ",-80}\n");
            _writer.Default();

            foreach (var soldier in Recruits.Where(r => !r.IsDead))
            {
                if (enemy.HitPoints > 0)
                {
                    var attackDamage = soldier.Attack();
                    _writer.WriteMessage(soldier.AttackMessage());

                    // Enemy Defends the Attack
                    enemy.Defend(attackDamage);
                }
                else
                {
                    enemy.IsDead = true;
                    break;
                }
            }
        }
Beispiel #2
0
        public static void ConvertLootersToKingdomCultureRecruits(ref TroopRoster troopRoster, CultureObject culture, int numberToUpgrade)
        {
            var recruit = Recruits.Where(x =>
                                         x.Culture == Clan.All.FirstOrDefault(k => k.Culture == culture)?.Culture)
                          .ToList().GetRandomElement() ?? Recruits.ToList().GetRandomElement();

            troopRoster.AddToCounts(recruit, numberToUpgrade);
        }
Beispiel #3
0
        /// <summary>
        /// Army Defends against the Enemy
        /// </summary>
        /// <param name="enemy"></param>
        private void Defend(IEnemy enemy)
        {
            var liveSoldiers = Recruits.Where(r => !r.IsDead);

            DisplayDefendMessage();

            foreach (var soldier in liveSoldiers)
            {
                var attackDamage = enemy.Attack();
                _writer.WriteMessage(enemy.AttackMessage());
                soldier.Defend(enemy.AttackType, attackDamage);

                // Wonder about putting this inside Defend, but then defend would need to return a string which might be weird?
                _writer.WriteMessage(soldier.DefendMessage(enemy.AttackType, attackDamage));
            }
        }