2024-05-17 23:49:31 +02:00
|
|
|
(define-module (game main)
|
2024-05-20 14:40:57 +02:00
|
|
|
#:use-module (game model level)
|
2024-05-20 19:49:32 +02:00
|
|
|
#:use-module (game model hero)
|
2024-05-20 14:40:57 +02:00
|
|
|
#:use-module (game render level)
|
2024-05-20 19:49:32 +02:00
|
|
|
#: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)
|
2024-05-21 00:56:54 +02:00
|
|
|
#: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)
|
2024-05-20 19:49:32 +02:00
|
|
|
(define hero #f)
|
2024-05-21 00:56:54 +02:00
|
|
|
(define inputs '())
|
2024-05-17 23:49:31 +02:00
|
|
|
|
|
|
|
(define (load)
|
2024-05-20 14:40:57 +02:00
|
|
|
(render-level-load)
|
2024-05-20 19:49:32 +02:00
|
|
|
(render-hero-load)
|
2024-05-19 21:54:30 +02:00
|
|
|
(set! level (level-parse-file "assets/levels/level-1.map"))
|
2024-05-20 14:40:57 +02:00
|
|
|
(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)
|
2024-05-20 19:49:32 +02:00
|
|
|
(set! hero
|
2024-05-21 12:48:43 +02:00
|
|
|
(hero-with-position
|
|
|
|
hero
|
|
|
|
(set-vec2-x!
|
|
|
|
(hero-position hero)
|
|
|
|
(floor-remainder
|
|
|
|
(+ (vec2-x (hero-position 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)
|
2024-05-20 14:40:57 +02:00
|
|
|
(render-level-draw level)
|
2024-05-20 19:49:32 +02:00
|
|
|
(render-hero hero)
|
2024-05-19 21:54:30 +02:00
|
|
|
)
|
2024-05-17 23:49:31 +02:00
|
|
|
|
2024-05-21 00:56:54 +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)
|
2024-05-21 00:56:54 +02:00
|
|
|
(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
|
|
|
|
|
|
|
|