summaryrefslogtreecommitdiff
path: root/bonnie-bee/player.scm
diff options
context:
space:
mode:
Diffstat (limited to 'bonnie-bee/player.scm')
-rw-r--r--bonnie-bee/player.scm44
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))