aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2025-06-21 02:32:19 +0100
committerGene Pasquet <dev@etenil.net>2025-06-21 02:32:19 +0100
commit8937277a79cc5a24b406cf15f411992ac2e7241f (patch)
treeda70474d6050869d6cea0d3f83084794f9747be4
parent4e88ef4a3fcf641afe7580d7810302e4ba44e740 (diff)
Display a SDL window
-rw-r--r--src/game.scm28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/game.scm b/src/game.scm
index ad4f800..28211e9 100644
--- a/src/game.scm
+++ b/src/game.scm
@@ -1,7 +1,11 @@
(import scheme
+ (chicken base)
(chicken format)
(chicken process-context)
(chicken condition)
+ (chicken pretty-print)
+ (srfi 1)
+ miscmacros
(prefix sdl2 "sdl2:")
(prefix sdl2-ttf "ttf:")
(prefix sdl2-image "img:"))
@@ -11,8 +15,8 @@
(define +screen-height+ 400)
(define *fullscreen?* #f)
(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 +software-mode?+ (member "--software" (command-line-arguments)))
+(define +vsync?+ (member "--vsync" (command-line-arguments)))
(sdl2:set-main-ready!)
(sdl2:init! '(video))
@@ -32,7 +36,7 @@
(if (and +vsync?+ (not +software-mode?+)) ; vsync doesn't work with software rendering
(sdl2:set-hint! 'render-vsync "1"))
-(define *window* (sdl2:create-window! "Magnetic Trek"
+(define *window* (sdl2:create-window! "Mackerel Knight"
'centered 'centered
+screen-width+ +screen-height+
(if *fullscreen?* '(fullscreen) '())))
@@ -45,6 +49,24 @@
(set! (sdl2:render-draw-color *renderer*) +background-color+)
(sdl2:render-clear! *renderer*)
+(let/cc exit-main-loop!
+ (while #t
+ (set! (sdl2:render-draw-color *renderer*) +background-color+)
+ (sdl2:render-clear! *renderer*)
+ (sdl2:pump-events!)
+ (while (sdl2:has-events?)
+ (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!))))
+
+ (sdl2:render-present! *renderer*)
+
+ (sdl2:delay! 10)))
+
(format #t "chicken env: ~a" (get-environment-variable "CHICKEN_ENV"))
(format #t "hello world")