示例#1
0
        public void InjectDependencies(IPromotionParser promotionParser)
        {
            var movementSummary = new UnitMovementSummary();

            promotionParser.SetMovementSummary(movementSummary, StartingPromotions);

            MovementSummary = movementSummary;
        }
示例#2
0
        private bool IsCellImpassableFor(
            IUnitMovementSummary movementSummary, IHexCell cell, ICivilization domesticCiv, bool isMeleeAttacking
            )
        {
            if (HasCityOfOwner(cell, domesticCiv))
            {
                return(false);
            }

            if (HasForeignCity(cell, domesticCiv))
            {
                return(!isMeleeAttacking);
            }

            if (!cell.Terrain.IsWater() && !movementSummary.CanTraverseLand)
            {
                return(true);
            }
            else if (cell.Terrain == CellTerrain.DeepWater && !movementSummary.CanTraverseDeepWater)
            {
                return(true);
            }
            else if (cell.Terrain.IsWater() && cell.Terrain != CellTerrain.DeepWater && !movementSummary.CanTraverseShallowWater)
            {
                return(true);
            }

            if (HexSimulationConfig.GetBaseMoveCostOfVegetation(cell.Vegetation) == -1)
            {
                return(true);
            }

            if (HexSimulationConfig.GetBaseMoveCostOfShape(cell.Shape) == -1)
            {
                return(true);
            }

            if (HexSimulationConfig.GetBaseMoveCostOfFeature(cell.Feature) == -1)
            {
                return(true);
            }

            return(false);
        }