summaryrefslogtreecommitdiff
path: root/bonnie-bee/popcorn.scm
diff options
context:
space:
mode:
Diffstat (limited to 'bonnie-bee/popcorn.scm')
-rw-r--r--bonnie-bee/popcorn.scm39
1 files changed, 39 insertions, 0 deletions
diff --git a/bonnie-bee/popcorn.scm b/bonnie-bee/popcorn.scm
new file mode 100644
index 0000000..8c70326
--- /dev/null
+++ b/bonnie-bee/popcorn.scm
@@ -0,0 +1,39 @@
+(define-module (bonnie-bee popcorn)
+ #:use-module (bonnie-bee actor)
+ #:use-module (bonnie-bee assets)
+ #:use-module (bonnie-bee bullet)
+ #:use-module (chickadee audio)
+ #:use-module (chickadee graphics particles)
+ #:use-module (chickadee math)
+ #:use-module (chickadee math rect)
+ #:use-module (chickadee math vector)
+ #:use-module (chickadee scripting)
+ #:use-module (chickadee utils)
+ #:use-module (oop goops)
+ #:use-module (starling asset)
+ #:use-module (starling node)
+ #:use-module (starling node-2d)
+ #:export (<popcorn>))
+
+(define-class <popcorn> (<damageable> <actor>))
+
+(define-method (on-boot (popcorn <popcorn>))
+ (attach-to popcorn
+ (make <sprite>
+ #:texture popcorn-image
+ #:origin (vec2 16.0 16.0))))
+
+(define-method (on-collide (popcorn <popcorn>) (bullet <bullet>))
+ (if (player-bullet? bullet)
+ (begin
+ (damage popcorn 1)
+ (kill-bullet bullet)
+ #t)
+ #f))
+
+(define-method (on-death (popcorn <popcorn>))
+ (audio-play (asset-ref explosion-sound))
+ (let ((p (position popcorn)))
+ (add-particle-emitter (particles (particles (parent popcorn)))
+ (make-particle-emitter (make-rect (vec2-x p) (vec2-y p) 1.0 1.0)
+ 4 3))))