         return
 
     startGame: ->
-        @config.visual.characters.protagonist.x = @config.game.startpos[0] - 1
-        @config.visual.characters.protagonist.y = @config.game.startpos[1] - 1
+        @config.visual.characters.protagonist.x = @config.game.startpos[0]
+        @config.visual.characters.protagonist.y = @config.game.startpos[1]
         @visual.startGame @config.visual
         @gameState = new MapGameState this, @visual, @config.visual.characters
         @commandMap = new MapGameCommands @gameState

    #       2
    #       v
    constructor: (@gameManager, @gameVisual, characterLoadconfig) ->
        # @config ?= { x: 4, y: 4, direction: 0, maxX:9, maxY:9, traps: [[2,4],[9,9]], targets: [[5,5]], targetCount : 0}
        @config = deepcopy @gameManager.config.game
        @score = 0
        @stars = 0
        @protagonist = {
            x: @config.startpos[0],
            y: @config.startpos[1],
            dir: if @config.direction? then @config.direction else 0,
            index: 0
        }
        @target = {
            x: @config.targetpos[0]
            y: @config.targetpos[1]
        }
        @gameVisual.charFace @protagonist.index, @protagonist.dir
        return

    gameWon: ->
        @gameManager.gameWon @score, @stars

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