Esempio n. 1
0
        /// <summary>
        /// Process injuries
        /// </summary>
        /// <param name="battleReport">Battle report</param>
        /// <returns>Injury report</returns>
        public InjuryReport ProcessInjuries(BattleReport battleReport)
        {
            // If a ganger is down, a roll less than three means they're injured.
            var injuries = new List <GangerInjuryReport>();

            foreach (var stats in battleReport.GangBattleStats)
            {
                if (stats.OutOfAction || (stats.Down && _diceRoller.RollDie() <= 3))
                {
                    injuries.Add(new GangerInjuryReport()
                    {
                        TheGanger = _gangerManager.GetGanger(stats.GangerId),
                        Injuries  = DetermineInjury(null),
                    });
                }
            }

            // var injuries = battleReport.GangBattleStats
            //    .Where(stats => stats.OutOfAction || (stats.Down && DiceRoller.RollDie() <= 3))
            //    .Select(ganger => _gangerManager.GetGanger(ganger.GangerId))
            //    .Select(ganger => new GangerInjuryReport() { TheGanger = ganger, Injuries = DetermineInjury(null) })
            //    .ToList();

            // apply injuries to Gangers
            var injuredGangers = new List <GangerInjuryReport>();

            for (int i = 0; i < injuries.Count(); i++)
            {
                var ganger = injuries[i].TheGanger;
                foreach (var injury in injuries[i].Injuries)
                {
                    ganger = injury.InjuryEffect(ganger);
                }

                injuredGangers.Add(new GangerInjuryReport()
                {
                    Injuries  = injuries[i].Injuries,
                    TheGanger = ganger,
                });
            }

            // update gangers in db
            foreach (var report in injuredGangers)
            {
                _gangerManager.UpdateGanger(report.TheGanger);
                foreach (var injury in report.Injuries)
                {
                    if (injury.InjuryId != InjuryEnum.FullRecovery)
                    {
                        _gangerManager.AddGangerInjury(report.TheGanger.GangerId, injury.InjuryId);
                    }
                }
            }

            return(new InjuryReport()
            {
                Injuries = injuries,
            });
        }
Esempio n. 2
0
 public void AddGangerInjuryTest()
 {
     _gangerManager.AddGangerInjury("1", InjuryEnum.ArmWound);
     _mockGangerProvider.Verify(m => m.AddGangerInjury(It.IsAny <string>(), It.IsAny <InjuryEnum>()), Times.Once);
 }