public void IncreaseStatTest(GangerStatistics stat) { var ganger = new Ganger() { Move = 1, WeaponSkill = 1, BallisticSkill = 1, Strength = 1, Toughness = 1, Wounds = 1, Attack = 1, Leadership = 1, Initiative = 1, }; var updated = _gangerManager.IncreaseStat(ganger, stat); var properties = updated.GetType().GetProperties(); foreach (var prop in properties) { if (!Enum.TryParse <GangerStatistics>(prop.Name, out var result)) { continue; } if (prop.Name == Enum.GetName(typeof(GangerStatistics), stat)) { Assert.AreEqual(2, prop.GetValue(updated)); } else { Assert.AreEqual(1, prop.GetValue(updated)); } } }
/// <summary> /// Do an advance roll /// </summary> /// <param name="ganger">Ganger advancing</param> /// <param name="house">Ganger's house</param> /// <returns>Ganger level up report</returns> public GangerLevelUpReport DoAdvanceRoll(Ganger ganger, GangHouse house) { GangerStatistics stat = 0; int roll = _diceRoller.RollDice(6, 2); int statToIncrease = _diceRoller.RollDie(); switch (roll) { case 2: case 12: var advancementId = _gangerManager.RegisterGangerAdvancement(ganger.GangerId); return(new GangerLevelUpReport() { Description = "Pick any skill", GangerName = ganger.Name, GangerId = ganger.GangerId, NewSkillFromCategory = new[] { SkillType.Agility, SkillType.Combat, SkillType.Ferocity, SkillType.Muscle, SkillType.Shooting, SkillType.Stealth, SkillType.Techno }, AdvancementId = advancementId, }); case 3: case 4: case 10: case 11: advancementId = _gangerManager.RegisterGangerAdvancement(ganger.GangerId); return(new GangerLevelUpReport() { Description = "New gang skill", GangerName = ganger.Name, GangerId = ganger.GangerId, NewSkillFromCategory = GetGangSkill(ganger.GangerType, house), AdvancementId = advancementId, }); case 5: stat = (statToIncrease <= 3) ? GangerStatistics.Strength : GangerStatistics.Attack; _gangerManager.IncreaseStat(ganger, stat); return(new GangerLevelUpReport() { Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased", GangerName = ganger.Name, GangerId = ganger.GangerId, NewSkillFromCategory = null, }); case 6: case 8: stat = (statToIncrease <= 3) ? GangerStatistics.WeaponSkill : GangerStatistics.BallisticSkill; _gangerManager.IncreaseStat(ganger, stat); return(new GangerLevelUpReport() { Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased", GangerName = ganger.Name, GangerId = ganger.GangerId, NewSkillFromCategory = null, }); case 7: stat = (statToIncrease <= 3) ? GangerStatistics.Initiative : GangerStatistics.Leadership; _gangerManager.IncreaseStat(ganger, stat); return(new GangerLevelUpReport() { Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased", GangerName = ganger.Name, GangerId = ganger.GangerId, NewSkillFromCategory = null, }); case 9: stat = (statToIncrease <= 3) ? GangerStatistics.Wounds : GangerStatistics.Attack; _gangerManager.IncreaseStat(ganger, stat); return(new GangerLevelUpReport() { Description = Enum.GetName(typeof(GangerStatistics), stat) + " increased", GangerName = ganger.Name, GangerId = ganger.GangerId, NewSkillFromCategory = null, }); } return(null); }