diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj index ec80ba94..9ab37780 100644 --- a/desktop/src-common/advent/actions.clj +++ b/desktop/src-common/advent/actions.clj @@ -23,6 +23,8 @@ (can-skip? [this screen entities]) (get-channel [this])) +(defn has-item? [entities item] + ((set (get-in entities [:state :inventory])) item)) (defmacro get-script [entities & forms] `(fn [starting-entities#] @@ -260,7 +262,7 @@ (-> entities (update-in [:state :inventory] #(conj % item)) - (assoc-in [:cursor :current] item))) + (assoc-in [:cursor :current] (:cursor item)))) (continue [this screen entities] entities) diff --git a/desktop/src-common/advent/screens/inventory.clj b/desktop/src-common/advent/screens/inventory.clj index bc04b0fc..105bb4c7 100644 --- a/desktop/src-common/advent/screens/inventory.clj +++ b/desktop/src-common/advent/screens/inventory.clj @@ -45,7 +45,7 @@ (render! screen [(:fade entities) (:overlay entities)]) (render! screen (:items entities)) (if-let [item (:highlighted-item entities)] - (label! (:highlighted-text entities) :set-text (name item)) + (label! (:highlighted-text entities) :set-text (:name item)) (label! (:highlighted-text entities) :set-text "")) (render! screen [(:highlighted-text entities)])) entities)) @@ -60,7 +60,7 @@ offset-y (+ y (/ item-width 2)) padding (/ item-width 2) padding (* 4 padding)]] - (assoc (texture (aget (:all-items entities) 0 (.indexOf utils/+all-cursors+ item))) + (assoc (texture (aget (:all-items entities) 0 (.indexOf utils/+all-cursors+ (:cursor item)))) :x x :y y :scale-x 4 :scale-y 4 diff --git a/desktop/src-common/advent/screens/rooms/behind_house.clj b/desktop/src-common/advent/screens/rooms/behind_house.clj index 586c61e3..cea0c0af 100644 --- a/desktop/src-common/advent/screens/rooms/behind_house.clj +++ b/desktop/src-common/advent/screens/rooms/behind_house.clj @@ -1,5 +1,6 @@ (ns advent.screens.rooms.behind-house (:require [advent.screens.rooms :as rooms] + [advent.screens.items :as items] [advent.actions :as actions] [advent.utils :as utils] [clojure.zip :as zip] @@ -28,11 +29,11 @@ :mushrooms {:box [247 59 269 76] :script (actions/get-script entities - (if ((get-in @entities [:state :inventory]) :mushrooms) + (if (actions/has-item? @entities items/mushrooms) (actions/talk entities :ego "I've already got a junk ton of mushrooms.") (do (actions/walk-to entities :ego [242 75]) - (actions/give entities :mushrooms) + (actions/give entities items/mushrooms) (actions/talk entities :ego "Perfectly ripe mushrooms!"))))} :window {:box [103 44 130 140] :script (actions/get-script diff --git a/desktop/src-common/advent/screens/rooms/inside_house.clj b/desktop/src-common/advent/screens/rooms/inside_house.clj index fd708c19..6f1a6d46 100644 --- a/desktop/src-common/advent/screens/rooms/inside_house.clj +++ b/desktop/src-common/advent/screens/rooms/inside_house.clj @@ -1,5 +1,6 @@ (ns advent.screens.rooms.inside-house - (:require [advent.screens.rooms :as rooms] + (:require [advent.screens.items :as items] + [advent.screens.rooms :as rooms] [advent.actions :as actions] [advent.utils :as utils] [clojure.zip :as zip] @@ -34,7 +35,7 @@ :x 265 :y 80 :baseline 240 :script (actions/get-script entities (actions/remove-entity entities :flask) - (actions/give entities :flask) + (actions/give entities items/flask) (actions/do-dialogue entities :ego "Hey you think I could have this flask?" :wizard "Sure.")))} :collision "inside-house/collision.png" diff --git a/desktop/src-common/advent/screens/rooms/outside_castle.clj b/desktop/src-common/advent/screens/rooms/outside_castle.clj index 6583af54..559e10e6 100644 --- a/desktop/src-common/advent/screens/rooms/outside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/outside_castle.clj @@ -1,5 +1,6 @@ (ns advent.screens.rooms.outside-castle - (:require [advent.screens.rooms :as rooms] + (:require [advent.screens.items :as items] + [advent.screens.rooms :as rooms] [advent.actions :as actions] [advent.utils :as utils] [clojure.zip :as zip] @@ -31,12 +32,12 @@ :garden {:box [103 170 178 200] :script (actions/get-script entities - (if ((get-in @entities [:state :inventory]) :carrot) + (if (actions/has-item? @entities items/carrot) (actions/talk entities :ego "If I steal any more, I might get caught.") (do (actions/walk-to entities :ego [128 180]) (actions/talk entities :ego "Hey! Carrots. No one will notice one missing.") - (actions/give entities :carrot))))} + (actions/give entities items/carrot))))} :peddler {:box [110 90 128 146] :script (actions/get-script entities diff --git a/desktop/src-common/advent/screens/rooms/outside_house.clj b/desktop/src-common/advent/screens/rooms/outside_house.clj index 7e4a3b4f..bda096b9 100644 --- a/desktop/src-common/advent/screens/rooms/outside_house.clj +++ b/desktop/src-common/advent/screens/rooms/outside_house.clj @@ -1,5 +1,6 @@ (ns advent.screens.rooms.outside-house - (:require [advent.screens.rooms :as rooms] + (:require [advent.screens.items :as items] + [advent.screens.rooms :as rooms] [advent.actions :as actions] [advent.utils :as utils] [clojure.zip :as zip] @@ -164,23 +165,23 @@ entities - (if ((get-in @entities [:state :inventory]) :wool) + (if (actions/has-item? @entities items/wool) (actions/talk entities :ego "The sheep has given me enough wool.") (if (is-sheep-close? @entities) (do (actions/walk-to entities :ego ego-sheep-loc) - (actions/give entities :wool) + (actions/give entities items/wool) (actions/talk entities :ego "I guess her wool is shedding.")) (actions/talk entities :ego "She's too far away for me to pet her.")))) - :scripts {:wool (actions/get-script entities + :scripts {items/wool (actions/get-script entities (actions/talk entities :ego "She doesn't need it back.")) - :carrot (actions/get-script entities + items/carrot (actions/get-script entities (actions/walk-to entities :ego ego-sheep-loc) (actions/talk entities :ego "Come on girl, get the carrot!") (actions/walk-straight-to entities :sheep [95 150])) - :flask (actions/get-script entities + items/flask (actions/get-script entities (if (is-sheep-close? @entities) (do (actions/walk-to entities :ego ego-sheep-loc) - (actions/give entities :flask-with-contents) + (actions/give entities items/flask-with-milk) (actions/talk entities :ego "Sheeps milk.")) (actions/talk entities :ego "She's too far away.")))} :left {:walk (utils/flip sheep-walk) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index a504b830..685ab901 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -134,7 +134,7 @@ (update! screen :renderer (stage) :camera (orthographic)) (let [_ (input! :set-cursor-image (utils/cursor "cursor.png" :main) 0 0) music (sound "town-music.mp3") - ;; _ (sound! music :loop 0.80) + _ (sound! music :loop 0.30) rooms {:inside-house (rooms.inside-house/make screen) :outside-house (rooms.outside-house/make screen) :behind-house (rooms.behind-house/make screen) @@ -144,7 +144,7 @@ {:rooms rooms :state {:object nil :active? true - :inventory (sorted-set)} + :inventory []} :actions {:object nil :channel (chan) :current nil @@ -200,7 +200,7 @@ (assoc-in entities [:state :active?] true)) :on-chose-item (fn [{:keys [item]} [entities]] - (assoc-in entities [:cursor :current] item)) + (assoc-in entities [:cursor :current] (:cursor item))) :on-start-script (fn [{:keys [script]} [entities]] (script entities)