Ejemplo n.º 1
0
 public GameField(Size size, IInputQueue queue)
 {
     _size = size;
     _queue = queue;
     _sprite = new ModifyableSprite(size);
     _currentFigure = new FigureI(3, 0);
     _peak = _size.Height;
 }
Ejemplo n.º 2
0
        public ISprite GetCurrentView()
        {
            var sprite = new ModifyableSprite(_sprite);

            _currentFigure.ForEachNonEmptyCell((i, j) =>
            {
                var x = _currentFigure.Placement.Left + i;
                var y = _currentFigure.Placement.Top + j;

                if (x < 0 || y < 0 || x > _size.Width - 1 || y > _size.Height - 1 || _currentFigure[i, j].IsEmptyCell())
                    return;

                if (!sprite[x, y].IsEmptyCell())
                    throw new InvalidOperationException("cannot draw current view because figure overlaps ground");

                sprite[x, y] = CurrentFigure[i, j];
            });

            return sprite;
        }