Пример #1
0
 internal void Add(PaintActionList paintActions)
 {
     foreach (PaintAction paintAction in paintActions)
     {
         _actions.Add(paintAction);
     }
 }
Пример #2
0
        internal void FillBetween(int layerId, byte?paletteId, byte?imageId, Point start, Point end)
        {
            CellPainter     cellPainter  = CellPainterFactory.GetCellPainter(start, end);
            PaintActionList paintActions = cellPainter.Paint(layerId, paletteId, imageId, this);

            _undoLog.Push(paintActions);
        }
Пример #3
0
        internal override PaintActionList Paint(int layer, byte?selectedPaletteId, byte?selectedImageId, Map map)
        {
            PaintActionList paintActionList = new PaintActionList();
            Cell            oldCell         = FillCell(StartCell, layer, selectedPaletteId, selectedImageId, map);

            paintActionList.Add(layer, StartCell.X, StartCell.Y, (byte)oldCell.PaletteId, (byte)oldCell.TileId);

            return(paintActionList);
        }
Пример #4
0
        internal override PaintActionList Paint(int layer, byte?selectedPaletteId, byte?selectedImageId, Map map)
        {
            PaintActionList paintActionList = new PaintActionList();
            Point           currentCell     = StartCell;

            do
            {
                Cell oldCell = FillCell(currentCell, layer, selectedPaletteId, selectedImageId, map);
                paintActionList.Add(layer, currentCell.X, currentCell.Y, (byte)oldCell.PaletteId, (byte)oldCell.TileId);
                currentCell.X--;
            } while (currentCell.X >= EndCell.X);

            return(paintActionList);
        }
Пример #5
0
        internal void Redo()
        {
            if (_redoLog.Count > 0)
            {
                PaintActionList paintActions = _redoLog.Pop();

                PaintActionList undoActionList = new PaintActionList();
                // undo that action
                foreach (PaintAction paintAction in paintActions)
                {
                    CellPainter     cellPainter     = CellPainterFactory.GetCellPainter(new Point(paintAction.X, paintAction.Y), new Point(paintAction.X, paintAction.Y));
                    PaintActionList paintActionList = cellPainter.Paint(paintAction.Layer, paintAction.PaletteId, paintAction.ImageId, this);
                    undoActionList.Add(paintActionList);
                }

                _undoLog.Push(undoActionList);
            }
        }
Пример #6
0
        internal void Undo()
        {
            // pop most recent action off stack
            if (_undoLog.Count > 0)
            {
                PaintActionList paintActions = _undoLog.Pop();

                PaintActionList redoActionList = new PaintActionList();
                // undo that action
                foreach (PaintAction paintAction in paintActions)
                {
                    CellPainter     cellPainter     = CellPainterFactory.GetCellPainter(new Point(paintAction.X, paintAction.Y), new Point(paintAction.X, paintAction.Y));
                    PaintActionList paintActionList = cellPainter.Paint(paintAction.Layer, paintAction.PaletteId, paintAction.ImageId, this);
                    redoActionList.Add(paintActionList);
                }

                _redoLog.Push(redoActionList);
            }
        }