diff options
| author | Gene Pasquet <dev@etenil.net> | 2025-12-21 19:45:14 +0000 |
|---|---|---|
| committer | Gene Pasquet <dev@etenil.net> | 2025-12-24 22:36:41 +0000 |
| commit | 1d28f3556a957b4099f12abd4d4645f17f1df3e8 (patch) | |
| tree | 3192966c12c1daa174864ab26b45f4d0d90f02bc /src/game.scm | |
| parent | b8c88dd712cba2f7cef6b277d7c36b12eb5f154a (diff) | |
Build input-state map
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*) |
