public static UndoRedoInfo TilePlacement_Redo(List <Tile>[] layerTiles, int mapWidth) { UndoRedoInfo undoRedoInfo = new LevelEditor.UndoRedoInfo(); undoRedoInfo.success = false; // If there is nothing to redo, return if (_Redo_TilePlacement.Count <= 0) { return(undoRedoInfo); } Tile tile = _Redo_TilePlacement.Pop(); // Push the current tile onto the Undo stack in the case where the user wants to revert forwards again Tile originalTile = new Tile(); originalTile.SetPosition(tile.position.x, tile.position.y); originalTile.canvasIdx = tile.canvasIdx; originalTile.tileMapIdx = layerTiles[originalTile.canvasIdx][originalTile.position.x + originalTile.position.y * mapWidth].tileMapIdx; originalTile.spriteSheetIdx = layerTiles[originalTile.canvasIdx][originalTile.position.x + originalTile.position.y * mapWidth].spriteSheetIdx; _Undo_TilePlacement.Push(originalTile); undoRedoInfo.success = true; undoRedoInfo.tile = tile; return(undoRedoInfo); }
private void Redo_Click(object sender, RoutedEventArgs e) { _Edit_Menu.Visibility = Visibility.Collapsed; // Get the Tile from the redo stack and draw it if successful LevelEditor.UndoRedoInfo undoRedoInfo = UndoRedo.TilePlacement_Redo(_layerTiles, _level.mapWidth); if (undoRedoInfo.success == false) { return; } DrawTile(undoRedoInfo.tile); }