Example #1
0
 public void LoadObject(StreamReader inStream)
 {
     code = (TerrainCode)Enum.Parse(typeof(TerrainCode), inStream.ReadLine());
     setWater(Int32.Parse(inStream.ReadLine()));
     getParameters().Clear();
     int parameterSize = Int32.Parse(inStream.ReadLine());
     for (int i = 0; i < parameterSize; i++)
     {
         TerrainParameter newKey = (TerrainParameter)Enum.Parse(typeof(TerrainParameter),inStream.ReadLine());
         String newValue = inStream.ReadLine();
         getParameters().Add(newKey, newValue);
     }
 }
        public static List<Position> getTerrainPositions(TerrainCode code, Region region, bool allowParameters, bool includeEdges)
        {
            int edgeAdjust=0;
            if(!includeEdges)
            {
                edgeAdjust=1;
            }
            List<Position> positions = new List<Position>();
            for(int x=0+edgeAdjust; x < region.getWidth() - (edgeAdjust * 2); x++)
            {
                for(int y=0+edgeAdjust; y < region.getHeight() - (edgeAdjust * 2); y++)
                {
                    if(region.getTerrain(x, y).getCode() == code
                    && ((!allowParameters && region.getTerrain(x, y).getParameters().Count == 0) || allowParameters))
                    {
                        positions.Add(new Position(x,y));
                    }
                }
            }

            return positions;
        }
 public static List<Position> getTerrainPositions(TerrainCode code, Region region, bool allowParameters)
 {
     return MapGenerator.getTerrainPositions(code, region, allowParameters, true);
 }
Example #4
0
 /**
  * @param code the code to set
  */
 public void setCode(TerrainCode code)
 {
     this.code = code;
 }
Example #5
0
        private int water; //how much water is here?

        #endregion Fields

        #region Constructors

        public Terrain()
        {
            code = TerrainCode.DIRT;
            water = 0;
            parameters = new Dictionary<TerrainParameter,String>();
        }
        public List<Position> getTerrainPositions(int x1, int y1, int x2, int y2, TerrainCode code)
        {
            List<Position> positions = new List<Position>();
                for (int x = x1; x < x2; x++)
                {
                    for (int y = y1; y < y2; y++)
                    {
                        if (region.getTerrain(x, y).getCode() == code)
                        {
                            positions.Add(new Position(x, y));
                        }
                    }
                }

                return positions;
        }
        public List<Position> getAdjacentTerrainPositions(int x1, int y1, int x2, int y2, TerrainCode code, TerrainCode adjacent)
        {
            List<Position> positions = new List<Position>();
            for(int x=x1; x < x2; x++)
            {
                for(int y=y1; y < y2; y++)
                {
                    if(region.getTerrain(x, y).getCode() == code)
                    {
                        positions.Add(new Position(x,y));
                    }
                }
            }

            List<Position> returnList = new List<Position>();
            foreach(Position tempPos in positions)
            {
                if(region.getTerrain(tempPos.x+1, tempPos.y-1).getCode() == adjacent
                || region.getTerrain(tempPos.x, tempPos.y-1).getCode() == adjacent
                || region.getTerrain(tempPos.x-1, tempPos.y-1).getCode() == adjacent
                || region.getTerrain(tempPos.x+1, tempPos.y).getCode() == adjacent
                || region.getTerrain(tempPos.x-1, tempPos.y).getCode() == adjacent
                || region.getTerrain(tempPos.x+1, tempPos.y+1).getCode() == adjacent
                || region.getTerrain(tempPos.x, tempPos.y+1).getCode() == adjacent
                || region.getTerrain(tempPos.x-1, tempPos.y+1).getCode() == adjacent)
                {
                    returnList.Add(tempPos);
                }
            }

            return returnList;
        }