bloatrunner/game/main.scm

80 lines
2.1 KiB
Scheme

(define-module (game main)
#:use-module (game model level)
#:use-module (game model hero)
#:use-module (game render level)
#:use-module (game render hero)
#:use-module (chickadee)
#:use-module (chickadee math rect)
#:use-module (chickadee math vector)
#:use-module (chickadee graphics color)
#:use-module (chickadee graphics sprite)
#:use-module (chickadee graphics texture)
#:use-module (chickadee graphics text)
#:use-module (chickadee graphics tile-map)
#:use-module (system repl coop-server)
#:use-module (srfi srfi-1)
#:export (launch-game))
(define level #f)
(define repl #f)
(define hero #f)
(define inputs '())
(define (load)
(render-level-load)
(render-hero-load)
(set! level (level-parse-file "assets/levels/level-1.map"))
(render-level-set! level)
(set! hero (hero-load level))
(set! repl (spawn-coop-repl-server)))
(define (update dt)
(poll-coop-repl-server repl)
(set! hero
(hero-with-x
hero
(floor-remainder
(+ (hero-x hero) (* 50.0 dt))
608.0))))
(define (draw _alpha)
(render-level-draw level)
(render-hero hero)
)
(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))))
(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))
))