public override Grid GenerateImpactGrid() { var grid = new Grid(25, 25); grid.Weight[12, 12] = 255; return grid; }
public Grid Clone() { var grid = new Grid(Size.Width, Size.Height); for(var x = 0; x < Size.Width - 1; x++) { for(var y = 0; y < Size.Height - 1; y++) { grid.Weight[x, y] = Weight[x, y]; } } return grid; }
public static Grid FromBitmap(GameServiceContainer services, string bitmapName) { var texture = ((ContentManager)services.GetService(typeof(ContentManager))).Load<Texture2D>(bitmapName); var grid = new Grid(texture.Width, texture.Height); for (var i = 0; i < grid.Size.Width; i++) { for (var j = 0; j < grid.Size.Height; j++) { var c = new Color[1]; texture.GetData(0, new Rectangle(i, j, 1, 1), c, 0, 1); grid.Weight[i, j] = (byte)((c[0].R + c[0].G + c[0].B)/3); } } return grid; }
public Grid GetMovementGrid(Grid battleboard) { var grid = new Grid(battleboard.Size.Width, battleboard.Size.Height); var neighbors = new List<int[]> { new[] { 0, -1 }, new[] { 1, 0 }, new[] { 0, 1 }, new[] { -1, 0 } }; var lastRound = new List<int[]> { new[] { (int)Avatar.Location.X, (int)Avatar.Location.Y } }; int distance = 3 + (int)Math.Log(Stats[Stat.Speed], 15); for (var i = 0; i < distance; i++) { var currentRound = new List<int[]>(); foreach (var square in lastRound) { foreach (var neighbor in neighbors) { // check if this cell has already been processed if (grid.Weight[square[0] + neighbor[0], square[1] + neighbor[1]] == 1) continue; var checkPoint = new Point( square[0] + neighbor[0], square[1] + neighbor[1] ); if (checkPoint.X < 0 || checkPoint.X > battleboard.Size.Width || checkPoint.Y < 0 || checkPoint.Y > battleboard.Size.Height) continue; if (battleboard.Weight[checkPoint.X, checkPoint.Y] > 0) { currentRound.Add(new[] { square[0] + neighbor[0], square[1] + neighbor[1] }); } } } foreach (var newSquare in currentRound) { grid.Weight[newSquare[0], newSquare[1]] = 1; } lastRound = currentRound; } return grid; }
public Grid OverlayGridFromCenter(Grid overlay, Point center) { var grid = Clone(); for(var x = 0; x < overlay.Size.Width - 1; x++) { for(var y = 0; y < overlay.Size.Height - 1; y++) { var currX = x + center.X - overlay.Size.Width/2; var currY = y + center.Y - overlay.Size.Height/2; if (currX < 0 || currX >= grid.Size.Width || currY < 0 || currY >= grid.Size.Height) continue; grid.Weight[currX, currY] = overlay.Weight[x, y]; } } return grid; }
private void HighlightGrid(Grid grid, GridHighlight highlightType) { for (var i = 0; i < grid.Size.Width; i++) { for (var j = 0; j < grid.Size.Height; j++) { if (grid.Weight[i, j] > 0) { HighlightCell(i, j, highlightType); } } } }
public void SetTargettingGrid(Grid targetGrid, Grid impactGrid) { _targettingGrid = targetGrid; _impactGrid = impactGrid; }
public void SetGrid(string gridName) { _grid = Grid.FromBitmap(Game.Services, gridName); UpdateGrid(); }
public void ResetGrid() { DefaultGrid(); _targettingGrid = new Grid(0, 0); _impactGrid = new Grid(0, 0); AbilityAim = false; }