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); }
/** * @param code the code to set */ public void setCode(TerrainCode code) { this.code = code; }
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; }