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 | |
| parent | b8c88dd712cba2f7cef6b277d7c36b12eb5f154a (diff) | |
Build input-state map
| -rw-r--r-- | src/game.scm | 34 | ||||
| -rw-r--r-- | src/inputmap.scm | 14 | ||||
| -rw-r--r-- | src/tilemap.scm | 4 |
3 files changed, 47 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*) diff --git a/src/inputmap.scm b/src/inputmap.scm new file mode 100644 index 0000000..5328e35 --- /dev/null +++ b/src/inputmap.scm @@ -0,0 +1,14 @@ +(module inputmap +* +(import scheme + defstruct + (prefix sdl2 "sdl2:")) + +(define-syntax defkeymap + (syntax-rules () + ((defkeymap name + (state (key ...)) ...) + (define name )))) + + +) diff --git a/src/tilemap.scm b/src/tilemap.scm index 3fa9ace..7df0561 100644 --- a/src/tilemap.scm +++ b/src/tilemap.scm @@ -15,6 +15,8 @@ (prefix sdl2-image "img:") (prefix sdl2 "sdl2:")) +(+ 1 1) + (defstruct tileset tilewidth tileheight @@ -24,6 +26,8 @@ image-source image) + (+ 1 1) + (defstruct layer name width |
