コード例 #1
0
 public void AssignFloodPlains(IEnumerable <IHexCell> cells)
 {
     foreach (var cell in cells)
     {
         if (RiverCanon.HasRiver(cell) &&
             cell.Terrain == CellTerrain.Desert &&
             ModLogic.CanChangeTerrainOfCell(cell, CellTerrain.FloodPlains)
             )
         {
             ModLogic.ChangeTerrainOfCell(cell, CellTerrain.FloodPlains);
         }
     }
 }
コード例 #2
0
 protected override void EditCell(IHexCell cell)
 {
     if (IsPaintingTerrain && CellModificationLogic.CanChangeTerrainOfCell(cell, ActiveTerrain))
     {
         CellModificationLogic.ChangeTerrainOfCell(cell, ActiveTerrain);
     }
 }
コード例 #3
0
        private Func <IHexCell, bool> GetLakeCandidateFilter(MapRegion region)
        {
            return(delegate(IHexCell cell) {
                if (cell.Terrain != CellTerrain.Snow && cell.Terrain != CellTerrain.Desert &&
                    !cell.Terrain.IsWater() && ModLogic.CanChangeTerrainOfCell(cell, CellTerrain.FreshWater)
                    )
                {
                    bool surroundedByLandOrLakes = Grid.GetNeighbors(cell).All(
                        neighbor => neighbor.Terrain != CellTerrain.ShallowWater &&
                        neighbor.Terrain != CellTerrain.DeepWater
                        );

                    bool hasResourceNode = NodePositionCanon.GetPossessionsOfOwner(cell).Any();

                    bool fewNearbylakes = Grid.GetCellsInRadius(cell, 2).Count(
                        nearby => nearby.Terrain == CellTerrain.FreshWater
                        ) < MaxNearbyLakes;

                    bool noAdjacentDesert = !Grid.GetNeighbors(cell).Any(neighbor => neighbor.Terrain == CellTerrain.Desert);

                    return surroundedByLandOrLakes && !hasResourceNode && fewNearbylakes && noAdjacentDesert;
                }
                else
                {
                    return false;
                }
            });
        }
コード例 #4
0
 private bool CandidateFilter(IHexCell cell)
 {
     return(!RiverCanon.HasRiver(cell) &&
            !NodeLocationCanon.GetPossessionsOfOwner(cell).Any() &&
            ModLogic.CanChangeTerrainOfCell(cell, CellTerrain.ShallowWater) &&
            Grid.GetNeighbors(cell).Any(neighbor => neighbor.Terrain == CellTerrain.ShallowWater) &&
            !Grid.GetNeighbors(cell).Any(neighbor => neighbor.Terrain == CellTerrain.FreshWater));
 }