diff options
Diffstat (limited to 'bonnie-bee/player.scm')
-rw-r--r-- | bonnie-bee/player.scm | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/bonnie-bee/player.scm b/bonnie-bee/player.scm new file mode 100644 index 0000000..6e8f7fb --- /dev/null +++ b/bonnie-bee/player.scm @@ -0,0 +1,44 @@ +(define-module (bonnie-bee player) + #:use-module (bonnie-bee actor) + #:use-module (bonnie-bee assets) + #:use-module (chickadee math vector) + #:use-module (oop goops) + #:use-module (starling node) + #:use-module (starling node-2d) + #:export (<player> + move-left? + move-right? + move-down? + move-up? + shoot? + speed + lives + pollen)) + +(define-class <player> (<actor>) + (move-left? #:accessor move-left? #:init-value #f) + (move-right? #:accessor move-right? #:init-value #f) + (move-down? #:accessor move-down? #:init-value #f) + (move-up? #:accessor move-up? #:init-value #f) + (shoot? #:accessor shoot? #:init-value #f) + (speed #:accessor speed #:init-value 2.0) + (lives #:accessor lives #:init-value 3) + (pollen #:accessor pollen #:init-value 0)) + +(define-method (on-boot (player <player>)) + (attach-to player + (make <atlas-sprite> + #:atlas bee-atlas + #:index 12 + #:origin (vec2 16.0 16.0)))) + +(define-method (update (player <player>) dt) + (let ((v (velocity player))) + (set-vec2! v + (+ (if (move-left? player) -1.0 0.0) + (if (move-right? player) 1.0 0.0)) + (+ (if (move-down? player) -1.0 0.0) + (if (move-up? player) 1.0 0.0))) + (vec2-normalize! v) + (vec2-mult! v (speed player))) + (next-method)) |