diff options
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)] | 
