diff options
Diffstat (limited to 'src/game.scm')
| -rw-r--r-- | src/game.scm | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/game.scm b/src/game.scm index bdabbf1..c4e1356 100644 --- a/src/game.scm +++ b/src/game.scm @@ -11,7 +11,8 @@ (prefix sdl2-ttf "ttf:") (prefix sdl2-image "img:") matchable - tilemap) + tilemap + defstruct) (define +color-depth+ 32) (define +screen-width+ 600) @@ -125,6 +126,29 @@ (set! (sdl2:render-draw-color *renderer*) +background-color+) (sdl2:render-clear! *renderer*) +(defstruct keymap + jump + left + right + attack + macro) + +(define keys (make-keymap #f #f #f #f #f)) + +(define-syntax defkeymap + (syntax-rules () + ((defkeymap name + (state (key ...)) ...) + (define name )))) + +(defkeymap keys + (jump ('w 'up)) + (left ('a 'left)) + (right ('d 'right)) + (attack ('q)) + (macro ('space)) + (quit ('escape))) + (let/cc exit-main-loop! (while #t (set! (sdl2:render-draw-color *renderer*) +background-color+) @@ -134,10 +158,10 @@ (let ((event (sdl2:make-event))) (sdl2:poll-event! event) ;; (pp event) - (when (and (sdl2:keyboard-event? event) - (eq? (sdl2:event-type event) 'key-down) - (eq? (sdl2:keyboard-event-sym event) 'escape)) - (exit-main-loop!)))) + (when (sdl2:keyboard-event? event) + (keymap-process-input! event (sdl2:event-type event)) + ;; (exit-main-loop!) + ))) (draw-tilemap *renderer* *level*) |
