public void GetWalkable(GameTime gameTime) { int[,] level = ((GameState)StateManager.GetState(Settings.STATES.Game)).DuplicateLevel(); ((GameState)StateManager.GetState(Settings.STATES.Game)).SetUnwalkable(ref level, Armies.army[selected]); // Uncomment to Print the grid /*for (int i = 0; i < level.GetLength(0); i++) * { * Console.WriteLine(); * for (int j = 0; j < level.GetLength(1); j++) * Console.Write(level[i, j]); * }*/ // Uncomment to Print the grid // PATHFINDING FOR REACHABLE AREA List <List <Node> > field = new List <List <Node> >(); for (int i = 0; i < level.GetLength(0); i++) { field.Add(new List <Node>()); for (int j = 0; j < level.GetLength(1); j++) { field[i].Add(new Node(i, j, level[i, j])); } } AStar.SetField(field); Point GPos = Armies.army[selected].GridPosition; AStar.Area(GPos.X, GPos.Y, Armies.army[selected].move); List <Node> nodes = AStar.GetClosed(); canMoveTo = new List <Point>(); moveArrows = new List <SpineAnimation>(); for (int i = 1; i < nodes.Count; i++) { canMoveTo.Add(new Point(nodes[i].x, nodes[i].y)); moveArrows.Add(AnimationAssets.ArrowIcon); GPos = Grid.ToPixelLocation(new Point(nodes[i].x, nodes[i].y), Globals.GridLocation, Globals.TileDimensions); moveArrows[i - 1].Position = new Vector2(GPos.X + Globals.TILE_WIDTH / 2, GPos.Y + Globals.TILE_HEIGHT / 2 - 20); moveArrows[i - 1].Update(gameTime); moveArrows[i - 1].Update(gameTime); } // END PATHFINDING FOR REACHABLE AREA }