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