From 3fc18437f905f18aa4bf3b688930dbc68f8721b3 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 23 Oct 2021 17:09:34 -0400 Subject: Lots of tweaks and also sprite animations! --- bonnie-bee/player.scm | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'bonnie-bee/player.scm') diff --git a/bonnie-bee/player.scm b/bonnie-bee/player.scm index 0d7f1e0..f990657 100644 --- a/bonnie-bee/player.scm +++ b/bonnie-bee/player.scm @@ -32,8 +32,8 @@ (define %max-pollen 50) (define-class () - (move-left? #:accessor move-left? #:init-value #f) - (move-right? #:accessor move-right? #:init-value #f) + (move-left? #:accessor move-left? #:init-value #f #:watch? #t) + (move-right? #:accessor move-right? #:init-value #f #:watch? #t) (move-down? #:accessor move-down? #:init-value #f) (move-up? #:accessor move-up? #:init-value #f) (shoot? #:accessor shoot? #:init-value #f #:watch? #t) @@ -48,16 +48,43 @@ (define-method (on-boot (player )) (attach-to player - (make + (make + #:name 'sprite #:atlas bee-atlas - #:index 12 - #:origin (vec2 16.0 16.0)))) + #:origin (vec2 16.0 16.0) + #:animations `((default . ,(make + #:frames #(0 1) + #:frame-duration 0.05)) + (move-left . ,(make + #:frames #(2 3) + #:frame-duration 0.05)) + (move-right . ,(make + #:frames #(4 5) + #:frame-duration 0.05)) + (idle . ,(make + #:frames #(0 1) + #:frame-duration 0.75)))))) + +(define-method (update-animation (player )) + (change-animation (& player sprite) + (cond + ((and (move-left? player) + (not (move-right? player))) + 'move-left) + ((and (not (move-left? player)) + (move-right? player)) + 'move-right) + (else + 'default)))) (define-method (on-change (player ) slot-name old new) (case slot-name ((shoot?) (when (and new (not (and old new))) - (set! (last-shot player) 0))))) + (set! (last-shot player) 0))) + ((move-left? move-right?) + (unless (eq? old new) + (update-animation player))))) (define-method (after-move (player )) (let ((p (position player))) -- cgit v1.2.3