From 5b461c68e3194aef85bd175d51a30f205adb327f Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 16 Apr 2020 22:01:22 -0400 Subject: Day 6 progress. --- lisparuga/enemy.scm | 79 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 10 deletions(-) (limited to 'lisparuga/enemy.scm') diff --git a/lisparuga/enemy.scm b/lisparuga/enemy.scm index 06533ea..9213890 100644 --- a/lisparuga/enemy.scm +++ b/lisparuga/enemy.scm @@ -41,7 +41,9 @@ dead? fire-parting-shots-maybe - make-utatsugumi)) + make-utatsugumi + make-toratsugumi + make-renjyaku)) ;;; @@ -107,15 +109,22 @@ (set! (fire-parting-shots? enemy) #t))) #t) -(define %enemy-tiles - ;; 0: Utatsugumi - white - `((0.0 0.0 24.0 24.0) - ;; 1: Utatsugumi - black - (24.0 0.0 24.0 24.0))) - -(define (load-enemy-atlas file-name) - (let ((texture (load-image file-name))) - (list->texture-atlas texture %enemy-tiles))) +(define-method (load-enemy-atlas file-name) + (let ((texture (load-image file-name)) + (enemy-tiles + ;; 0: Utatsugumi - white + `((0.0 0.0 24.0 24.0) + ;; 1: Utatsugumi - black + (24.0 0.0 24.0 24.0) + ;; 2: Toratsugumi - white + (0.0 24.0 24.0 24.0) + ;; 3: Toratsugumi - black + (24.0 24.0 24.0 24.0) + ;; 4: Renjyaku - white + (48.0 0.0 48.0 48.0) + ;; 5: Renjyaku - black + (96.0 0.0 48.0 48.0)))) + (list->texture-atlas texture enemy-tiles))) (define-asset enemy-atlas (load-enemy-atlas (scope-asset "images/enemies.png"))) @@ -144,3 +153,53 @@ #:hitboxes (list (make-hitbox 'utatsugumi (make-rect -10.0 -10.0 20.0 20.0))) #:position (vec2 x y))) + + +;;; +;;; Toratsugumi +;;; + +(define-class ()) + +(define-method (on-boot (toratsugumi )) + (attach-to toratsugumi + (make + #:atlas enemy-atlas + #:index (if (eq? 'white (polarity toratsugumi)) 2 3) + #:origin (vec2 12.0 12.0)))) + +(define (make-toratsugumi polarity x y) + (make + #:name (gensym "toratsugumi-") + #:health 1 + #:points 20 + #:parting-shots 5 + #:polarity polarity + #:hitboxes + (list (make-hitbox 'toratsugumi (make-rect -5.5 -5.5 11.0 11.0))) + #:position (vec2 x y))) + + +;;; +;;; Renjyaku +;;; + +(define-class ()) + +(define-method (on-boot (renjyaku )) + (attach-to renjyaku + (make + #:atlas enemy-atlas + #:index (if (eq? 'white (polarity renjyaku)) 4 5) + #:origin (vec2 24.0 24.0)))) + +(define (make-renjyaku polarity x y) + (make + #:name (gensym "renjyaku-") + #:health 20 + #:points 100 + #:parting-shots 7 + #:polarity polarity + #:hitboxes + (list (make-hitbox 'renjyaku (make-rect -16.0 -12.0 32.0 25.0))) + #:position (vec2 x y))) -- cgit v1.2.3