public void LearnSkillTest() { var ganger = new Ganger() { GangerId = "1" }; var skill = new Skill() { SkillId = 1 }; _mockGangerProvider.Setup(gp => gp.CanLearnSkill(It.IsAny <string>(), It.IsAny <string>())) .Returns(true); _mockSkillManager.Setup(sm => sm.GetRandomSkillByType(It.IsAny <SkillType>())) .Returns(skill); var gangerSkill = _gangerManager.LearnSkill(ganger, "advancementId", SkillType.Agility); _mockGangerProvider.Verify(gp => gp.AddGangerSkill( It.Is <string>(g => g == ganger.GangerId), It.Is <int>(s => s == skill.SkillId)), Times.Once); _mockGangerProvider.Verify(gp => gp.RemoveGangerAdvancement( It.Is <string>(g => g == ganger.GangerId), It.Is <string>(s => s == "advancementId")), Times.Once); Assert.IsTrue(ganger.Skills.Contains(skill)); Assert.AreEqual(ganger.GangerId, gangerSkill.GangerId); Assert.AreEqual(skill.SkillId, gangerSkill.SkillId); }
/// <summary> /// Add ganger /// </summary> /// <param name="ganger">Ganger</param> /// <returns>Added Ganger</returns> public Ganger AddGanger(Ganger ganger) { var gangerWithStats = CreateGanger(ganger.Name, ganger.GangerType); gangerWithStats.GangId = ganger.GangId; return(_gangerProvider.AddGanger(gangerWithStats)); }
/// <summary> /// Learn skill /// </summary> /// <param name="ganger">The ganger</param> /// <param name="advancementId">The advancement ID. Used to verify that the /// ganger is able to learn a new skill.</param> /// <param name="type">Skill type</param> /// <returns>Ganger skill</returns> public GangerSkill LearnSkill(Ganger ganger, string advancementId, SkillType type) { if (!_gangerProvider.CanLearnSkill(ganger.GangerId, advancementId)) { throw new HivemindException("Invalid advancement ID."); } // TODO: If the ganger knows all the skills of that category, we return for now. if (ganger.Skills.Where(s => s.SkillType == type).Count() >= 6) { return(null); } var skill = _skillManager.GetRandomSkillByType(type); while (ganger.Skills.Contains(skill)) { skill = _skillManager.GetRandomSkillByType(type); } _gangerProvider.AddGangerSkill(ganger.GangerId, skill.SkillId); _gangerProvider.RemoveGangerAdvancement(ganger.GangerId, advancementId); var skills = ganger.Skills.ToList(); skills.Add(skill); ganger.Skills = skills; return(new GangerSkill { SkillId = skill.SkillId, GangerId = ganger.GangerId, }); }
public void SporeCaveEffectTest() { var effect = _territoryManager.GetTerritoryEffect((int)TerritoryEnum.SporeCave); var ganger = new Ganger(); var report = effect(new TerritoryWorkStatus() { Roll = 20, Ganger = ganger, TerritoryName = "Spore Cave" }); Assert.AreEqual(20, report.Income); Assert.AreEqual("Spore Cave", report.TerritoryName); Assert.NotNull(report.Description); Assert.IsTrue(ganger.HasSporeSickness); report = effect(new TerritoryWorkStatus() { Roll = 30, TerritoryName = "Spore Cave" }); Assert.AreEqual(30, report.Income); Assert.AreEqual("Spore Cave", report.TerritoryName); }
public void CreateGangerWithInvalidValues() { var ganger = new Ganger() { Name = "TestGanger", Move = -1, WeaponSkill = -1, BallisticSkill = -1, Strength = -1, Toughness = -1, Wounds = -1, Initiative = -1, Attack = -1, Leadership = -1 }; Assert.AreEqual(1, ganger.Move); Assert.AreEqual(1, ganger.WeaponSkill); Assert.AreEqual(1, ganger.BallisticSkill); Assert.AreEqual(1, ganger.Strength); Assert.AreEqual(1, ganger.Toughness); Assert.AreEqual(1, ganger.Wounds); Assert.AreEqual(1, ganger.Initiative); Assert.AreEqual(1, ganger.Attack); Assert.AreEqual(1, ganger.Leadership); }
public void ChemPitEffectTest() { var effect = _territoryManager.GetTerritoryEffect((int)TerritoryEnum.Chempit); var report = effect(new TerritoryWorkStatus() { TerritoryName = "Chempit", Roll = 6 }); Assert.AreEqual("Chempit", report.TerritoryName); Assert.AreEqual(6, report.Income); var ganger = new Ganger(); report = effect(new TerritoryWorkStatus() { TerritoryName = "Chempit", Roll = 12, Ganger = ganger }); Assert.AreEqual("Chempit", report.TerritoryName); Assert.AreEqual(0, report.Income); Assert.IsTrue(ganger.HasHorribleScars); Assert.NotNull(report.Description); }
public void Setup() { _ganger = new Ganger() { GangerId = "1", Name = "Ganger", GangId = "Gang1", Move = 4, WeaponSkill = 3, BallisticSkill = 3, Strength = 3, Toughness = 3, Wounds = 1, Attack = 1, Initiative = 7, Leadership = 7, Active = true, Experience = 20, Cost = 50, GangerType = GangerType.Ganger, }; _mockInjuryProvider = new Mock <IInjuryProvider>(); _mockDiceRoller = new Mock <IDiceRoller>(); _injuryManager = new InjuryManager(_mockInjuryProvider.Object, _mockDiceRoller.Object); _mockInjuryProvider.Setup(m => m.GetInjuryById(It.IsAny <int>())) .Returns(new Injury()); }
public void UpdateGangerTest() { var ganger = new Ganger(); _gangerManager.UpdateGanger(ganger); _mockGangerProvider.Verify(m => m.UpdateGanger(It.Is <Ganger>(g => g == ganger)), Times.Once); }
public void InvalidGetCostTest() { var ganger = new Ganger() { GangerType = (GangerType)(-1), }; Assert.Throws <HivemindException>(() => ganger.GetCost()); }
public void GetLeaderBonusTest(GangerType type, GameType gameType, bool hasWon, bool isAttacker, int expectedValue) { var ganger = new Ganger() { GangerType = type }; var result = _experienceService.GetLeaderBonus(ganger, gameType, hasWon, isAttacker); Assert.AreEqual(result, expectedValue); }
private Ganger HasImpressiveScars(Ganger ganger) { // should only apply once if (!ganger.HasImpressiveScars) { ganger.Leadership += 1; } ganger.HasImpressiveScars = true; return(ganger); }
private Ganger HasPartiallyDeafened(Ganger ganger) { if (ganger.IsDeafened) { ganger.Leadership -= 1; return(ganger); } ganger.IsDeafened = true; return(ganger); }
private Ganger HasBlindedInOneEye(Ganger ganger) { if (ganger.IsOneEyed) { ganger.Active = false; return(ganger); } ganger.BallisticSkill -= 1; ganger.IsOneEyed = true; return(ganger); }
public void GetNumberOfAdvanceRollsTest(int startingExperience, int gainedExperience, int expectedAdvanceRolls) { var ganger = new Ganger() { Name = "TestGanger", Experience = startingExperience }; var advanceRolls = _experienceService.GetNumberOfAdvanceRolls(ganger, gainedExperience); Assert.AreEqual(expectedAdvanceRolls, advanceRolls); }
private void DoAssertions(Ganger ganger, int move, int ws, int bs, int strength, int toughness, int wounds, int attack, int initiative, int leadership, bool active) { Assert.AreEqual(move, ganger.Move); Assert.AreEqual(ws, ganger.WeaponSkill); Assert.AreEqual(bs, ganger.BallisticSkill); Assert.AreEqual(strength, ganger.Strength); Assert.AreEqual(toughness, ganger.Toughness); Assert.AreEqual(wounds, ganger.Wounds); Assert.AreEqual(attack, ganger.Attack); Assert.AreEqual(initiative, ganger.Initiative); Assert.AreEqual(leadership, ganger.Leadership); Assert.AreEqual(active, ganger.Active); }
/// <summary> /// Increase a statistic /// </summary> /// <param name="ganger">Ganger</param> /// <param name="stat">Statistic</param> /// <param name="interval">Interval</param> /// <returns>Updated ganger</returns> public Ganger IncreaseStat(Ganger ganger, GangerStatistics stat, int interval = 1) { switch (stat) { case GangerStatistics.Move: ganger.Move += interval; break; case GangerStatistics.WeaponSkill: ganger.WeaponSkill += interval; break; case GangerStatistics.BallisticSkill: ganger.BallisticSkill += interval; break; case GangerStatistics.Strength: ganger.Strength += interval; break; case GangerStatistics.Toughness: ganger.Toughness += interval; break; case GangerStatistics.Attack: ganger.Attack += interval; break; case GangerStatistics.Wounds: ganger.Wounds += interval; break; case GangerStatistics.Initiative: ganger.Initiative += interval; break; case GangerStatistics.Leadership: ganger.Leadership += interval; break; default: break; } UpdateGanger(ganger); return(ganger); }
/// <summary> /// Add ganger /// </summary> /// <param name="ganger">Ganger</param> /// <returns>Added ganger</returns> public Ganger AddGanger(Ganger ganger) { using (var connection = new SqlConnection(_connectionString)) { using (var command = new SqlCommand("Gangers_AddGanger", connection)) { connection.Open(); command.CommandType = CommandType.StoredProcedure; var gangerId = command.Parameters.Add("@GangerId", SqlDbType.NVarChar, 100); gangerId.Direction = ParameterDirection.Output; command.Parameters.Add("@GangId", SqlDbType.NVarChar, 100).Value = ganger.GangId; command.Parameters.Add("@Name", SqlDbType.VarChar).Value = ganger.Name; command.Parameters.Add("@Type", SqlDbType.Int).Value = (int)ganger.GangerType; command.Parameters.Add("@Move", SqlDbType.Int).Value = ganger.Move; command.Parameters.Add("@WeaponSkill", SqlDbType.Int).Value = ganger.WeaponSkill; command.Parameters.Add("@BallisticSkill", SqlDbType.Int).Value = ganger.BallisticSkill; command.Parameters.Add("@Strength", SqlDbType.Int).Value = ganger.Strength; command.Parameters.Add("@Toughness", SqlDbType.Int).Value = ganger.Toughness; command.Parameters.Add("@Wounds", SqlDbType.Int).Value = ganger.Wounds; command.Parameters.Add("@Initiative", SqlDbType.Int).Value = ganger.Initiative; command.Parameters.Add("@Attack", SqlDbType.Int).Value = ganger.Attack; command.Parameters.Add("@Leadership", SqlDbType.Int).Value = ganger.Leadership; command.Parameters.Add("@Experience", SqlDbType.Int).Value = ganger.Experience; command.Parameters.Add("@Active", SqlDbType.Int).Value = ganger.Active; command.Parameters.Add("@IsOneEyed", SqlDbType.Int).Value = ganger.IsOneEyed; command.Parameters.Add("@IsDeafened", SqlDbType.Int).Value = ganger.IsDeafened; command.Parameters.Add("@IsOneHanded", SqlDbType.Int).Value = ganger.IsOneHanded; command.Parameters.Add("@RightHandFingers", SqlDbType.Int).Value = ganger.RightHandFingers; command.Parameters.Add("@LeftHandFingers", SqlDbType.Int).Value = ganger.LeftHandFingers; command.Parameters.Add("@HasHorribleScars", SqlDbType.Int).Value = ganger.HasHorribleScars; command.Parameters.Add("@HasImpressiveScars", SqlDbType.Int).Value = ganger.HasHorribleScars; command.Parameters.Add("@HasOldBattleWound", SqlDbType.Int).Value = ganger.HasOldBattleWound; command.Parameters.Add("@HasHeadWound", SqlDbType.Int).Value = ganger.HasHorribleScars; command.Parameters.Add("@IsCaptured", SqlDbType.Int).Value = ganger.HasHorribleScars; command.Parameters.Add("@HasBitterEnmity", SqlDbType.Int).Value = ganger.HasHorribleScars; command.Parameters.Add("@Cost", SqlDbType.Int).Value = ganger.Cost; command.ExecuteNonQuery(); ganger.GangerId = (string)gangerId.Value; return(ganger); } } }
public int GetLeaderBonus(Ganger ganger, GameType gameType, bool hasWon, bool isAttacker) { if (ganger.GangerType != GangerType.LEADER) { return(0); } switch (gameType) { case GameType.GANG_FIGHT: case GameType.SCAVENGERS: case GameType.AMBUSH: return(hasWon ? 10 : 0); case GameType.RESCUE_MISSION: return(hasWon && !isAttacker ? 10 : 0); default: return(0); } }
/// <summary> /// Gets the leader's bonus after a battle. /// </summary> /// <param name="ganger">Leader</param> /// <param name="gameType">Game type</param> /// <param name="hasWon">True if game won</param> /// <param name="isAttacker">True if gang was attacking</param> /// <returns>Leader bonus</returns> public int GetLeaderBonus(Ganger ganger, GameType gameType, bool hasWon, bool isAttacker) { if (ganger.GangerType != GangerType.Leader) { return(0); } switch (gameType) { case GameType.GangFight: case GameType.Scavengers: case GameType.Ambush: return(hasWon ? 10 : 0); case GameType.RescueMission: return(hasWon && !isAttacker ? 10 : 0); default: return(0); } }
public bool AddGangerPosition(string argName, int hitpoints, Mindset argMindSet, bool leader) { Ganger ganger = new Ganger(); ganger.gangerName = argName; ganger.gangerHitpoints = hitpoints; ganger.mindSet = argMindSet; ganger.leader = leader; foreach (Position pos in positions) { if (pos.row == (int)argMindSet) { if (pos.occupier == null) { if (pos.placeInLine != noOfPositionsX - 2 && pos.placeInLine != 1) { if (pos.placeInLine != noOfPositionsX - 1 && pos.placeInLine != 0) { } else { if (priorities[pos.row] == 1) { pos.occupier = ganger; return true; } } } else { pos.occupier = ganger; priorities[pos.row] = 1; return true; } } } } return false; }
public void GetCostTest(GangerType gangerType, int[] weaponCosts, int expectedCost) { var ganger = new Ganger() { GangerType = gangerType, }; var weapons = new List <GangerWeapon>(); foreach (var cost in weaponCosts) { weapons.Add(new GangerWeapon() { Cost = cost }); } ganger.Weapons = weapons; ganger.GetCost(); Assert.AreEqual(expectedCost, ganger.Cost); }
private Ganger HasHandInjury(Ganger ganger) { ganger.WeaponSkill -= 1; if (_diceRoller.RollDie() >= 3) { // right hand ganger.RightHandFingers -= _diceRoller.RollDice(3, 1); if (ganger.RightHandFingers <= 0) { if (ganger.IsOneHanded) { ganger.Active = false; return(ganger); } ganger.IsOneHanded = true; } return(ganger); } else { ganger.LeftHandFingers -= _diceRoller.RollDice(3, 1); if (ganger.LeftHandFingers <= 0) { if (ganger.IsOneHanded) { ganger.Active = false; return(ganger); } ganger.IsOneHanded = true; } return(ganger); } }
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)); } } }
public void GangerWeaponsTest() { var gangId = "321"; var ganger = new Ganger() { GangerId = "123", GangId = gangId }; var gangWeapon = new GangWeapon() { GangId = gangId, Weapon = new Weapon() { WeaponId = (WeaponEnum)1 }, Cost = 10 }; _gangerProvider.Setup(gp => gp.GetByGangerId(ganger.GangerId)) .Returns(ganger); var addedGangWeapon = _weaponManager.AddGangWeapon(gangWeapon); Assert.AreEqual(0, _weaponManager.GetGangerWeapons(ganger.GangerId).Count()); var returnedWeapon = _weaponManager.AddGangerWeapon(ganger.GangerId, addedGangWeapon.GangWeaponId); Assert.AreEqual("AAAA-BBBB-CCCC", returnedWeapon.GangerWeaponId); Assert.AreEqual(1, _weaponManager.GetGangerWeapons(ganger.GangerId).Count()); _weaponManager.RemoveGangerWeapon(ganger.GangerId, "AAAA-BBBB-CCCC"); Assert.AreEqual(0, _weaponManager.GetGangerWeapons(ganger.GangerId).Count()); Assert.AreEqual(1, _weaponManager.GetGangStash(gangId).Count()); }
private Ganger HasSurvivedAgainstTheOdds(Ganger ganger) { // TODO: Revisit this once experience is done ganger.Experience += _diceRoller.RollDie(); return(ganger); }
private Ganger SporeSickness(Ganger ganger) { ganger.HasSporeSickness = true; return(ganger); }
private Ganger IsCaptured(Ganger ganger) { ganger.IsCaptured = true; return(ganger); }
private Ganger HasShellShock(Ganger ganger) { ganger.Initiative -= 1; return(ganger); }
private Ganger HasHorribleScars(Ganger ganger) { ganger.HasHorribleScars = true; return(ganger); }
private Ganger HasBitterEnmity(Ganger ganger) { ganger.HasBitterEnmity = true; return(ganger); }
private Ganger HasOldBattleWound(Ganger ganger) { ganger.HasOldBattleWound = true; return(ganger); }