diff options
Diffstat (limited to 'src/game.scm')
| -rw-r--r-- | src/game.scm | 42 |
1 files changed, 10 insertions, 32 deletions
diff --git a/src/game.scm b/src/game.scm index d22263b..aeb725b 100644 --- a/src/game.scm +++ b/src/game.scm @@ -7,6 +7,7 @@ (srfi 1) (srfi 12) miscmacros + simple-logger (prefix sdl2 "sdl2:") (prefix sdl2-ttf "ttf:") (prefix sdl2-image "img:") @@ -22,6 +23,11 @@ (define +background-color+ (sdl2:make-color 0 0 0)) (define +software-mode?+ (member "--software" (command-line-arguments))) (define +vsync?+ (member "--vsync" (command-line-arguments))) +(define +debug?+ (member "--debug" (command-line-arguments))) + +;; When --debug is passed, show debug/info logs (e.g. input events). +(when +debug?+ + (log-level 0)) (sdl2:set-main-ready!) (sdl2:init! '(video joystick)) @@ -128,35 +134,11 @@ (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+) (sdl2:render-clear! *renderer*) (sdl2:pump-events!) - ;; Collect this frame's events (input-state-update! expects a list) (let ((events-this-frame (let collect ((lst '())) (if (not (sdl2:has-events?)) @@ -164,14 +146,10 @@ (let ((e (sdl2:make-event))) (sdl2:poll-event! e) (collect (cons e lst))))))) - (input-state-update! *input* events-this-frame) - ;; Check for escape to exit - (for-each (lambda (event) - (when (and (sdl2:keyboard-event? event) - (eq? (sdl2:event-type event) 'key-down) - (eq? (sdl2:keyboard-event-sym event) 'escape)) - (exit-main-loop!))) - events-this-frame)) + (set! *input* (input-state-update *input* events-this-frame)) + (when (input-pressed? *input* 'quit) + (log-debug "[game] quit pressed") + (exit-main-loop!))) (draw-tilemap *renderer* *level*) (draw-objects *renderer* *level*) |
