public void SetMovementSummary(UnitMovementSummary summary, IEnumerable <IPromotion> promotions) { summary.Reset(); foreach (var promotion in promotions) { MovementParser.AddPromotionToMovementSummary(promotion, summary); } }
public void SetMovementSummary_ResetsSummary() { var summary = new UnitMovementSummary(); summary.BonusMovement = 2; summary.CanTraverseDeepWater = true; summary.CanTraverseLand = true; var promotions = new List <IPromotion>(); var promotionParser = Container.Resolve <PromotionParser>(); promotionParser.SetMovementSummary(summary, promotions); Assert.AreEqual(0, summary.BonusMovement); Assert.IsFalse(summary.CanTraverseDeepWater); Assert.IsFalse(summary.CanTraverseLand); }
public void SetMovementSummary_PassesSummaryAndEachPromotionIntoMovementParser() { var summary = new UnitMovementSummary(); var promotions = new List <IPromotion>() { BuildPromotion(), BuildPromotion(), BuildPromotion(), BuildPromotion(), BuildPromotion(), BuildPromotion() }; var promotionParser = Container.Resolve <PromotionParser>(); promotionParser.SetMovementSummary(summary, promotions); foreach (var promotion in promotions) { MockMovementParser.Verify( parser => parser.AddPromotionToMovementSummary(promotion, summary), Times.Once, "Failed to add a promotion to the movement summary" ); } }
public void AddPromotionToMovementSummary( IPromotion promotion, UnitMovementSummary summary ) { summary.CanTraverseLand |= promotion.PermitsLandTraversal; summary.CanTraverseShallowWater |= promotion.PermitsShallowWaterTraversal; summary.CanTraverseDeepWater |= promotion.PermitsDeepWaterTraversal; summary.BonusMovement += promotion.BonusMovement; summary.BonusVision += promotion.BonusVision; foreach (var terrain in promotion.TerrainsWithIgnoredCosts) { summary.TerrainsWithIgnoredCosts.Add(terrain); } foreach (var shape in promotion.ShapesWithIgnoredCosts) { summary.ShapesWithIgnoredCosts.Add(shape); } foreach (var vegetation in promotion.VegetationsWithIgnoredCosts) { summary.VegetationsWithIgnoredCosts.Add(vegetation); } foreach (var shapes in promotion.ShapesConsumingFullMovement) { summary.ShapesConsumingFullMovement.Add(shapes); } foreach (var vegetation in promotion.VegetationsConsumingFullMovement) { summary.VegetationConsumingFullMovement.Add(vegetation); } }
public void SetMovementSummary(UnitMovementSummary summary, IUnit unit) { SetMovementSummary(summary, UnitPromotionLogic.GetPromotionsForUnit(unit)); }