From e30b2a81b48f5e86474aa2c38d7034d63c0b7c4e Mon Sep 17 00:00:00 2001 From: Gene Pasquet Date: Sun, 18 May 2025 09:18:07 +0100 Subject: Enemies sort of working --- src/macroknight/entities.hy | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) (limited to 'src/macroknight/entities.hy') diff --git a/src/macroknight/entities.hy b/src/macroknight/entities.hy index 760aeca..2ba77ea 100644 --- a/src/macroknight/entities.hy +++ b/src/macroknight/entities.hy @@ -72,8 +72,9 @@ (defn move [self move] (.append self.moves move) (.move_ip self._rect (get move 0) (get move 1)) - (setv self.facing - (.x-from-move Direction move))) + (when (!= (get move 0) 0) + (setv self.facing + (.x-from-move Direction move)))) (defn [property] total-move [self] (merge-moves self.moves)) @@ -104,7 +105,9 @@ (setv self._disp_surf (case self.facing Direction.LEFT (pygame.transform.flip self._surf True False) - Direction.RIGHT (.copy self._surf)))) + Direction.RIGHT (.copy self._surf))) + + (.flush self)) (defn flush [self] (setv self.moves [])) @@ -115,17 +118,23 @@ (defclass Enemy [Entity] (setv _type "enemy") - (defn __init__ [self id tile tile-size x y] - (.__init__ (super) id tile tile-size x y) + (defn __init__ [self id tiles tile-size x y] + (.__init__ (super) id (get tiles 0) tile-size x y) + (setv self.tiles tiles) (setv self.facing Direction.RIGHT) (setv self.attacking False) + (setv self.animate-end 0) (.flush self)) (defn move [self move] (.append self.moves move) (.move_ip self._rect (get move 0) (get move 1)) - (setv self.facing - (.x-from-move Direction move))) + (when (!= (get move 0) 0) + (setv self.facing + (.x-from-move Direction move)))) + + (defn attack [self] + (setv self.attacking True)) (defn flush [self] (setv self.moves [])) @@ -133,10 +142,23 @@ (defn ground [self]) (defn animate [self ticks] + ;; Attack animation + (when (and self.attacking (= self.animate-end 0)) + (setv self.animate-end (+ ticks 200)) + (.blit self._surf (get self.tiles 1) #(0 0))) + (when (and self.attacking (> ticks self.animate-end)) + (setv self.animate-end 0) + (setv self.attacking False) + (.blit self._surf (get self.tiles 0) #(0 0))) + (setv self._disp_surf (case self.facing Direction.LEFT (pygame.transform.flip self._surf True False) - Direction.RIGHT (.copy self._surf)))) + Direction.RIGHT (.copy self._surf))) + (.flush self)) (defn [property] total-move [self] - (merge-moves self.moves))) + (merge-moves self.moves)) + + (defn [property] surf [self] + self._disp_surf)) -- cgit v1.2.3