diff options
author | Gene Pasquet <dev@etenil.net> | 2025-05-16 22:31:16 +0100 |
---|---|---|
committer | Gene Pasquet <dev@etenil.net> | 2025-05-16 22:31:16 +0100 |
commit | be71ead1e21d55049a18747f2d0d2159b11868f3 (patch) | |
tree | e3c548cb9feedd13d4f6f095d50d2b5c2720c2f4 /src | |
parent | 984d55db9fd77f6b53f1f0495e616d5cfb6bc828 (diff) |
Support displaying enemies
Diffstat (limited to 'src')
-rw-r--r-- | src/macroknight/entities.hy | 20 | ||||
-rw-r--r-- | src/macroknight/game.hy | 18 |
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)] |