 
     go: (steps) =>
         steps = 1 if steps is undefined
-        log "Go #{steps} steps."
+        # log "Go #{steps} steps."
         @gameState.move steps
 
     turn: (dir) =>
-        log "turn '#{dir}'"
+        # log "turn '#{dir}'"
         return if dir is undefined
         d = $.inArray(dir, ['N','E','S','W'])
         if d >= 0

        return

    turnRight: =>
        log "turnRight"
        @gameState.turnRight()
        return

    turnLeft: =>
        log "turnLeft"
        @gameState.turnLeft()
        return

    turnAndGo: (direction, steps) =>
        log "turnAndGo #{direction} #{steps}"
        @turn direction
        @go steps
        return

        @gameManager.gameWon @score, @stars
        return

    checkEvent: (playerX, playerY) ->
        log "Checking: X: #{playerX}, Y: #{playerY}"
        canMove = true
        if playerX < 1 or playerX > @gameManager.config.visual.gridX + 1\
          or playerY < (-1 * @gameManager.config.visual.gridY + 1) or playerY > 1
            # Player is out of bounds of grid.
            canMove = false
            log "Out of bounds!"
        log "canMove: #{canMove}"
        return canMove

    move: (steps) ->
        # Bits are more fun that lookup tables or a switch
        # sign is positive 1 for North00, East01, and -1 for South10, West11
        [sign, isEastOrWest] = [1  - (@protagonist.dir & 2), @protagonist.dir & 1]
        if isEastOrWest
            newx = @protagonist.x + sign
            newy = @protagonist.y
        unless isEastOrWest
            newx = @protagonist.x
            newy = @protagonist.y + sign

        updatePlayerPosition = @checkEvent(newx, newy)
        if updatePlayerPosition
            @protagonist.x = newx
            @protagonist.y = newy
            @gameVisual.gridMove @protagonist.index, steps

        return

    turnRight: ->
