aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2025-05-16 22:31:16 +0100
committerGene Pasquet <dev@etenil.net>2025-05-16 22:31:16 +0100
commitbe71ead1e21d55049a18747f2d0d2159b11868f3 (patch)
treee3c548cb9feedd13d4f6f095d50d2b5c2720c2f4 /src
parent984d55db9fd77f6b53f1f0495e616d5cfb6bc828 (diff)
Support displaying enemies
Diffstat (limited to 'src')
-rw-r--r--src/macroknight/entities.hy20
-rw-r--r--src/macroknight/game.hy18
2 files changed, 33 insertions, 5 deletions
diff --git a/src/macroknight/entities.hy b/src/macroknight/entities.hy
index 812193e..c490b25 100644
--- a/src/macroknight/entities.hy
+++ b/src/macroknight/entities.hy
@@ -87,3 +87,23 @@
(defn [property] surf [self]
self._disp_surf))
+
+(defclass Enemy [Entity]
+ (setv _type "enemy"))
+
+(defclass Enemy2Swords [Enemy]
+ (defn __init__ [self id tile tile-size x y]
+ (.__init__ (super) id tile tile-size x y)
+ (.flush self))
+
+ (defn move [self move]
+ (.append self.moves move)
+ (.move_ip self._rect (get move 0) (get move 1)))
+
+ (defn flush [self]
+ (setv self.moves []))
+
+ (defn ground [self])
+
+ (defn [property] total-move [self]
+ (merge-moves self.moves)))
diff --git a/src/macroknight/game.hy b/src/macroknight/game.hy
index 005f356..4e1ce7e 100644
--- a/src/macroknight/game.hy
+++ b/src/macroknight/game.hy
@@ -2,7 +2,7 @@
(require hyrule *)
(import pygame
pytmx.util_pygame [load_pygame]
- entities [Player LevelTile Goal]
+ entities [Player LevelTile Goal Enemy2Swords]
tiles [TileSet draw-tile]
utils [neg]
text [render-text]
@@ -19,8 +19,10 @@
(setv screen (pygame.display.set_mode #((* TILE_SCALING 640) (* TILE_SCALING 480))))
(setv clock (pygame.time.Clock))
(setv tileset (TileSet "assets/monochrome-transparent.png" TILE_SCALING TILE_SIZE TILE_SIZE 1))
-(setv levels [(load_pygame "assets/level-0.tmx")
- (load_pygame "assets/level-1.tmx")])
+(setv levels [(load_pygame "assets/level-3.tmx")
+ (load_pygame "assets/level-0.tmx")
+ (load_pygame "assets/level-1.tmx")
+ (load_pygame "assets/level-2.tmx")])
(setv level-id 0)
(defn abs-to-tile-index [abs-id]
(int (floor (/ abs-id TILE_SIZE))))
@@ -43,8 +45,14 @@
(Goal (len entities)
(get tileset.tiles 0)
TILE_SIZE
- (abs-to-tile-index item.x)
- (abs-to-tile-index item.y))))))
+ tile-x
+ tile-y))
+ "Enemy1" (.append entities
+ (Enemy2Swords (len entities)
+ (get tileset.tiles 128)
+ TILE_SIZE
+ tile-x
+ tile-y)))))
(setv player-pos
(let [player-objects (lfor ent (get level.layers 1) :if (= ent.type "Player") ent)]