Esempio n. 1
0
        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"
                    );
            }
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
 public void SetMovementSummary(UnitMovementSummary summary, IUnit unit)
 {
     SetMovementSummary(summary, UnitPromotionLogic.GetPromotionsForUnit(unit));
 }