public Position GetThirdPosition(Step <PendulumState> step, GameState mutableGS, GameState currentGS)
        {
            PendulumState state = step.RootStep.State;
            int           x     = state.FilledBlock.LeftX - 1;
            int           y     = state.FilledBlock.TopY - 1;

            return(new Position(x, y));
        }
        public void AfterFirstPosition(Step <PendulumState> step, GameState mutableGS, GameState currentGS)
        {
            Position      yourPos     = mutableGS.YourCell.Position;
            PendulumState rootState   = step.RootStep.State;
            Block         filledBlock = rootState.FilledBlock;

            rootState.FilledBlock.LeftX = yourPos.X;
            if (filledBlock.TopY > yourPos.Y)
            {
                filledBlock.TopY = yourPos.Y;
            }
        }
        public Position GetFirstPosition(Step <PendulumState> step, GameState mutableGS, GameState currentGS)
        {
            PendulumState state = step.RootStep.State;

            if (state.Level % 2 == 1)
            {
                // Going left:
                int x = state.FilledBlock.LeftX - 1;
                int y = state.FilledBlock.TopY - 1;
                return(new Position(x, y));
            }
            else
            {
                // Going right:
                int x = state.FilledBlock.RightX + 1;
                int y = state.FilledBlock.TopY - 1;
                return(new Position(x, y));
            }
        }