aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/level-0.tmx10
-rw-r--r--src/macroknight/game.hy16
-rw-r--r--src/macroknight/tiles.hy4
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)