Exemplo n.º 1
0
        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);
        }