From ff214a11ad6d80cb3a1b28f4ab503a8c30ec7919 Mon Sep 17 00:00:00 2001 From: Bill Niblock Date: Sun, 3 Nov 2024 18:08:43 -0500 Subject: [PATCH] Basically final dump before jam ends --- assets/images/fennel-logo.svg | 24 ++++++++ assets/images/logos/1.png | Bin 0 -> 7231 bytes assets/images/logos/2.png | Bin 0 -> 12463 bytes assets/images/love-logo-0.10.png | Bin 0 -> 21848 bytes mapper.fnl | 20 +++--- mode-intro.fnl | 101 ++++++++++++++++++++++--------- mode-play.fnl | 3 +- notes.md | 4 ++ overlay.fnl | 4 +- state.fnl | 6 +- 10 files changed, 121 insertions(+), 41 deletions(-) create mode 100644 assets/images/fennel-logo.svg create mode 100644 assets/images/logos/1.png create mode 100644 assets/images/logos/2.png create mode 100644 assets/images/love-logo-0.10.png diff --git a/assets/images/fennel-logo.svg b/assets/images/fennel-logo.svg new file mode 100644 index 0000000..ea272d4 --- /dev/null +++ b/assets/images/fennel-logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/logos/1.png b/assets/images/logos/1.png new file mode 100644 index 0000000000000000000000000000000000000000..73107d688d0a08397288183b764d3eda0980b679 GIT binary patch literal 7231 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 N002ovPDHLkV1mg!n$`dS literal 0 HcmV?d00001 diff --git a/assets/images/logos/2.png b/assets/images/logos/2.png new file mode 100644 index 0000000000000000000000000000000000000000..58074af60cf124fdbc7c5b989029f1847d539cbf GIT binary patch literal 12463 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 z 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

=ZXqs)~I-vUz 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 literal 0 HcmV?d00001 diff --git a/mapper.fnl b/mapper.fnl index 0517e33..83ed42d 100644 --- a/mapper.fnl +++ b/mapper.fnl @@ -1,4 +1,8 @@ (local state (require :state)) + +; ; ### Use seed to randomize stuff +(love.math.setRandomSeed (state.getSeed)) + ; Cell Stuff ; The "cell-num" is the number of cells across; it is then squared to make the ; grid. Each cell has a "cell-size" of walls ("wall-width") and hallways @@ -8,7 +12,7 @@ (var (hall-width wall-width) (values (. map-meta :h) (. map-meta :w))) (var cell-size (+ hall-width wall-width)) ; (fn wall-seg [] (+ 10 (math.random 1 3))) -(fn wall-seg [] (math.random 11 13)) +(fn wall-seg [] (love.math.random 11 13)) ; Helper functions for dealing with the cell list (fn cell-row [i] (+ 1 (math.floor (/ (- i 1) cell-num)))) (fn map-index [i] @@ -17,8 +21,9 @@ (- (* cell-col cell-size) (- cell-size 1)))) ; Meta-Cells is the data before the digits -(var spawn-cell (math.random 1 cell-num)) -(var leave-cell (math.random (+ (* cell-num (- cell-num 1)) 1) (* cell-num cell-num))) +(var spawn-cell (love.math.random 1 cell-num)) +(var leave-cell (love.math.random + (+ (* cell-num (- cell-num 1)) 1) (* cell-num cell-num))) (var spawn-spot {:x cell-size :y (+ (- (* spawn-cell cell-size) (- cell-size 1)) cell-size)}) @@ -94,7 +99,7 @@ (var chosen-next-cell {}) (when (> (length next-cells) 0) (table.insert cell-stack current-cell) - (set chosen-next-cell (. next-cells (math.random 1 (length next-cells)))) + (set chosen-next-cell (. next-cells (love.math.random 1 (length next-cells)))) ; Adjust walls accordingly (case chosen-next-cell {:d 1} (tset meta-cells (. chosen-next-cell :c) :s true) @@ -173,9 +178,10 @@ (fn print_map [map] (for [i 1 (length map)] - (var r "") + (var (r o) (values "" "")) (for [j 1 (length (. map i))] - (set r (.. r " " (. map i j)))) + (set o (if (= 0 (. map i j)) "00" (. map i j))) + (set r (.. r " " o))) (print r))) (fn generate [] @@ -183,7 +189,7 @@ (var data-maze (convert-cells meta-maze leave-cell)) (var data-map (generate_cell_map data-maze)) (var map (generate_map data-map spawn-cell leave-cell)) - ;(print_map map) + (print_map map) (values map spawn-spot)) ; (print (.. "SPAWN: " spawn-cell "(" (. spawn-spot :x) "," (. spawn-spot :y) ")")) diff --git a/mode-intro.fnl b/mode-intro.fnl index 45f45eb..a85b196 100644 --- a/mode-intro.fnl +++ b/mode-intro.fnl @@ -1,3 +1,4 @@ +(local state (require :state)) (var (screen-width screen-height) (love.window.getMode)) (var (mx my) (values (/ screen-width 2) (/ screen-height 2))) (love.mouse.setGrabbed false) @@ -5,12 +6,23 @@ (love.graphics.setNewFont 30) +(var ticks 0) +;; Start screen logos +(var screen-logos []) +(var screen-logo-files (love.filesystem.getDirectoryItems "assets/images/logos")) +(each [_ v (ipairs screen-logo-files)] + (local logo {}) + (tset logo :i (love.graphics.newImage (.. "assets/images/logos/" v))) + (var imgdata (love.image.newImageData (.. "assets/images/logos/" v))) + (tset logo :w (imgdata:getWidth)) + (tset logo :h (imgdata:getHeight)) + (table.insert screen-logos logo)) -(var footer-font (love.graphics.newFont 19)) +(var footer-font (love.graphics.newFont 11)) (local (major minor revision) (love.getVersion)) (fn helmet-hud [] - (love.graphics.setColor 0 1 0 0.25) + (love.graphics.setColor 0 1 1 1) (love.graphics.line 0 0 (+ (/ screen-width 6) 0) 35 (+ (/ screen-width 3) 0) 30 @@ -19,43 +31,74 @@ screen-width 0)) (var menu-font (love.graphics.newFont 20)) -(fn menu-button [x y t] - (love.graphics.polygon "line" x y +(fn menu-button [x y t la ra sa] + (love.graphics.polygon "line" (- x 100) y (+ x 100) y - (+ x 120) (+ y 20) + (+ x 150) (+ y 20) (+ x 100) (+ y 40) - x (+ y 40) - (- x 20) (+ y 20)) - (love.graphics.printf t x (+ y 11) (+ x 100)) - ) + (- x 100) (+ y 40) + (- x 150) (+ y 20)) + (love.graphics.printf t (- x 109) (+ y 3) (+ x 100))) + +(var show-logos true) +(var (screen-show logo-idx fade-time fade-mod) (values 0 1 0 1)) +(fn reset-logo-timers [] + (set screen-show 0) + (set fade-time 0) + (set fade-mod 1)) +(fn show-logo [x] + (var logo (. screen-logos x)) + (if + (< screen-show 5) + (do + (love.graphics.setColor 0 1 1 fade-time) + (love.graphics.draw (. logo :i) + (- (/ screen-width 2) (/ (. logo :w) 2)) + (- (/ screen-height 2) (/ (. logo :h) 2)))) + ; else + (do + (if (. screen-logos (+ x 1)) + (set logo-idx (+ x 1)) + ; else + (set show-logos false)) + (reset-logo-timers)))) { :draw (fn draw [] - (helmet-hud) - (menu-button (- (/ screen-width 2) 50) 100 (.. mx ", " my)) - ; (love.graphics.setNewFont 50) - ; (love.graphics.setColor 0.75 0.75 0.75) - ; (love.graphics.printf "L4-N-DER Training Simulator" 0 - ; (- (/ screen-height 2) 100) screen-width :center) - ; (love.graphics.setNewFont 20) - ; (love.graphics.setColor 0.55 0.55 0.05) - ; (love.graphics.printf "OFFICIAL LANDER EYES ONLY" 0 - ; (- (/ screen-height 2) 20) screen-width :center) - ; (love.graphics.setColor 0.75 0.75 0.75) - ; (love.graphics.printf "Press D To Deploy" 0 - ; (+ (/ screen-height 2) 20) screen-width :center) - ; (love.graphics.printf "Press Q To Quit" 0 - ; (+ (/ screen-height 2) 40) screen-width :center) - (love.graphics.printf - (: "Made with Love [%s.%s.%s] and Fennel" - :format major minor revision) footer-font 20 (- screen-height 30) screen-width :left) - (love.graphics.printf "A game by Bill Niblock" footer-font -20 (- screen-height 30) screen-width :right) + (if + show-logos + (show-logo logo-idx) + (do + (helmet-hud) + (menu-button (/ screen-width 2) 100 "S U R V I V O R") + (love.graphics.printf "Press P to Play" + 0 (+ (/ screen-height 2) 100) + screen-width :center) + (love.graphics.printf "Press Q to Quit" + 0 (+ (/ screen-height 2) 150) + screen-width :center) + (love.graphics.printf + (: "Made with Love [%s.%s.%s] and Fennel" + :format major minor revision) footer-font 20 (- screen-height 30) screen-width :left) + (love.graphics.printf "A game by Bill Niblock" footer-font -20 (- screen-height 30) screen-width :right))) ) + :update + (fn update [dt] + (set ticks (+ ticks dt)) + (when (> fade-time 2) + (set fade-mod -1)) + (set fade-time (+ fade-time (* fade-mod dt))) + (when (> ticks 1) + (set ticks (- ticks 1)) + (set screen-show (+ screen-show 1)))) + :keypressed (fn keypressed [key set-mode] - (when (= key "d") + (when (= key "p") + (var newseed (+ (love.timer.getTime) mx my)) + (state.setSeed newseed) (set-mode :mode-play)) (when (= key "q") (love.event.quit))) diff --git a/mode-play.fnl b/mode-play.fnl index 32f1b6e..35fcf1b 100644 --- a/mode-play.fnl +++ b/mode-play.fnl @@ -295,7 +295,6 @@ ) :keypressed (fn keypressed [k] - (when (= k "o") (state.modO -1)) - (when (= k "x") (love.event.quit)) + (when (= k "q") (love.event.quit)) ) } diff --git a/notes.md b/notes.md index 1651e9f..a584898 100644 --- a/notes.md +++ b/notes.md @@ -274,3 +274,7 @@ left-action, right-action, and select-action. There should also be a way to navigate with the keyboard. Using up and down arrows or keys will move the "selected" button, left/right arrows/keys will activate the left/right actions, and enter/use will activate the select action. + +Start simple, make the polygon a square, make the areas square. Add buttons for +survivors and supplies and monster and stuff, even though it's not implemented +yet. diff --git a/overlay.fnl b/overlay.fnl index ea2665a..d7f9185 100644 --- a/overlay.fnl +++ b/overlay.fnl @@ -56,7 +56,7 @@ ; This draws barriers around the screen ; Eventually to be improved into a helmet (fn helmet-hud [] - (love.graphics.setColor 0 1 0 0.25) + (love.graphics.setColor 0 1 1 0.25) (love.graphics.line 0 0 (+ (/ screen-width 6) 0) 35 (+ (/ screen-width 3) 0) 30 @@ -98,7 +98,7 @@ (> (+ c n) (length l)) 1 (+ c n))) (fn compass-bar [] - (love.graphics.setColor 0 1 0 0.25) + (love.graphics.setColor 0 1 1 0.25) (var (hc-output hc-padding) (values "" " ")) (var hc-idx (math.floor (+ 10 (* 10 (player.getDirX))))) (var hc-idx-mod 1) diff --git a/state.fnl b/state.fnl index d970d66..08e0ce5 100644 --- a/state.fnl +++ b/state.fnl @@ -1,6 +1,8 @@ ; Handles game-play stateful information (local pi math.pi) +(var game {:seed 14921215311}) + ; The Player table holds all the player stuff ; [x y] coordinates, [d] distance ; [dx dy] direction vector @@ -14,7 +16,9 @@ ; [h w] hall and wall widths (var map {:n 10 :h 2 :w 2}) -{:getPlayer (fn getPlayer [] player) +{:getSeed (fn getSeed [] game.seed) + :setSeed (fn setSeed [x] (set game.seed x)) + :getPlayer (fn getPlayer [] player) :getX (fn getX [] player.x) :setX (fn setX [x] (set player.x x)) :getY (fn getY [] player.y)