From d5714f14d4f23909d2119930b6e2b2d1cffe611f Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Mon, 21 Jun 2021 22:59:34 -0400 Subject: [PATCH] 8-bitsy builds, allow :game.files to override filename --- 8Bitsy.dsk | Bin 143360 -> 143360 bytes {game => bitsy}/game.json | 0 game/files.fnl | 19 ++++++++++++------- game/init.fnl | 5 +++++ 4 files changed, 17 insertions(+), 7 deletions(-) rename {game => bitsy}/game.json (100%) create mode 100644 game/init.fnl diff --git a/8Bitsy.dsk b/8Bitsy.dsk index 75ecea20f176e25735e72a9ce4e80bd42ebb05b4..52c2efe7a39016c65871c0034cc1085ca5f75b9d 100644 GIT binary patch delta 84 zcmV-a0IUCi;0S==2(WKmLH^7;RAgF5GB*AOHG2<%aWsks>I1TY?=a8lr%)R!0@*f3 q3b|jYrfIB_3ak>b^B#{im&i&UQKzgJdcPV+cmjj4UAM4Z0Z`H(Z6wS9 delta 84 zcmV-a0IUCi;0S==2(WKmL3C&@7yY8kG2C{P*7jSV_r5QZfS?X6=G9|lTQh!q<&|6r qfMTAmo7^gfHV7ZEpUFOD-7Dg5qX*)Xs%+gCQxAi%UAM4Z0Z`KZyeW48 diff --git a/game/game.json b/bitsy/game.json similarity index 100% rename from game/game.json rename to bitsy/game.json diff --git a/game/files.fnl b/game/files.fnl index f1fdf6e..c7900b1 100644 --- a/game/files.fnl +++ b/game/files.fnl @@ -4,8 +4,7 @@ (local files (util.hot-table ...)) -(local filename "game/game.json") - +(local default-filename "bitsy/game.json") (local encoded-tile-fields [:gfx :mask]) (fn convert [tile field method] @@ -42,21 +41,24 @@ :table (lume.clone v) _ v)) -(fn files.load [] +(fn filename [] (or files.filename default-filename)) +(fn files.load [?filename] + (when ?filename (set files.filename ?filename)) (set files.game - (if (util.file-exists filename) - (let [game (util.readjson filename)] + (if (util.file-exists (filename)) + (let [game (util.readjson (filename))] (each [k v (pairs game)] (tset game k (lume.map v #(deserialize k (clone $1))))) game) {:tiles [] :portraits [] :font [] :levels []})) files.game) -(fn files.save [] +(fn files.save [?filename] + (when ?filename (set files.filename ?filename)) (let [game {}] (each [k v (pairs files.game)] (tset game k (lume.map v #(serialize k (clone $1))))) - (util.writejson filename game))) + (util.writejson (filename) game))) (fn new-cache [game key] (let [spritegen (match key @@ -77,6 +79,9 @@ (each [key cache (pairs files.tilecaches)] (cache:load (. files.game key))))) +(fn files.module [] + (or files.game.module (: (filename) :match "^[^/]+"))) + (when (= files.game nil) (files.load)) diff --git a/game/init.fnl b/game/init.fnl new file mode 100644 index 0000000..424161a --- /dev/null +++ b/game/init.fnl @@ -0,0 +1,5 @@ +(local files (require :game.files)) +(local util (require :lib.util)) + +(util.reload (files.module)) +