aboutsummaryrefslogtreecommitdiff
path: root/src/game.scm
blob: ad4f8008d2ad92dc5338d483ce94de6f158b7b21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(import scheme
	(chicken format)
	(chicken process-context)
	(chicken condition)
	(prefix sdl2 "sdl2:")
        (prefix sdl2-ttf "ttf:")
	(prefix sdl2-image "img:"))

(define +color-depth+ 32)
(define +screen-width+ 600)
(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)))

(sdl2:set-main-ready!)
(sdl2:init! '(video))
(ttf:init!)
(img:init! '(png))

(on-exit sdl2:quit!)

;; Install a custom exception handler that will call quit! and then
;; call the original exception handler. This ensures that quit! will
;; be called even if an unhandled exception reaches the top level.
(current-exception-handler
 (let ((original-handler (current-exception-handler)))
   (lambda (exception)
     (sdl2:quit!)
     (original-handler exception))))

(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"
                                      'centered 'centered
                                      +screen-width+ +screen-height+
                                      (if *fullscreen?* '(fullscreen) '())))
(define *renderer* (sdl2:create-renderer! *window* -1
                                          (if +software-mode?+ '(software) '(accelerated))))

(define *font* (ttf:open-font "DejaVuSans.ttf" 12))
(define *text-color* (sdl2:make-color 255 255 255))

(set! (sdl2:render-draw-color *renderer*) +background-color+)
(sdl2:render-clear! *renderer*)

(format #t "chicken env: ~a" (get-environment-variable "CHICKEN_ENV"))

(format #t "hello world")