From 58266627bf3ea66dfc6f8434c32304758d1d9e98 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 15 Oct 2021 23:29:49 -0400 Subject: Day 1 check-in. --- bonnie-bee/game.scm | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 bonnie-bee/game.scm (limited to 'bonnie-bee/game.scm') diff --git a/bonnie-bee/game.scm b/bonnie-bee/game.scm new file mode 100644 index 0000000..5290ab8 --- /dev/null +++ b/bonnie-bee/game.scm @@ -0,0 +1,79 @@ +(define-module (bonnie-bee game) + #:use-module (bonnie-bee actor) + #:use-module (bonnie-bee assets) + #:use-module (bonnie-bee bullet) + #:use-module (bonnie-bee common) + #:use-module (bonnie-bee player) + #:use-module (chickadee data quadtree) + #:use-module (chickadee graphics color) + #:use-module (chickadee math rect) + #:use-module (chickadee math vector) + #:use-module (chickadee scripting) + #:use-module (oop goops) + #:use-module (starling kernel) + #:use-module (starling node) + #:use-module (starling node-2d) + #:use-module (starling scene) + #:export ()) + +(define %game-bounds (make-rect 0.0 0.0 %game-width %game-height)) + +(define-class () + (quadtree #:getter quadtree #:init-form (make-quadtree %game-bounds))) + +(define-method (on-boot (game )) + (set-cameras! game) + (attach-to game + (make + #:name 'bullets + #:quadtree (quadtree game))) + (let loop ((i 0)) + (when (< i 100) + (add-bullet (& game bullets) pollen-pickup + (vec2 (* (random:uniform) 320.0) + (* (random:uniform) 240.0)) + (vec2 (random:uniform) + (random:uniform))) + (loop (+ i 1))))) + +(define-method (spawn (game ) (actor )) + (set! (quadtree actor) (quadtree game)) + (attach-to game actor)) + +(define-method (on-enter (game )) + (spawn game + (make + #:name 'player + #:position (vec2 (/ %game-width 2.0) 20.0) + #:hitbox (make-rect -2.0 -2.0 4.0 4.0)))) + +(define-method (player (game )) + (& game player)) + +(define-method (on-key-press (game ) key modifiers repeat?) + (case key + ((q) + (pop-scene (current-kernel))) + ((left) + (set! (move-left? (player game)) #t)) + ((right) + (set! (move-right? (player game)) #t)) + ((down) + (set! (move-down? (player game)) #t)) + ((up) + (set! (move-up? (player game)) #t)) + ((z) + (set! (shoot? (player game)) #t)))) + +(define-method (on-key-release (game ) key modifiers) + (case key + ((left) + (set! (move-left? (player game)) #f)) + ((right) + (set! (move-right? (player game)) #f)) + ((down) + (set! (move-down? (player game)) #f)) + ((up) + (set! (move-up? (player game)) #f)) + ((z) + (set! (shoot? (player game)) #f)))) -- cgit v1.2.3