diff --git a/8Bitsy.dsk b/8Bitsy.dsk index 75ecea2..52c2efe 100644 Binary files a/8Bitsy.dsk and b/8Bitsy.dsk differ 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)) +