diff --git a/desktop/pom.xml b/desktop/pom.xml index cb3e6588..c0fa2ad7 100644 --- a/desktop/pom.xml +++ b/desktop/pom.xml @@ -3,7 +3,7 @@ advent advent jar - 0.0.1-SNAPSHOT + 1.2.2 advent FIXME: write description @@ -72,68 +72,34 @@ com.badlogicgames.gdx gdx - 1.5.3 + 1.9.3 com.badlogicgames.gdx gdx-backend-lwjgl - 1.5.3 - - - com.badlogicgames.gdx - gdx-box2d - 1.5.3 - - - com.badlogicgames.gdx - gdx-tools - 1.5.3 - - - com.badlogicgames.gdx - gdx-box2d-platform - 1.5.3 - natives-desktop - - - com.badlogicgames.gdx - gdx-bullet - 1.5.3 - - - com.badlogicgames.gdx - gdx-bullet-platform - 1.5.3 - natives-desktop + 1.9.3 com.badlogicgames.gdx gdx-platform - 1.5.3 + 1.9.3 natives-desktop org.clojure clojure - 1.6.0 - - - org.clojure - tools.nrepl - 0.2.6 - - - org.clojure - clojure - - - test + 1.8.0 play-clj play-clj 0.4.5-BRYCE + + log4j + log4j + 1.2.16 + org.clojure data.priority-map @@ -144,6 +110,28 @@ core.async 0.1.338.0-5c5012-alpha + + org.clojure + tools.logging + 0.3.1 + + + org.im4java + im4java + 1.4.0 + + + org.clojure + tools.nrepl + 0.2.7 + + + org.clojure + clojure + + + test + clojure-complete clojure-complete @@ -156,6 +144,36 @@ test + + com.badlogicgames.gdx + gdx-tools + 1.5.3 + test + + + play-clj-nrepl + play-clj-nrepl + 0.1.0 + + + play-clj + play-clj + + + test + + + slamhound + slamhound + 1.5.5 + test + + + org.clojure + data.csv + 0.1.3 + test + diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj index 0950e4c1..fb7317ed 100644 --- a/desktop/src-common/advent/actions.clj +++ b/desktop/src-common/advent/actions.clj @@ -108,7 +108,7 @@ (defn force-end [entities current-action key] (do (when current-action (put! (get-channel current-action) :end)) - (screen! dialogue/talking-screen :stop-talk :id key) + (screen! dialogue/talking-screen :stop-talk {:id key}) (-> entities (assoc-in [key :script-running?] false) (assoc-in [key :current] nil) @@ -411,14 +411,14 @@ scale-fn (get-in entities [:room :scale-fn]) scale (get-in entities [:room :entities target-id :scale-y] 1) height (* scale height)] - (screen! dialogue/talking-screen :on-talk :text text - :id fg-or-bg - :scene-viewport (:viewport screen) - :x target-x :y (+ target-y height) - :color (or color (get-in entities [:room :entities target-id :talk-color])) - - :target-id target-id - :scale scale) + (screen! dialogue/talking-screen :on-talk { :text text + :id fg-or-bg + :scene-viewport (:viewport screen) + :x target-x :y (+ target-y height) + :color (or color (get-in entities [:room :entities target-id :talk-color])) + + :target-id target-id + :scale scale}) (if animate? (update-in entities [:room :entities target-id ] #(start-animation screen % (or anim (:talk-override %) :talk))) entities))) @@ -435,7 +435,7 @@ (terminate [this screen entities] (if wait (do - (screen! dialogue/talking-screen :stop-talk :id fg-or-bg) + (screen! dialogue/talking-screen :stop-talk {:id fg-or-bg}) (if stop? (stop screen entities target-id) entities)) @@ -471,7 +471,7 @@ dialogue-choices (filter first (partition 2 (:choices node)))] (run-action entities (begin [this screen entities] - (screen! dialogue/choice-screen :on-present-choices :choices dialogue-choices :callback #(reset! selected-index %)) + (screen! dialogue/choice-screen :on-present-choices { :choices dialogue-choices :callback #(reset! selected-index %)}) (assoc-in entities [:state :active?] false)) (continue [this screen entities] entities) @@ -540,7 +540,7 @@ (run-action entities (begin [this screen entities] (when-not quiet? - (screen! @(resolve 'advent.screens.scene/hud) :on-remove-item :item ((:all-items entities) item))) + (screen! @(resolve 'advent.screens.scene/hud) :on-remove-item { :item ((:all-items entities) item)})) (-> entities (update-in [:state :inventory] #(remove (partial = item) %)))) @@ -581,7 +581,7 @@ (run-action entities (begin [this screen entities] (utils/play-sound! screen entities :pickup (constantly 0.3)) - (screen! @(resolve 'advent.screens.scene/hud) :on-give-item :item ((:all-items entities) item)) + (screen! @(resolve 'advent.screens.scene/hud) :on-give-item { :item ((:all-items entities) item)}) (-> entities (update-in [:state :inventory] #(conj % item)) (update-in [:state :obtained-items] #(conj % item)))) @@ -697,7 +697,7 @@ (skip-type [this screen entities] :none)) (log/info "Entering room " new-background ) - (screen! dialogue/talking-screen :stop-talk :id :bg-actions) + (screen! dialogue/talking-screen :stop-talk { :id :bg-actions}) (run-action entities (begin [this screen entities] (utils/stop-all-sounds! entities) diff --git a/desktop/src-common/advent/screens/credits.clj b/desktop/src-common/advent/screens/credits.clj index 952549b0..1997e7e9 100644 --- a/desktop/src-common/advent/screens/credits.clj +++ b/desktop/src-common/advent/screens/credits.clj @@ -191,7 +191,7 @@ nil) :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} entities] (.apply viewport) (let [entities (utils/apply-tweens screen entities (:tweens entities)) entities (start-message-if-necessary screen entities)] @@ -200,7 +200,7 @@ entities)) - :on-touch-up (fn [screen [entities]] + :on-touch-up (fn [screen entities] (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen))) :on-resize (fn [{:keys [width height ^FitViewport viewport]} entities] diff --git a/desktop/src-common/advent/screens/dialogue.clj b/desktop/src-common/advent/screens/dialogue.clj index 48b227bc..efa30a7b 100644 --- a/desktop/src-common/advent/screens/dialogue.clj +++ b/desktop/src-common/advent/screens/dialogue.clj @@ -45,14 +45,14 @@ (utils/setup-viewport screen 1280 960) {}) :on-render - (fn [{:keys [camera ^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [camera ^FitViewport viewport] :as screen} entities] (.apply viewport) (render! screen (vals entities)) entities) :on-talk - (fn [{:keys [create-talk target-id color text x y scale scene-viewport id] :as screen} [entities]] + (fn [{:keys [create-talk target-id color text x y scale scene-viewport id] :as screen} entities] (let [font (bitmap-font "ego/font.fnt" ) p (NinePatchEntity. (skin! (skin "ui/ui.json") :get-patch "ui-bg")) _ (nine-patch! p :set-padding 25 25 5 15) @@ -79,7 +79,7 @@ (assoc entities id talk))) :on-update-camera - (fn [{:keys [scene-viewport scene-camera viewport] :as screen} [ entities]] + (fn [{:keys [scene-viewport scene-camera viewport] :as screen} entities] (reduce-kv (fn [entities id e] (if (:id e) (let [[x y] (scene-world->talk-world scene-viewport [(:source-x e) @@ -93,7 +93,7 @@ entities)) :stop-talk - (fn [{:keys [id] } [entities]] + (fn [{:keys [id] } entities] (dissoc entities (or id :fg-actions))) @@ -134,7 +134,7 @@ :x 5 :y 5 :width 1270)}})) :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} entities] (.apply viewport) (when (seq (get-in entities [:state :choices])) (render! screen [(get-in entities [:state :np])]) @@ -142,7 +142,7 @@ entities) :on-present-choices - (fn [{:keys [choices callback]} [entities]] + (fn [{:keys [choices callback]} entities] (let [choice-count (count choices) font (get-in entities [:state :font])] (-> entities @@ -159,7 +159,7 @@ (assoc-in [:state :callback] callback) (assoc-in [:state :np :height] (* choice-height (inc choice-count)))))) - :on-touch-up (fn [screen [entities]] + :on-touch-up (fn [screen entities] (let [[x y] (utils/unproject screen)] (when (seq (get-in entities [:state :choices])) (when-let [choice (first (filter #(utils/intersects? % [x y]) (vals entities)))] @@ -169,7 +169,7 @@ (assoc-in [:state :choices] []) (select-keys [:state])))))) - :on-mouse-moved (fn [screen [entities]] + :on-mouse-moved (fn [screen entities] (let [[x y] (utils/unproject screen) entities (assoc-in entities [:state :last-pos] [x y]) choice-count (dec (count entities))] @@ -188,7 +188,7 @@ {}) :on-render - (fn [{:keys [camera ^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [camera ^FitViewport viewport] :as screen} entities] (.apply viewport) (let [entities (utils/apply-tweens screen entities (:tweens entities))] (when (:dialogue entities) @@ -197,7 +197,7 @@ entities)) :on-toast - (fn [{:keys [message] :as screen} [entities]] + (fn [{:keys [message] :as screen} entities] (let [font (bitmap-font "ego/font.fnt" ) p (nine-patch {:region (:object (utils/get-texture "talk-bg-2.png")) :left 9 :top 9 :right 9 :bottom 9}) _ (nine-patch! p :set-padding 25 25 5 15) @@ -220,7 +220,7 @@ :finish #(dissoc % :dialogue)))))) :stop-talk - (fn [{:keys [target-id] } [entities]] + (fn [{:keys [target-id] } entities] (dissoc entities :dialogue)) diff --git a/desktop/src-common/advent/screens/fade.clj b/desktop/src-common/advent/screens/fade.clj index 991fb84a..c2f2d9bf 100644 --- a/desktop/src-common/advent/screens/fade.clj +++ b/desktop/src-common/advent/screens/fade.clj @@ -31,11 +31,11 @@ :on-render - (fn [screen [entities]] + (fn [screen entities] (render! screen [(:fade entities)]) entities) - :update-fade (fn [{:keys [opacity]} [entities]] + :update-fade (fn [{:keys [opacity]} entities] (assoc-in entities [:fade :opacity] opacity)) :on-resize (fn [{:keys [width height ^FitViewport viewport]} entities] diff --git a/desktop/src-common/advent/screens/inventory.clj b/desktop/src-common/advent/screens/inventory.clj index 0d06569a..3a91696b 100644 --- a/desktop/src-common/advent/screens/inventory.clj +++ b/desktop/src-common/advent/screens/inventory.clj @@ -23,13 +23,13 @@ (defn close [screen {:keys [selected-item] :as entities} script-started? dragged-out?] (log/info "closing inventory") - (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate :came-from-inventory? dragged-out?) - (screen! @(resolve 'advent.screens.scene/hud) :on-reactivate :script-started? script-started? :item selected-item) + (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate { :came-from-inventory? dragged-out?}) + (screen! @(resolve 'advent.screens.scene/hud) :on-reactivate { :script-started? script-started? :item selected-item}) (-> entities (assoc-in [:tweens :fade-out] (tween/tween :fade-out screen [:opacity] 1.0 0.0 0.2 :ease tween/ease-out-cubic :finish #(assoc % :shown? false))))) -(defn mouse-down [screen [entities]] +(defn mouse-down [screen entities] (let [[x y] (utils/unproject screen) selected-entity (first (filter #((:box %) x y) (vals (:items entities))))] (assoc entities :selected-item (:item selected-entity)))) @@ -40,7 +40,7 @@ (< y 80) (> y 880))) -(defn mouse-drag [screen [{:keys [selected-item] :as entities}]] +(defn mouse-drag [screen {:keys [selected-item] :as entities}] (when (interactable? entities) (let [[x y] (utils/unproject screen) hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))] @@ -58,7 +58,7 @@ (assoc entities :hovered-item (:item hovered-entity) :dragged? true))))) -(defn mouse-move [screen [entities]] +(defn mouse-move [screen entities] (let [[x y] (utils/unproject screen) hovered-entity (first (filter #((:box %) x y) (vals (:items entities))))] (assoc entities :hovered-item (:item hovered-entity)))) @@ -66,8 +66,7 @@ (defn left-click [screen {:keys [selected-item hovered-item dragged?] :as entities}] (let [room-entities (-> @(resolve 'advent.screens.scene/scene) :entities - deref - first)] + deref)] (log/info "chose inventory item" selected-item) (println selected-item hovered-item dragged?) @@ -79,7 +78,7 @@ (dissoc entities :selected-item :dragged?) (or (not hovered-item) (= selected-item hovered-item)) - (do (screen! @(resolve 'advent.screens.scene/scene) :on-chose-item :item selected-item) + (do (screen! @(resolve 'advent.screens.scene/scene) :on-chose-item { :item selected-item}) (close screen entities false false)) :else (when-let [interaction-script (or ((or (:scripts selected-item) (constantly nil)) (:value hovered-item)) @@ -92,7 +91,7 @@ room-entities (-> @(resolve 'advent.screens.scene/scene) :entities deref - first) + ) ego (get-in room-entities [:room :entities :ego])] (when selected-item (((:get-script ego) selected-item [0 0]) room-entities) @@ -132,7 +131,7 @@ :hovered-text hovered-text})) :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [{:keys [shown? tweens] :as entities}]] + (fn [{:keys [^FitViewport viewport] :as screen} {:keys [shown? tweens] :as entities}] (.apply viewport) (let [entities (utils/apply-tweens screen entities tweens) opacity (get-in entities [:opacity]) @@ -156,7 +155,7 @@ (render! screen [(:hovered-text entities)])) entities)) - :show-screen (fn [{items :items :as screen} [entities]] + :show-screen (fn [{items :items :as screen} entities] (log/info "showing inventory") (when-not (:shown? entities) (-> entities @@ -188,7 +187,7 @@ :on-touch-dragged mouse-drag :on-touch-down mouse-down - :on-touch-up (fn [screen [entities]] + :on-touch-up (fn [screen entities] (when (interactable? entities) (if (= (button-code :left) (:button screen)) (left-click screen entities) diff --git a/desktop/src-common/advent/screens/rooms/castle_gate.clj b/desktop/src-common/advent/screens/rooms/castle_gate.clj index e5a5dc63..50c5497b 100644 --- a/desktop/src-common/advent/screens/rooms/castle_gate.clj +++ b/desktop/src-common/advent/screens/rooms/castle_gate.clj @@ -91,7 +91,7 @@ (assoc-in [:room :entities :coin-flip :opacity] 1.0)))) (actions/walk-straight-to entities :coin-flip [212 90] :update-baseline? false :speed 3.0) - (screen! dialogue/talking-screen :stop-talk) + (screen! dialogue/talking-screen :stop-talk {}) (actions/do-stop entities :ego) (actions/walk-straight-to entities :coin-flip [210 105] :update-baseline? false :speed 1.0) diff --git a/desktop/src-common/advent/screens/rooms/inside_house.clj b/desktop/src-common/advent/screens/rooms/inside_house.clj index 03f7e7de..a033f888 100644 --- a/desktop/src-common/advent/screens/rooms/inside_house.clj +++ b/desktop/src-common/advent/screens/rooms/inside_house.clj @@ -15,32 +15,32 @@ (actions/play-animation entities :ego :start-squat :stop? false) (Thread/sleep 500) (screen! safe/safe-screen :show-screen - :success (actions/get-script entities - (Thread/sleep 500) - (actions/play-animation entities :ego :end-squat) + { :success (actions/get-script entities + (Thread/sleep 500) + (actions/play-animation entities :ego :end-squat) - (if (actions/has-item? entities :recipe) - (do - - (actions/talk entities :ego "I already took everything interesting from there.")) - (do - (actions/talk entities :ego "Yes! That worked.") - (actions/talk entities :ego "Let's see here...") - (actions/play-animation entities :ego :squat) - (actions/talk entities :ego "No, that's a recipe to turn someone into a professional dancer...") - (actions/play-animation entities :ego :squat) - (actions/talk entities :ego "Here's a recipe to make everything taste like cotton candy. I'll just put that back.") - (actions/play-animation entities :ego :squat) - (actions/give entities :recipe) - (actions/talk entities :ego "Aha! Here it is! I found a recipe for a strength potion!") - (actions/talk entities :ego "Looks like there's something else in here too...") - (actions/play-animation entities :ego :squat) - (actions/give entities :mandrake) - (actions/talk entities :ego "Weird. It's some kind of root.")))) - :failure (actions/get-script entities - (Thread/sleep 500) - (actions/play-animation entities :ego :end-squat) - (actions/talk entities :ego "I don't think that worked..."))) + (if (actions/has-item? entities :recipe) + (do + + (actions/talk entities :ego "I already took everything interesting from there.")) + (do + (actions/talk entities :ego "Yes! That worked.") + (actions/talk entities :ego "Let's see here...") + (actions/play-animation entities :ego :squat) + (actions/talk entities :ego "No, that's a recipe to turn someone into a professional dancer...") + (actions/play-animation entities :ego :squat) + (actions/talk entities :ego "Here's a recipe to make everything taste like cotton candy. I'll just put that back.") + (actions/play-animation entities :ego :squat) + (actions/give entities :recipe) + (actions/talk entities :ego "Aha! Here it is! I found a recipe for a strength potion!") + (actions/talk entities :ego "Looks like there's something else in here too...") + (actions/play-animation entities :ego :squat) + (actions/give entities :mandrake) + (actions/talk entities :ego "Weird. It's some kind of root.")))) + :failure (actions/get-script entities + (Thread/sleep 500) + (actions/play-animation entities :ego :end-squat) + (actions/talk entities :ego "I don't think that worked..."))}) (actions/update-state entities #(assoc % :active? false))) (defn do-wizard-dialogue [entities] diff --git a/desktop/src-common/advent/screens/safe.clj b/desktop/src-common/advent/screens/safe.clj index 13afbe92..9cfcdcfb 100644 --- a/desktop/src-common/advent/screens/safe.clj +++ b/desktop/src-common/advent/screens/safe.clj @@ -20,8 +20,8 @@ (defn close [entities] - (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate) - (screen! @(resolve 'advent.screens.scene/scene) :on-end-safe) + (screen! @(resolve 'advent.screens.scene/scene) :on-reactivate {}) + (screen! @(resolve 'advent.screens.scene/scene) :on-end-safe {}) (-> entities (assoc :shown? false) (assoc :start-showing? false))) @@ -60,14 +60,14 @@ :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} entities] (.apply viewport) (when (:shown? entities) (render! screen [(:fade entities) (:safe entities)]) (render! screen (take (count (:button-choices entities)) (:entered-keys entities)))) entities) - :show-screen (fn [{:keys [success failure]} [entities]] + :show-screen (fn [{:keys [success failure]} entities] (sound! (utils/load-sound "inside-house/open-safe.ogg") :play (utils/current-sound-volume 0.3)) (assoc entities :shown? true @@ -75,10 +75,10 @@ :success success :failure failure)) - :on-mouse-moved (fn [screen [entities]] + :on-mouse-moved (fn [screen entities] entities) - :on-touch-up (fn [screen [entities]] + :on-touch-up (fn [screen entities] (when (:shown? entities) (let [[x y] (utils/unproject screen)] (if-let [button (get-button [x y])] diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 22f75df1..caa2d6e3 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -209,7 +209,7 @@ void main () (assoc-in entities [:state :active?] false))) (defn open-inventory [screen entities] - (screen! inventory-screen :show-screen :items (map (entities :all-items) (get-in entities [:state :inventory]))) + (screen! inventory-screen :show-screen { :items (map (entities :all-items) (get-in entities [:state :inventory]))}) (assoc-in entities [:state :active?] false)) @@ -247,10 +247,10 @@ void main () (or (:id interacting-entity) (:id interaction) nil)) (get-in entities [:cursor :came-from-inventory?]))) ((or (when (and interacting-entity (not (:cursor interaction))) - (do (screen! hud :on-start-script) + (do (screen! hud :on-start-script {}) ((:get-script interacting-entity) (get-script-selector entities) [x y]))) (when interaction - (do (screen! hud :on-start-script) + (do (screen! hud :on-start-script {}) ((:get-script interaction) (or (when (:cursor interaction) :main) (get-script-selector entities)) [x y]))) @@ -901,19 +901,20 @@ void main () (if anim-loop? (get-looped-animation-point anim ^double (- total-time anim-start delta-time)) (- total-time anim-start delta-time)))] - (merge entity (animation->texture (update-in screen [:total-time] #(- % anim-start)) - anim - anim-loop?) - {:current-frame-index current-frame-index - :previous-frame-index previous-frame-index - :origin-x (or (get-in entity [:anim-origins anim 0]) - (:base-origin-x entity) - (:origin-x entity)) - :origin-y (or (get-in entity [:anim-origins anim 1]) - (:base-origin-y entity) - (:origin-y entity))} - (or (get-in entity [:anim-merges anim]) - (get-in entity [:anim-merges :default]))))) + (if (= current-frame-index (:current-frame-index entity) (:previous-frame-index entity)) + entity + (merge (assoc entity + :object (.getKeyFrame ^Animation anim (- total-time anim-start) anim-loop?) + :current-frame-index current-frame-index + :previous-frame-index previous-frame-index + :origin-x (or (get-in entity [:anim-origins anim 0]) + (:base-origin-x entity) + (:origin-x entity)) + :origin-y (or (get-in entity [:anim-origins anim 1]) + (:base-origin-y entity) + (:origin-y entity))) + (or (get-in entity [:anim-merges anim]) + (get-in entity [:anim-merges :default])))))) (defn get-layers [entities] @@ -951,9 +952,12 @@ void main () :object nil})) entities)) -(defn play-sound-if-necessary [screen entities target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e}] +(defn play-sound-if-necessary [screen entities target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e :or {anim-sound-frames {}}}] + + + (if (and (not= previous-frame-index current-frame-index) - ((set (keys anim-sound-frames)) anim)) + (anim-sound-frames anim)) (if-let [[snd vol-scale pitch] (get-in anim-sound-frames [anim current-frame-index])] (let [snd (if (fn? snd) (snd entities) @@ -1051,7 +1055,7 @@ void main () (assoc e :y (+ (:y e) (:offset-y e))) e))) -(defn mouse-moved [{:keys [input-x input-y viewport] :as screen} [entities]] +(defn mouse-moved [{:keys [input-x input-y viewport] :as screen} entities] (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y]))) (defn add-georgia-to-all-rooms [screen rooms] @@ -1083,7 +1087,7 @@ void main () (defscreen scene :on-timer - (fn [screen [entities]] + (fn [screen entities] (when-let [timer-fn (get-in entities [:room :timers (:id screen) 2])] (timer-fn screen entities))) @@ -1205,7 +1209,7 @@ void main () (apply-state screen entities) entities))))) - :on-resume (fn [screen [{{:keys [current override last active was-active]} :cursor :as entities}]] + :on-resume (fn [screen {{:keys [current override last active was-active]} :cursor :as entities}] (let [current (or override (get-selected-inventory-item) :main) image-path (if active "cursor_light.png" "cursor.png")] (graphics! :set-cursor (utils/cursor image-path (or (:cursor current) current)))) @@ -1220,7 +1224,7 @@ void main () nil) :on-render - (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^OrthographicCamera camera ^FitViewport viewport] :as screen} entities] (steam/update) (.apply viewport) (if (get-in entities [:closing? :value]) @@ -1230,7 +1234,7 @@ void main () entities (remove-ended-sounds screen entities) layers (get-layers entities) all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))] - (screen! fade-screen :update-fade :opacity (get-in entities [:fade :opacity])) + (screen! fade-screen :update-fade {:opacity (get-in entities [:fade :opacity])}) (doseq [m (vals (get-in entities [:musics]))] (when m (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value]))))) @@ -1249,7 +1253,6 @@ void main () entities (update-from-script screen entities :bg-actions) entities (update-from-room screen entities) entities (update-from-hotspots screen entities) - entities (assoc-in entities [:room :entities :ego :last-frame] (get-in entities [:room :entities :ego :object])) entities (update-in entities [:room :entities] (fn [entities] (into entities @@ -1290,8 +1293,8 @@ void main () all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))] (clear!) - (screen! talking-screen :on-update-camera :scene-viewport (:viewport screen) :scene-camera (:camera screen)) - (screen! fade-screen :update-fade :opacity (get-in entities [:fade :opacity])) + (screen! talking-screen :on-update-camera { :scene-viewport (:viewport screen) :scene-camera (:camera screen)}) + (screen! fade-screen :update-fade { :opacity (get-in entities [:fade :opacity])}) (when true #_(not (get-in entities [:cam :paused?])) (set! (. camera zoom) (:zoom (:cam entities))) (set! (.. camera position x) (:x (:cam entities) 160.0)) @@ -1310,10 +1313,10 @@ void main () entities)))) - :on-resize (fn [{:keys [^FitViewport viewport width height]} [entities]] + :on-resize (fn [{:keys [^FitViewport viewport width height]} entities] (.update viewport width height)) - :on-hide (fn [screen [entities]] + :on-hide (fn [screen entities] (doseq [snd (->> (get-in entities [:musics]) vals (filter identity))] @@ -1326,7 +1329,7 @@ void main () mouse-moved :on-touch-down - (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} entities] (when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport) input-x input-y) @@ -1340,7 +1343,7 @@ void main () interacting-entity (get-interacting-entity entities x y)] (assoc-in entities [:cursor :down-target] (or (:id interacting-entity ) (:id interaction) nil)))))) - :on-touch-up (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} [entities]] + :on-touch-up (fn [{:keys [input-x input-y ^FitViewport viewport] :as screen} entities] (when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) (.getScreenWidth viewport) (.getScreenHeight viewport) @@ -1348,34 +1351,34 @@ void main () (if (= (button-code :right) (:button screen)) (do - (screen! hud :on-return-item)) + (screen! hud :on-return-item {})) (when (and (get-in entities [:state :active?]) (or (not (get-in entities [:state :hud-active?])) (get-in entities [:fg-actions :script-running?])) (= 0.0 (get-in entities [:fade :opacity]))) (left-click screen entities))))) - :on-deactivate (fn [screen [entities]] + :on-deactivate (fn [screen entities] (assoc-in entities [:state :active?] false)) - :on-reactivate (fn [{:keys [came-from-inventory?] :as screen} [entities]] + :on-reactivate (fn [{:keys [came-from-inventory?] :as screen} entities] (-> entities (assoc-in [:state :active?] true) (assoc-in [:cursor :came-from-inventory?] came-from-inventory?))) - :on-end-safe (fn [screen [entities]] + :on-end-safe (fn [screen entities] ((actions/get-script entities (actions/play-animation entities :ego :end-squat)) entities) (-> entities (assoc-in [:state :active?] true) (assoc-in [:cursor :override] nil))) - :on-open-inventory (fn [screen [entities]] + :on-open-inventory (fn [screen entities] (open-inventory screen entities)) - :on-click-inventory (fn [screen [entities]] + :on-click-inventory (fn [screen entities] (click-inventory screen entities)) - :on-save (fn [screen [entities]] + :on-save (fn [screen entities] (when-not (get-in entities [:fg-actions :script-running?]) (let [date (.format (java.text.SimpleDateFormat. "MM/dd/YY") (java.util.Date.)) save-name (str (-> entities :room :name) " - " date)] @@ -1383,9 +1386,9 @@ void main () (str (.getTime (java.util.Date.))) save-name date) - (screen! toast-screen :on-toast :message (str "Saved \"" save-name "\""))))) + (screen! toast-screen :on-toast { :message (str "Saved \"" save-name "\"")})))) - :on-menu (fn [{:keys [viewport] :as screen} [entities]] + :on-menu (fn [{:keys [viewport] :as screen} entities] (when-not (or (get-in entities [:tweens :fade-out]) (get-in entities [:tweens :fade-in])) @@ -1402,10 +1405,10 @@ void main () (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen)) %)))))) - :on-start-script (fn [{:keys [script]} [entities]] + :on-start-script (fn [{:keys [script]} entities] (script entities) entities) - :hud-active? (fn [{:keys [hud-active?]} [entities]] + :hud-active? (fn [{:keys [hud-active?]} entities] (assoc-in entities [:state :hud-active?] hud-active?))) () @@ -1428,7 +1431,7 @@ void main () entities))) (defn get-selected-inventory-item [] - (let [[{{:keys [state state-data]} :inv-fsm}] (-> hud :entities deref)] + (let [{{:keys [state state-data]} :inv-fsm} (-> hud :entities deref)] (and (= state :selected) state-data))) @@ -1440,7 +1443,7 @@ void main () {:label (assoc (label "Demo version - DO NOT COPY" (color :white) ) :y 460 :x 5 :baseline 0 :opacity 0.5)})) :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} entities] (.apply viewport) (render! screen [(:label entities)]) entities) @@ -1451,7 +1454,7 @@ void main () ) (defn hud-interactable? [] - (let [[scene-entities] (-> scene :entities deref)] + (let [scene-entities (-> scene :entities deref)] (and (not (get-in scene-entities [:fg-actions :script-running?])) (get-in scene-entities [:state :active?]) (= 0.0 (get-in scene-entities [:fade :opacity]))))) @@ -1527,7 +1530,7 @@ void main () (reify ITransition (start-transition [this screen entities] - (screen! scene :on-open-inventory) + (screen! scene :on-open-inventory {}) entities) (transition-done? [this screen entities] true))])) @@ -1750,9 +1753,9 @@ void main () #_#_:fps (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.1)})) :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} entities] (.apply viewport) - (let [entities (utils/apply-tweens screen entities (:tweens entities)) + #_(let [entities (utils/apply-tweens screen entities (:tweens entities)) entities (update-in entities [:inventory] animate screen ) hud-interactable? (hud-interactable?) entities (if hud-interactable? @@ -1827,7 +1830,7 @@ void main () :on-start-script - (fn [_ [entities]] + (fn [_ entities] (println "here") (-> entities (update-in [:inv-fsm :pending-states] conj [:none nil]) @@ -1835,7 +1838,7 @@ void main () :on-reactivate - (fn [{:keys [script-started? item] :as screen} [entities]] + (fn [{:keys [script-started? item] :as screen} entities] (let [selected-item? (and (:value item) (:cursor item))] (if (and (not script-started?) selected-item?) @@ -1843,16 +1846,16 @@ void main () (transition-hud screen entities :none nil)))) :on-touch-down - (fn [screen [entities]] + (fn [screen entities] (let [[x y] (utils/unproject screen) hovered-inventory? ((:mouse-in? (:inventory entities)) x y) hovered-close? (utils/intersects? (:close entities) [x y]) hovered-save? (utils/intersects? (:save entities) [x y])] - (screen! scene :hud-active? :hud-active? (or hovered-close? hovered-inventory? hovered-save?)))) + (screen! scene :hud-active? { :hud-active? (or hovered-close? hovered-inventory? hovered-save?)}))) #_#_:on-mouse-moved - (fn [screen [entities]] + (fn [screen entities] (let [[x y] (utils/unproject screen) hovered-inventory? ((:mouse-in? (:inventory entities)) x y) hovered-close? (utils/intersects? (:close entities) [x y]) @@ -1883,7 +1886,7 @@ void main () :on-touch-up - (fn [screen [entities]] + (fn [screen entities] (if (= (button-code :left) (:button screen)) (let [[x y] (utils/unproject screen)] (cond @@ -1897,15 +1900,15 @@ void main () (update-in entities [:inv-fsm :pending-states] conj [:none (get-in entities [:inv-fsm :state-data])]) (do - (screen! scene :on-deactivate) + (screen! scene :on-deactivate {}) (update-in entities [:inv-fsm :pending-states] conj [:open nil]))) (utils/intersects? (:close entities) [x y]) - (screen! scene :on-menu) + (screen! scene :on-menu {}) (and (not (:already-saved? entities)) (utils/intersects? (:save entities) [x y]) (hud-interactable?)) (do - (screen! scene :on-save) + (screen! scene :on-save {}) (assoc entities :already-saved? true)) :else diff --git a/desktop/src-common/advent/screens/splash.clj b/desktop/src-common/advent/screens/splash.clj index 96280323..efd88d65 100644 --- a/desktop/src-common/advent/screens/splash.clj +++ b/desktop/src-common/advent/screens/splash.clj @@ -95,6 +95,7 @@ (defscreen splash-screen :on-show (fn [screen entities] + (println screen) (utils/setup-viewport screen 1280 960) (log/info "Starting splash screen.") @@ -124,7 +125,7 @@ :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} entities] (steam/update) (.apply viewport) (clear!) @@ -140,7 +141,7 @@ :show-screen (fn [entities] entities) - :on-touch-up (fn [screen [entities]] + :on-touch-up (fn [screen entities] (if (get-in entities [:current-step :can-skip]) (assoc entities :current-step nil :queued-skip? false) (assoc entities :queued-skip? true))) @@ -151,6 +152,6 @@ (utils/toggle-fullscreen!)) nil) - :on-resize (fn [{:keys [^FitViewport viewport width height]} [entities]] + :on-resize (fn [{:keys [^FitViewport viewport width height]} entities] (.update viewport width height false) nil)) diff --git a/desktop/src-common/advent/screens/title.clj b/desktop/src-common/advent/screens/title.clj index ffac4801..027df528 100644 --- a/desktop/src-common/advent/screens/title.clj +++ b/desktop/src-common/advent/screens/title.clj @@ -412,7 +412,7 @@ :on-render - (fn [{:keys [^FitViewport viewport] :as screen} [entities]] + (fn [{:keys [^FitViewport viewport] :as screen} entities] (steam/update) (.apply viewport) (clear!) @@ -440,7 +440,7 @@ :on-ui-changed - (fn [{:keys [^Actor actor] :as screen} [entities]] + (fn [{:keys [^Actor actor] :as screen} entities] (when-not (get-in entities [:tweens :fade-out]) (let [e (-> actor .getUserObject) actor-key (:key e)] @@ -550,6 +550,6 @@ :else entities)))) - :on-resize (fn [{:keys [^FitViewport viewport width height]} [entities]] + :on-resize (fn [{:keys [^FitViewport viewport width height]} entities] (.update viewport width height false) nil))