diff --git a/.gitignore b/.gitignore index 3b1ad01..7d42c20 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,7 @@ .clj-kondo/ .lsp/ tokens.clj +*.love +/time-guesser +/dist +*.zip diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e901892 --- /dev/null +++ b/Makefile @@ -0,0 +1,5 @@ +build: + ./minify.bb main.fnl + zip time-guesser.love main.lua main.min.fnl bootstrap.fnl fennel.lua L5.lua + bash -c 'source ~/.nvm/nvm.sh && nvm use && yarn dlx love.js time-guesser.love dist -c' + zip -r time-guesser-web.zip dist diff --git a/bootstrap.fnl b/bootstrap.fnl index e775c02..fbd0661 100644 --- a/bootstrap.fnl +++ b/bootstrap.fnl @@ -1,5 +1,5 @@ (local m (require "main.min.fnl")) -(set _G.setup m.setup) -(set _G.draw m.draw) -(set _G.keyPressed m.key-pressed) +(set _G.setup m.s) +(set _G.draw m.d) +(set _G.keyPressed m.k) diff --git a/main.fnl b/main.fnl index 7e72df3..44b52ee 100644 --- a/main.fnl +++ b/main.fnl @@ -4,25 +4,22 @@ (size 640 480) (textSize 100)) -(local colors { - :yellow [255 228 112] ; #ffe470 - :dark [64 56 48] ; #403830 -}) - -(lambda remap [v in-min in-max out-min out-max] - (+ out-min (* (/ (- v in-min) (- in-max in-min)) (- out-max out-min)))) - -(local steps (* 24 60)) +(local steps 1440) (var step 0) -(lambda lpad [num] (if (< num 10) (.. "0" num) num)) -(lambda time [num] - (let [hour (floor (remap num 0 steps 0 24)) - min (- num (* hour 60))] - (.. (lpad hour) ":" (lpad min)))) +; (lambda lpad [num] (if (< num 10) (.. "0" num) num)) +; (lambda time [num] +; (let [hour (floor (map num 0 steps 0 24)) +; min (- num (* hour 60))] +; (.. (lpad hour) ":" (lpad min)))) + +(fn time [num] + (let [hour (floor (map num 0 steps 0 24))] + (: "%02d:%02d" :format hour (- num (* hour 60))))) (var pause false) (var won false) + (fn key-pressed [] (when (= key "space") (set pause (not pause)))) @@ -31,21 +28,14 @@ (fn draw [] (when (and (not won) (not pause)) (set step (+ step 1))) (when (>= step steps) (set step 0)) - (let [ - half (/ steps 2) - color-step (if (> step half) (- half (- step half)) step) - color-fn #(+ (. colors.dark $1) (* (/ (- (. colors.yellow $1) (. colors.dark $1)) half) color-step)) - r (color-fn 1) - g (color-fn 2) - b (color-fn 3)] - (background r g b)) - (text (time step) 175 150) - (text (time goal-time) 175 250) - (when (and pause (= goal-time step)) (set won true)) - (when won (text "YOU WIN" 100 400))) + (background 0 0 0) + (text (time step) 175 150) + (text (time goal-time) 175 250) + (when (and pause (= goal-time step)) (set won true)) + (when won (text "YOU WIN" 100 400))) { - :setup setup - :draw draw - :key-pressed key-pressed + :s setup + :d draw + :k key-pressed } diff --git a/main.lua b/main.lua index dc30c68..594a408 100644 --- a/main.lua +++ b/main.lua @@ -1,20 +1,14 @@ --- Mostly from https://sr.ht/~benthor/absolutely-minimal-love2d-fennel/ --- But added the allowedGlobals=false option - fennel = require("fennel") debug.traceback = fennel.traceback -table.insert(package.loaders, function(filename) - if love.filesystem.getInfo(filename) then - return function(...) - return fennel.eval( - love.filesystem.read(filename), - { env = _G, filename = filename, allowedGlobals = false }, - ... - ), - filename - end - end -end) - +table.insert(package.loaders, + function(filename) + if love.filesystem.getInfo(filename) then + return function(...) + return fennel.eval(love.filesystem.read(filename), + { env = _G, filename = filename, allowedGlobals = false }, + ...), filename + end + end + end) -- jump into Fennel require("bootstrap.fnl") diff --git a/minify.bb b/minify.bb index c382e23..b24c1fe 100755 --- a/minify.bb +++ b/minify.bb @@ -12,7 +12,6 @@ (defn tokenize [source] (let [chars (vec source) total-chars (count chars)] (loop [cursor 0 tokens []] - ; (when (< cursor 100) (pprint {:tokens tokens})) (if (>= cursor total-chars) tokens (let [c (chars cursor) nxt (get chars (inc cursor))] @@ -58,7 +57,7 @@ (def built-ins #{"fn" "local" "λ" "lambda" "require" "let" "+" "-" "/" "*" "<" ">" "<=" ">=" "not=" ".." "var" "if" "when" "and" "or" "not" "do" "set" "each" "for" "while" "true" "$1" "math.floor" "floor" "false" "nil" "size" "textSize" "background" "text" "random" "key" - ":setup" ":draw" ":key-pressed" ":L5"}) + ":s" ":d" ":k" ":format" ":L5" "map" "color" "lerpColor"}) (defn collect-bindings [tokens] (reduce (fn [acc token] @@ -98,7 +97,6 @@ (defn needs-space? "does this token need space before it?" [prev current nxt] - (when (= (current :type) :string) (pprint {:current current})) (or (= (current :type) :open-annon-fn) (and @@ -178,7 +176,6 @@ re-map (build-rename-map (collect-bindings tokens)) output (emit tokens re-map) output-file-name (gen-output-file-name file-name)] - (pprint {:output output :token-sample (take 15 tokens) :bindings (build-rename-map (collect-bindings tokens))}) (write-file "tokens.clj" (with-out-str (pprint (transform-tokens tokens re-map)))) (write-file output-file-name output) (println (str "Wrote file " output-file-name)))) diff --git a/package.json b/package.json new file mode 100644 index 0000000..4a2cee2 --- /dev/null +++ b/package.json @@ -0,0 +1,3 @@ +{ + "packageManager": "yarn@4.15.0" +}