public DropPiece(DropPieceSimple simple = null)
        {
            Positions    = new PlayfieldPoint[NumColumns];
            PositionLerp = new float[NumColumns];
            // create player block:
            for (var x = 0; x < NumColumns; x++)
            {
                Positions[x] = new PlayfieldPoint();
            }

            CurrentState    = State.Whole;
            DropPieceSimple = simple;
        }
        public void Reset(PlayfieldPoint pos, DropPieceSimple simple)
        {
            DropPieceSimple = simple;

            for (var x = 0; x < NumColumns; x++)
            {
                Positions[x].Column = pos.Column + x;
                Positions[x].Row    = pos.Row;
            }

            CurrentState = State.Whole;
            HoldTimer    = HoldTime;
            FastDrop     = false;
        }
        public void Reset(PlayfieldPoint pos, bool allowJewel, DropPieceSimple.GetCellState del = null)
        {
            DropPieceSimple = new DropPieceSimple();

            if (del == null)
            {
                del = DropPieceSimple.RandomCell;
            }

            for (var x = 0; x < NumColumns; x++)
            {
                Positions[x].Column = pos.Column + x;
                Positions[x].Row    = pos.Row;
            }

            DropPieceSimple.Reset(allowJewel, del);

            CurrentState = State.Whole;
            HoldTimer    = HoldTime;
            FastDrop     = false;
        }
 public Cell GetCell(PlayfieldPoint p) => Cells[p.Column][p.Row];