diff options
Diffstat (limited to 'src/macroknight/entities.hy')
-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")) |