bloatrunner/game/main.scm

81 lines
2.1 KiB
Scheme
Raw Normal View History

2024-05-17 23:49:31 +02:00
(define-module (game main)
#:use-module (game model level)
#:use-module (game model hero)
#:use-module (game render level)
#:use-module (game render hero)
2024-05-17 23:49:31 +02:00
#:use-module (chickadee)
2024-05-19 18:48:18 +02:00
#:use-module (chickadee math rect)
2024-05-17 23:49:31 +02:00
#:use-module (chickadee math vector)
2024-05-19 18:48:18 +02:00
#:use-module (chickadee graphics color)
2024-05-17 23:49:31 +02:00
#:use-module (chickadee graphics sprite)
#:use-module (chickadee graphics texture)
2024-05-19 18:48:18 +02:00
#:use-module (chickadee graphics text)
#:use-module (chickadee graphics tile-map)
2024-05-17 23:49:31 +02:00
#:use-module (system repl coop-server)
#:use-module (srfi srfi-1)
2024-05-17 23:49:31 +02:00
#:export (launch-game))
2024-05-19 21:54:30 +02:00
(define level #f)
2024-05-17 23:49:31 +02:00
(define repl #f)
(define hero #f)
(define inputs '())
2024-05-17 23:49:31 +02:00
(define (load)
(render-level-load)
(render-hero-load)
2024-05-19 21:54:30 +02:00
(set! level (level-parse-file "assets/levels/level-1.map"))
(render-level-set! level)
2024-05-21 12:48:43 +02:00
(set! hero (hero-load level))
2024-05-17 23:49:31 +02:00
(set! repl (spawn-coop-repl-server)))
2024-05-19 18:48:18 +02:00
(define (update dt)
(poll-coop-repl-server repl)
(set! hero
2024-05-21 13:36:48 +02:00
(hero-with-x
hero
(floor-remainder
(+ (hero-x hero) (* 50.0 dt))
608.0))))
2024-05-19 21:54:30 +02:00
2024-05-17 23:49:31 +02:00
(define (draw _alpha)
(render-level-draw level)
(render-hero hero)
2024-05-19 21:54:30 +02:00
)
2024-05-17 23:49:31 +02:00
(define (set-add set item)
(if (member item set)
set
(cons item set)))
(define (key-press key)
(set! inputs
(cond ((eq? key 'left) (set-add inputs 'left))
((eq? key 'right) (set-add inputs 'right))
((eq? key 'up) (set-add inputs 'up))
((eq? key 'down) (set-add inputs 'down ))
((eq? key 'space) (set-add inputs 'dig ))
(else inputs))))
(define (key-release key)
(set! inputs
(cond ((eq? key 'left) (delete 'left inputs))
((eq? key 'right) (delete 'right inputs))
((eq? key 'up) (delete 'up inputs))
((eq? key 'down) (delete 'down inputs))
((eq? key 'space) (delete 'dig inputs))
(else inputs))))
2024-05-17 23:49:31 +02:00
(define (launch-game args)
(run-game
;; #:title "Bloatrunner"
#:load (lambda () (load))
#:update (lambda (dt) (update dt))
#:draw (lambda (alpha) (draw alpha))
;; #:key-press (lambda (key) (key-press key))
;; #:key-release (lambda (key) (key-release key))
))
2024-05-19 21:54:30 +02:00