aboutsummaryrefslogtreecommitdiff
path: root/src/game.scm
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.scm')
-rw-r--r--src/game.scm34
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*)