/// <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, }); }
public void AddGangerInjuryTest() { _gangerManager.AddGangerInjury("1", InjuryEnum.ArmWound); _mockGangerProvider.Verify(m => m.AddGangerInjury(It.IsAny <string>(), It.IsAny <InjuryEnum>()), Times.Once); }