diff options
| author | Gene Pasquet <dev@etenil.net> | 2025-06-29 00:33:14 +0100 |
|---|---|---|
| committer | Gene Pasquet <dev@etenil.net> | 2025-10-30 00:19:15 +0000 |
| commit | a492f4ac690ec9f0c75f6829529eea06ce067b23 (patch) | |
| tree | b1dd0d668bb5c8b3abc083e84773e46601a84e41 | |
| parent | 114a81a7761e098ea34e2a4c27a0ec6e384c720d (diff) | |
fix tilesets and build
| -rw-r--r-- | .gitinore | 3 | ||||
| -rw-r--r-- | Makefile | 26 | ||||
| -rw-r--r-- | src/game.scm | 5 | ||||
| -rw-r--r-- | src/tilemap.scm | 40 |
4 files changed, 44 insertions, 30 deletions
@@ -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 @@ -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"))) ) |
