public void InjectDependencies(IPromotionParser promotionParser) { var movementSummary = new UnitMovementSummary(); promotionParser.SetMovementSummary(movementSummary, StartingPromotions); MovementSummary = movementSummary; }
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); }