Пример #1
0
        public override Grid GenerateImpactGrid()
        {
            var grid = new Grid(25, 25);
            grid.Weight[12, 12] = 255;

            return grid;
        }
Пример #2
0
        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;
        }
Пример #3
0
        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;
        }
Пример #4
0
        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;
        }
Пример #5
0
        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;
        }
Пример #6
0
 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);
             }
         }
     }
 }
Пример #7
0
 public void SetTargettingGrid(Grid targetGrid, Grid impactGrid)
 {
     _targettingGrid = targetGrid;
     _impactGrid = impactGrid;
 }
Пример #8
0
 public void SetGrid(string gridName)
 {
     _grid = Grid.FromBitmap(Game.Services, gridName);
     UpdateGrid();
 }
Пример #9
0
 public void ResetGrid()
 {
     DefaultGrid();
     _targettingGrid = new Grid(0, 0);
     _impactGrid = new Grid(0, 0);
     AbilityAim = false;
 }