diff options
| author | Gene Pasquet <gene@pacerevenue.com> | 2025-05-14 00:08:32 +0200 | 
|---|---|---|
| committer | Gene Pasquet <gene@pacerevenue.com> | 2025-05-14 00:08:32 +0200 | 
| commit | 36791b258ae7618cc1bde3ac279f1d2c5a1abb11 (patch) | |
| tree | 9cb75538c7236e8fca98bb36d6f2981d21d15b4f /src | |
| parent | 6640f0dd8ea05a473adfda3e3ac90ff852af1c7a (diff) | |
Improve design, macro handling
Diffstat (limited to 'src')
| -rw-r--r-- | src/macroknight/game.hy | 42 | 
1 files changed, 23 insertions, 19 deletions
| diff --git a/src/macroknight/game.hy b/src/macroknight/game.hy index 5b230ac..32ba2a8 100644 --- a/src/macroknight/game.hy +++ b/src/macroknight/game.hy @@ -11,15 +11,18 @@  (setv TILE_SIZE (* TILE_SCALING 16))  (setv GRAVITY 5) +(defn neg [value] +  (* -1 value)) +  (defn invert [move] -  #((* -1 (get move 0)) -     (* -1 (get move 1)))) +  #((neg (get move 0)) +     (neg (get move 1))))  (defclass TileSet []    (defn __init__ [self image tile-w tile-h [padding 0]]      (setv self.sheet -          (let [surf (pygame.image.load "assets/tileset_legacy.png")] +          (let [surf (pygame.image.load "assets/monochrome-transparent.png")]              (if (!= TILE_SCALING 1)                  (pygame.transform.scale                    surf @@ -34,6 +37,7 @@                    (.blit tile self.sheet #(0 0) #(x y tile-w tile-h))                    tile))))) +  ;; Define systems here  (defn apply-gravity [entity entities]    (when (not entity.fixed) @@ -94,7 +98,7 @@      (setv self.jumping True)      (when (< self.jump_move self.MAX_JUMPING)        (setv self.jump_move (+ self.jump_move self.JUMP_IMPULSE)) -      (.move self #(0 (* -1 self.JUMP_IMPULSE))))) +      (.move self #(0 (neg self.JUMP_IMPULSE)))))    (defn ground [self]      (setv self.jump_move 0)) @@ -106,7 +110,7 @@  (setv clock (pygame.time.Clock))  (setv running True) -(setv tiles (TileSet "assets/tileset_legacy.png" TILE_SIZE TILE_SIZE 1)) +(setv tiles (TileSet "assets/monochrome-transparent.png" TILE_SIZE TILE_SIZE 1))  (setv player (Player (get tiles.tiles 28) 0 0))  (setv sprites-group []) @@ -115,7 +119,7 @@  (setv macro-input-mode False)  (setv macro-commands [None None None]) -(for [tiledef (enumerate (.tiles (get level.layers 1)))] +(for [tiledef (enumerate (.tiles (get level.layers 0)))]    (.append sprites-group (LevelTile (get tiledef 0) #* (get tiledef 1))))  (setv ongoing_inputs []) @@ -142,7 +146,7 @@            pygame.KEYUP (when (in event.key ongoing_inputs)                           (.remove ongoing_inputs event.key)))) -  (.fill screen "#472d3c") +  (.fill screen "#000000")    (if macro-input-mode        ;; If the commands list is full @@ -150,33 +154,33 @@            ;; Process commands            (do              (for [command macro-commands] -              (print command)                (case command -                    pygame.K_a (.move player #((* -1 player.SPEED) 0)) +                    pygame.K_a (.move player #((neg TILE_SIZE) 0))                      pygame.K_s (.move player #(0 1)) -                    pygame.K_w (.move player #(0 player.MAX_JUMPING)) -                    pygame.K_d (.move player #(player.SPEED 0)))) +                    pygame.K_w (.move player #(0 (neg TILE_SIZE))) +                    pygame.K_d (.move player #(TILE_SIZE 0))))              (setv macro-commands [None None None])              (setv macro-input-mode False)) -          (do (draw-tile screen 757 3 1) +          (do (draw-tile screen 774 3 1)                (for [#(num command) (enumerate macro-commands)]                  (let [x-pos (+ 4 num)]                    (case command -                        pygame.K_w (draw-tile screen 700 x-pos 1) -                        pygame.K_d (draw-tile screen 701 x-pos 1) -                        pygame.K_s (draw-tile screen 702 x-pos 1) -                        pygame.K_a (draw-tile screen 703 x-pos 1)))))) +                        pygame.K_w (draw-tile screen 1057 x-pos 1) +                        pygame.K_d (draw-tile screen 1058 x-pos 1) +                        pygame.K_s (draw-tile screen 1059 x-pos 1) +                        pygame.K_a (draw-tile screen 1060 x-pos 1))))))        (do (for [inp ongoing_inputs]              (case inp -                  pygame.K_a (.move player #((* -1 player.SPEED) 0)) +                  pygame.K_a (.move player #((neg player.SPEED) 0))                    pygame.K_s (.move player #(0 1))                    pygame.K_w (.jump player)                    pygame.K_d (.move player #(player.SPEED 0)))) -          (for [sprite sprites-group] -            (apply-collisions sprite sprites-group)) +          (when (any ongoing_inputs) +            (for [sprite sprites-group] +              (apply-collisions sprite sprites-group)))            ;; Apply systems            (for [sprite sprites-group] | 
