diff options
| author | Gene Pasquet <gene@pacerevenue.com> | 2025-05-15 14:20:19 +0200 | 
|---|---|---|
| committer | Gene Pasquet <gene@pacerevenue.com> | 2025-05-15 14:20:19 +0200 | 
| commit | d5a454eff8e722c372b42efd476b52a51bba327d (patch) | |
| tree | e3ebeab02d9554ff6430169304c34916734fc714 | |
| parent | cee75e57560b77e8ec0a394c1d3c98b9839be80e (diff) | |
Define player start position in level tmx
| -rw-r--r-- | assets/level-0.tmx | 10 | ||||
| -rw-r--r-- | src/macroknight/game.hy | 16 | ||||
| -rw-r--r-- | src/macroknight/tiles.hy | 4 | 
3 files changed, 23 insertions, 7 deletions
| diff --git a/assets/level-0.tmx b/assets/level-0.tmx index 6112f03..6df96ae 100644 --- a/assets/level-0.tmx +++ b/assets/level-0.tmx @@ -1,5 +1,5 @@  <?xml version="1.0" encoding="UTF-8"?> -<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="40" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="5" nextobjectid="1"> +<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="40" height="30" tilewidth="16" tileheight="16" infinite="0" nextlayerid="8" nextobjectid="4">   <tileset firstgid="1" source="tileset_colored.tsx"/>   <tileset firstgid="1025" source="monochrome_transparent.tsx"/>   <layer id="3" name="ground" width="40" height="30"> @@ -36,4 +36,12 @@  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1093,0,0,0,0,0,0,0,0,0,0  </data>   </layer> + <objectgroup id="7" name="entities"> +  <object id="2" name="player" type="Player" gid="1053" x="176" y="336" width="16" height="16"/> +  <object id="3" name="hint" type="text" x="428.5" y="82" width="197" height="78"> +   <properties> +    <property name="text" value="hit space to start a macro"/> +   </properties> +  </object> + </objectgroup>  </map> diff --git a/src/macroknight/game.hy b/src/macroknight/game.hy index 53e6fac..160b46a 100644 --- a/src/macroknight/game.hy +++ b/src/macroknight/game.hy @@ -6,7 +6,8 @@          tiles [TileSet draw-tile]          utils [neg]          text [render-text] -        systems [apply-gravity apply-collisions]) +        systems [apply-gravity apply-collisions] +        math [floor])  (pygame.init) @@ -17,10 +18,17 @@  (setv clock (pygame.time.Clock))  (setv running True)  (setv tileset (TileSet "assets/monochrome-transparent.png" TILE_SCALING TILE_SIZE TILE_SIZE 1)) -(setv player (Player 1 (get tileset.tiles 28) TILE_SIZE 5 5))  (setv sprites-group []) -(.append sprites-group player)  (setv level (load_pygame "assets/level-0.tmx")) +(setv player-pos +      (let [player-objects (lfor ent (get level.layers 1) :if (= ent.type "Player") ent)] +        (if (any player-objects) +            (let [player-object (get player-objects 0)] +              #((int (floor (/ player-object.x TILE_SIZE))) +                 (int (floor (/ player-object.y TILE_SIZE))))) +            #(5 5)))) +(setv player (Player 1 (get tileset.tiles 28) TILE_SIZE #* player-pos)) +(.append sprites-group player)  (setv macro-input-mode False)  (setv macro-commands [None None None]) @@ -75,7 +83,7 @@                      pygame.K_a (draw-tile screen tileset 1060 x-pos 5)                      None (draw-tile screen tileset 725 x-pos 5))))) -      ;; Else +      ;; Not in macro mode        (do (for [inp ongoing_inputs]              (case inp                    pygame.K_a (.move player #((neg player.SPEED) 0)) diff --git a/src/macroknight/tiles.hy b/src/macroknight/tiles.hy index 40692e7..f9e112d 100644 --- a/src/macroknight/tiles.hy +++ b/src/macroknight/tiles.hy @@ -1,13 +1,13 @@  (import pygame)  (defclass TileSet [] -  (defn __init__ [self image scaling tile-w tile-h [padding 0]] +  (defn __init__ [self image-file scaling tile-w tile-h [padding 0]]      (setv self.tile-w tile-w)      (setv self.tile-h tile-h)      (setv self.scaling scaling)      (setv self.sheet -          (let [surf (pygame.image.load "assets/monochrome-transparent.png") +          (let [surf (pygame.image.load image-file)                  map-width (* (.get_width surf) self.scaling)                  map-height (* (.get_height surf) self.scaling)]              (if (!= self.scaling 1) | 
