void InitFollowingTetrominos()
        {
            var numFollowingTetrominos = Mathf.Max(1, levelManager.FollowingTetrominoCount);

            if (followingTetrominos.Count > 0)
            {
                for (var i = 0; i < followingTetrominos.Count; i++)
                {
                    var t = followingTetrominos[i];
                    t.RemoveAllBlocks();
                }
                followingTetrominos.Clear();
            }

            for (var i = 0; i < numFollowingTetrominos; i++)
            {
                TetrominoData data = GetNextTetrominoData();
                var           t    = new Tetromino(blockInstanceManager, data);
                t.SetLiarTetrisMode(stateManager != null && stateManager.CurrentState.Value == GameState.LiarTetrisMode);

                followingTetrominos.Add(t);
            }

            UpdateFollowingTetrominosPositions();
        }
        void SetLiarTetrisMode(bool enabled)
        {
            if (currentTetromino != null)
            {
                currentTetromino.SetLiarTetrisMode(enabled);
            }

            if (heldTetromino != null)
            {
                heldTetromino.SetLiarTetrisMode(enabled);
            }
        }
        public Tetromino Spawn()
        {
            var data = GetNextTetrominoData();
            var t    = new Tetromino(blockInstanceManager, data);

            followingTetrominos.Add(t);
            t.SetLiarTetrisMode(stateManager.CurrentState.Value == GameState.LiarTetrisMode);


            var tetromino = followingTetrominos[0];

            followingTetrominos.RemoveAt(0);
            UpdateFollowingTetrominosPositions();


            return(tetromino);
        }