From ae60497f7722e01ccceebe799b5820717e048eb3 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 20 Oct 2021 18:42:10 -0400 Subject: Haven't committed in days, oops! --- bonnie-bee/game.scm | 486 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 442 insertions(+), 44 deletions(-) (limited to 'bonnie-bee/game.scm') diff --git a/bonnie-bee/game.scm b/bonnie-bee/game.scm index ad1d9c3..ffdbc3e 100644 --- a/bonnie-bee/game.scm +++ b/bonnie-bee/game.scm @@ -1,16 +1,23 @@ (define-module (bonnie-bee game) #:use-module (bonnie-bee actor) #:use-module (bonnie-bee assets) + #:use-module (bonnie-bee background) #:use-module (bonnie-bee bullet) #:use-module (bonnie-bee common) #:use-module (bonnie-bee flower) #:use-module (bonnie-bee player) + #:use-module (bonnie-bee turret) + #:use-module (bonnie-bee popcorn) + #:use-module (chickadee) + #:use-module (chickadee audio) #:use-module (chickadee data quadtree) #:use-module (chickadee graphics color) + #:use-module (chickadee graphics particles) #:use-module (chickadee math rect) #:use-module (chickadee math vector) #:use-module (chickadee scripting) #:use-module (oop goops) + #:use-module (starling asset) #:use-module (starling kernel) #:use-module (starling node) #:use-module (starling node-2d) @@ -20,10 +27,20 @@ (define %game-bounds (make-rect 0.0 0.0 %game-width %game-height)) (define-class () - (quadtree #:getter quadtree #:init-form (make-quadtree %game-bounds))) + (state #:accessor state #:init-value 'play) + (quadtree #:getter quadtree #:init-form (make-quadtree %game-bounds)) + (scroll-speed #:getter scroll-speed #:init-value 0.0) + (last-lives #:accessor last-lives #:init-value 0) + (last-pollen #:accessor last-pollen #:init-value 0) + (last-score #:accessor last-score #:init-value 0) + (music-source #:getter music-source #:init-form (make-source #:loop? #t))) + +(define-method (change-scroll-speed (game ) speed) + (slot-set! game 'scroll-speed speed)) (define-method (spawn (game ) (actor )) (set! (quadtree actor) (quadtree game)) + (quadtree-insert! (quadtree game) (world-hitbox actor) actor) (attach-to game actor)) (define-method (player (game )) @@ -32,64 +49,445 @@ (define-method (bullets (game )) (& game bullets)) +(define-method (particles (game )) + (& game particles)) + (define-method (on-boot (game )) (set! *random-state* (random-state-from-platform)) (set-cameras! game) (attach-to game + (make + #:name 'background + #:texture background-image) + (make + #:name 'particles + #:particles (make-particles 2048 #:texture (asset-ref particle-image))) (make #:name 'bullets - #:quadtree (quadtree game)))) + #:rank 3 + #:quadtree (quadtree game)) + (make