aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2025-06-29 00:33:14 +0100
committerGene Pasquet <dev@etenil.net>2025-10-30 00:19:15 +0000
commita492f4ac690ec9f0c75f6829529eea06ce067b23 (patch)
treeb1dd0d668bb5c8b3abc083e84773e46601a84e41
parent114a81a7761e098ea34e2a4c27a0ec6e384c720d (diff)
fix tilesets and build
-rw-r--r--.gitinore3
-rw-r--r--Makefile26
-rw-r--r--src/game.scm5
-rw-r--r--src/tilemap.scm40
4 files changed, 44 insertions, 30 deletions
diff --git a/.gitinore b/.gitinore
index 56d9615..f1460c2 100644
--- a/.gitinore
+++ b/.gitinore
@@ -3,4 +3,5 @@
*.pyc
/.venv
__pycache__/
-src/macroknight/__pycache__/ \ No newline at end of file
+src/macroknight/__pycache__/
+/bin \ No newline at end of file
diff --git a/Makefile b/Makefile
index c5202d6..ef91e97 100644
--- a/Makefile
+++ b/Makefile
@@ -1,19 +1,13 @@
-.venv:
- python3 -m venv .venv
- .venv/bin/pip install -r requirements.txt
+bin/game: bin tilemap.import.scm
+ csc -o bin/game src/game.scm
-run: .venv
- .venv/bin/hy src/macroknight/game.hy
+bin:
+ mkdir bin
-package:
- zip -r macroknight.zip \
- assets \
- LICENSE \
- macroknight.tiled-project \
- macroknight.tiled-session \
- Makefile \
- README.md \
- requirements.txt \
- src \
- TODO.org \
+tilemap.import.scm: bin src/tilemap.scm
+ csc -c -o bin/tilemap.o -j tilemap src/tilemap.scm
+.PHONY:
+clean:
+ rm -rf bin
+ rm -f *.import.scm game
diff --git a/src/game.scm b/src/game.scm
index d1e38f0..1e9da8b 100644
--- a/src/game.scm
+++ b/src/game.scm
@@ -37,7 +37,7 @@
(if (and +vsync?+ (not +software-mode?+)) ; vsync doesn't work with software rendering
(sdl2:set-hint! 'render-vsync "1"))
-(define *window* (sdl2:create-window! "Mackerel Knight"
+(define *window* (sdl2:create-window! "MacroKnight"
'centered 'centered
+screen-width+ +screen-height+
(if *fullscreen?* '(fullscreen) '())))
@@ -52,7 +52,8 @@
#f))
(define *level* (load-tilemap "assets/level-0.tmx"))
-(define (draw-tile target tileset tile-id))
+(define (draw-tile target tileset tile-id)
+ 123)
(set! (sdl2:render-draw-color *renderer*) +background-color+)
(sdl2:render-clear! *renderer*)
diff --git a/src/tilemap.scm b/src/tilemap.scm
index 52d1057..61a06ef 100644
--- a/src/tilemap.scm
+++ b/src/tilemap.scm
@@ -4,12 +4,14 @@
(chicken io)
(chicken base)
(chicken string)
+ (chicken format)
(chicken process-context)
(chicken pathname)
(chicken pretty-print)
(srfi 1)
expat
- defstruct)
+ defstruct
+ (prefix sdl2-image "img:"))
(defstruct tileset
tilewidth
@@ -83,9 +85,18 @@
(define (load-tileset file-name)
(call-with-input-file file-name
(lambda (port)
- (parse-tileset (read-string #f port))
- ;; Load up the image from SDL.
- )))
+ (let* ((tileset (parse-tileset (read-string #f port)))
+ (image-source (tileset-image-source tileset))
+ (base-path (pathname-directory file-name))
+ (img-to-load (if (absolute-pathname? image-source)
+ image-source
+ (pathname-replace-directory
+ image-source
+ (if (pathname-directory image-source)
+ (format "~a/~a" base-path (pathname-directory image-source))
+ base-path)))))
+ (tileset-image-set! tileset (img:load img-to-load))
+ tileset))))
(define (parse-tilemap string-tilemap)
(let ((parser (expat:make-parser))
@@ -128,10 +139,19 @@
(define (load-tilemap file-name)
(call-with-input-file file-name
(lambda (port)
- (let ((tilemap (parse-tilemap (read-string #f port))))
- (tilemap-tileset-set! tilemap (load-tileset (tilemap-tileset-source tilemap))))
-
- )))
+ (let* ((tilemap (parse-tilemap (read-string #f port)))
+ (base-path (pathname-directory file-name))
+ (tileset-source (tilemap-tileset-source tilemap)))
+ (tilemap-tileset-set! tilemap (load-tileset
+ (if (absolute-pathname? tileset-source)
+ tileset-source
+ (pathname-replace-directory
+ tileset-source
+ (if (pathname-directory tileset-source)
+ (format "~a/~a" base-path (pathname-directory tileset-source))
+ base-path))
+ )))
+ tilemap))))
(when #f
@@ -164,9 +184,7 @@
"))
(tilemap-tileset (parse-tilemap txt)))
- (load-tilemap "assets/level-0.tmx")
-
- (current-directory)
+ (tileset-image (tilemap-tileset (load-tilemap "assets/level-0.tmx")))
)