public static List <Tile> GetNeighbors(Tile[,] tiles, int width, int height, Tile tile) { int midX = tile.X; int midY = tile.Y; int minX = tile.X - 1; int maxX = tile.X + 1; if (minX < 0) { minX = width - 1; } if (maxX >= width) { maxX = maxX - width; } int minY = tile.Y - 1; int maxY = tile.Y + 1; // Non-wrapping Y //if (minY < 0) minY = 0; //if (maxY >= height) maxY = height - 1; // Wrapping Y if (minY < 0) { minY = height - 1; } if (maxY >= height) { maxY = maxY - height; } //List<Tile> neighbors = tiles.AsList().Where(t => !(t == tile) && // (t.Y >= minY && t.Y <= maxY) && // (t.X >= minX && t.X <= maxX)).ToList(); List <Tile> neighbors = tiles.AsList().Where(t => (t.X == midX && t.Y == minY) || (t.X == minX && t.Y == midY) || (t.X == maxX && t.Y == midY) || (t.X == midX && t.Y == maxY) ).ToList(); return(neighbors); }
public static List <Tile> GetSurrounding(Tile[,] tiles, int width, int height, Tile tile) { int midX = tile.X; int midY = tile.Y; int minX = tile.X - 1; int maxX = tile.X + 1; if (minX < 0) { minX = width - 1; } if (maxX >= width) { maxX = maxX - width; } int minY = tile.Y - 1; int maxY = tile.Y + 1; // Non-wrapping Y //if (minY < 0) minY = 0; //if (maxY >= height) maxY = height - 1; // Wrapping Y if (minY < 0) { minY = height - 1; } if (maxY >= height) { maxY = maxY - height; } List <Tile> surrounding = tiles.AsList().Where(t => (t.X == minX && t.Y == minY) || (t.X == midX && t.Y == minY) || (t.X == maxX && t.Y == minY) || (t.X == minX && t.Y == midY) || (t.X == maxX && t.Y == midY) || (t.X == minX && t.Y == maxY) || (t.X == midX && t.Y == maxY) || (t.X == maxX && t.Y == maxY) ).ToList(); return(surrounding); }
public static Bitmap GetHeightMap(int width, int height, Tile[,] tiles) { var bitmap = new Bitmap(width, height); var tileList = tiles.AsList(); var minHeight = tileList.Min(x => x.HeightValue); var maxHeight = tileList.Max(x => x.HeightValue);; for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { float value = tiles[x, y].HeightValue; // Set color range, 0 = black, 1 = white //Color color = ColorHelpers.Lerp(Color.Black, Color.White, value); Color color = ColorHelpers.Lerp(Color.Black, Color.White, minHeight, maxHeight, value); //color = color; bitmap.SetPixel(x, y, color); } } return(bitmap); }
public static Bitmap GetTectonicMap(int width, int height, Tile[,] tiles) { return(BitmapGenerator.GetTectonicMap(width, height, tiles, tiles.AsList().Select(x => x.PlateId).Distinct().Count())); }