diff options
| author | Gene Pasquet <dev@etenil.net> | 2025-05-24 20:34:03 +0100 | 
|---|---|---|
| committer | Gene Pasquet <dev@etenil.net> | 2025-05-24 20:34:03 +0100 | 
| commit | 4fd3c145865cde9f6afaddf6f1eed376ba0384bb (patch) | |
| tree | 1120a656f67c504b2243e53cef2de57b7eccb208 /src/macroknight | |
| parent | 7cd219920f1bee8fb7ba24e83dd6a0c6a73e1512 (diff) | |
Consolidate entities
Diffstat (limited to 'src/macroknight')
| -rw-r--r-- | src/macroknight/entities.hy | 95 | 
1 files changed, 30 insertions, 65 deletions
| diff --git a/src/macroknight/entities.hy b/src/macroknight/entities.hy index b171069..af684c2 100644 --- a/src/macroknight/entities.hy +++ b/src/macroknight/entities.hy @@ -69,22 +69,18 @@    (setv _type "goal")    (setv _fixed True)) -(defclass Player [Entity] -  (setv _type "player") -  (setv SPEED 3) -  (setv JUMP_IMPULSE 10) -  (setv MAX_JUMPING 100) + +(defclass Character [Entity] +  (setv _type "enemy")    (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.jumping False) -    (setv self.jump-move 0) -    (setv self.moves []) -    (setv self._disp_surf (.copy self._surf))      (setv self.facing Direction.RIGHT)      (setv self.attacking False) -    (setv self.animate-end 0)) +    (setv self.animate-end 0) +    (.flush self) +    (setv self._disp_surf (.copy self._surf)))    (defn move [self move]      (.append self.moves move) @@ -93,17 +89,11 @@        (setv self.facing              (.x-from-move Direction move)))) -  (defn [property] total-move [self] -    (merge-moves self.moves)) -    (defn attack [self]      (setv self.attacking True)) -  (defn jump [self] -    (setv self.jumping True) -    (when (< self.jump-move self.MAX_JUMPING) -      (setv self.jump-move (+ self.jump-move self.JUMP_IMPULSE)) -      (.move self #(0 (neg self.JUMP_IMPULSE))))) +  (defn flush [self] +    (setv self.moves []))    (defn ground [self]      (setv self.jump-move 0)) @@ -113,70 +103,45 @@      (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) +      (raise PlayerKilled)        (.blit self._surf (get self.tiles 0) #(0 0))) -    ;; Facing direction      (setv self._disp_surf            (case self.facing                  Direction.LEFT (pygame.transform.flip self._surf True False)                  Direction.RIGHT (.copy self._surf))) -      (.flush self)) - -  (defn flush [self] -    (setv self.moves [])) +   +  (defn [property] total-move [self] +    (merge-moves self.moves))    (defn [property] surf [self]      self._disp_surf)) -(defclass Enemy [Entity] -  (setv _type "enemy") - -  (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)) -    (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 [])) -  (defn ground [self]) +(defclass Player [Character] +  (setv _type "player") +  (setv SPEED 3) +  (setv JUMP_IMPULSE 10) +  (setv MAX_JUMPING 100) -  (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) -      (raise PlayerKilled) -      (.blit self._surf (get self.tiles 0) #(0 0))) +  (defn __init__ [self id tiles tile-size x y] +    (.__init__ (super) id tiles tile-size x y) +    (setv self.jumping False) +    (setv self.jump-move 0)) -    (setv self._disp_surf -          (case self.facing -                Direction.LEFT (pygame.transform.flip self._surf True False) -                Direction.RIGHT (.copy self._surf))) -    (.flush self)) -      (defn [property] total-move [self]      (merge-moves self.moves)) -  (defn [property] surf [self] -    self._disp_surf)) +  (defn jump [self] +    (setv self.jumping True) +    (when (< self.jump-move self.MAX_JUMPING) +      (setv self.jump-move (+ self.jump-move self.JUMP_IMPULSE)) +      (.move self #(0 (neg self.JUMP_IMPULSE)))))) + +(defclass Enemy [Character] +  (setv _type "Enemy")) | 
