aboutsummaryrefslogtreecommitdiff
path: root/src/macroknight/entities.hy
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2025-05-18 09:18:07 +0100
committerGene Pasquet <dev@etenil.net>2025-05-18 09:18:07 +0100
commite30b2a81b48f5e86474aa2c38d7034d63c0b7c4e (patch)
tree585e05b0238b36761a6616fa2c6c8627e96876fc /src/macroknight/entities.hy
parent1cf28e193729ee64a17e6464ce7310c67f5eae34 (diff)
Enemies sort of working
Diffstat (limited to 'src/macroknight/entities.hy')
-rw-r--r--src/macroknight/entities.hy40
1 files changed, 31 insertions, 9 deletions
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))