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