diff --git a/desktop/resources/inside-stash/candle.png b/desktop/resources/inside-stash/candle.png new file mode 100644 index 00000000..1ecf712d Binary files /dev/null and b/desktop/resources/inside-stash/candle.png differ diff --git a/desktop/resources/inside-stash/candle.pxa/0.pxi b/desktop/resources/inside-stash/candle.pxa/0.pxi new file mode 100644 index 00000000..8b4108bc Binary files /dev/null and b/desktop/resources/inside-stash/candle.pxa/0.pxi differ diff --git a/desktop/resources/inside-stash/candle.pxa/1.pxi b/desktop/resources/inside-stash/candle.pxa/1.pxi new file mode 100644 index 00000000..32152339 Binary files /dev/null and b/desktop/resources/inside-stash/candle.pxa/1.pxi differ diff --git a/desktop/resources/inside-stash/candle.pxa/2.pxi b/desktop/resources/inside-stash/candle.pxa/2.pxi new file mode 100644 index 00000000..c999328e Binary files /dev/null and b/desktop/resources/inside-stash/candle.pxa/2.pxi differ diff --git a/desktop/resources/inside-stash/candle.pxa/3.pxi b/desktop/resources/inside-stash/candle.pxa/3.pxi new file mode 100644 index 00000000..e08b6799 Binary files /dev/null and b/desktop/resources/inside-stash/candle.pxa/3.pxi differ diff --git a/desktop/resources/inside-stash/candle.pxa/CelData.plist b/desktop/resources/inside-stash/candle.pxa/CelData.plist new file mode 100644 index 00000000..f0b74d60 --- /dev/null +++ b/desktop/resources/inside-stash/candle.pxa/CelData.plist @@ -0,0 +1,22 @@ + + + + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + duration + 1 + + + diff --git a/desktop/src-common/advent/screens/rooms.clj b/desktop/src-common/advent/screens/rooms.clj index cc060b02..cf329451 100644 --- a/desktop/src-common/advent/screens/rooms.clj +++ b/desktop/src-common/advent/screens/rooms.clj @@ -26,7 +26,7 @@ (if (= :main cursor) (:script entity) (when-let [scripts (:scripts entity)] - (scripts (:value cursor)))))}))) + (or (scripts (:value cursor)) (scripts :default)))))}))) (defn make [& {:keys [collision interactions entities] :as params}] (let [interactions-as-list (for [[id spec] interactions] (merge spec {:mouse-in? (fn [_ x y] @@ -35,7 +35,7 @@ (if (= :main cursor) (:script spec) (when-let [scripts (:scripts spec)] - (scripts (:value cursor))))) + (or (scripts (:value cursor)) (scripts :default))))) :id id})) entities (into {} (for [[id entity] entities] [id (make-entity id entity)]))] diff --git a/desktop/src-common/advent/screens/rooms/inside_stash.clj b/desktop/src-common/advent/screens/rooms/inside_stash.clj index 8cabbd17..a9125147 100644 --- a/desktop/src-common/advent/screens/rooms/inside_stash.clj +++ b/desktop/src-common/advent/screens/rooms/inside_stash.clj @@ -24,11 +24,11 @@ (defn explore-chest [entities] (cond (actions/has-item? entities :slingshot) - (do (actions/walk-to entities :ego [152 95]) + (do (actions/walk-to entities :ego [152 95] :face :right) (actions/talk entities :ego "It's empty now.")) (get-in @entities [:state :broke-lock?]) (do - (actions/walk-to entities :ego [152 95]) + (actions/walk-to entities :ego [152 95] :face :right) (actions/talk entities :ego "Let's see what's inside now.") (actions/play-animation entities :ego :reach) (actions/do-dialogue entities @@ -40,7 +40,7 @@ (actions/give entities :slingshot)) :else (do - (actions/walk-to entities :ego [152 95]) + (actions/walk-to entities :ego [152 95] :face :right) (actions/talk entities :ego "Maybe my stuff is in here...") (actions/play-animation entities :ego :reach) (actions/talk entities :ego "It's locked tight!")))) @@ -48,28 +48,54 @@ (defn make [screen] - (rooms/make :music {:day :secret-hideout :night :secret-hideout} - :interactions - {:left-dir {:box [91 60 125 140] + (let [candle-flame (utils/make-anim "inside-stash/candle.png" [4 4] 0.1 (range 4)) + candle-aura (utils/make-anim (texture "inside-house/candle-aura.png") [27 27] 0.2 [0 1 2 3 2 1] ) + ] + (rooms/make :music {:day :secret-hideout :night :secret-hideout} + :interactions + {:left-dir {:box [91 60 125 140] + :script (actions/get-script + entities + (actions/walk-straight-to entities :ego [118 96]) + (actions/transition-background entities :outside-jail [200 97]) + (actions/walk-straight-to entities :ego [167 100])) + :cursor :left} + :candle {:box [160 130 170 140] :script (actions/get-script entities - (actions/walk-straight-to entities :ego [118 96]) - (actions/transition-background entities :outside-jail [200 97]) - (actions/walk-straight-to entities :ego [167 100])) - :cursor :left} - :chest {:box [151 107 180 124] - :script (actions/get-script entities (explore-chest entities)) - :scripts {:sword (actions/get-script entities (actions/talk entities :ego "There's not enough room to swing my sword here.")) - :crowbar (actions/get-script entities - (bust-chest entities))}}} - :layers [(assoc (texture "inside-stash/background.png") :x 0 :y 0 :baseline 0 :night-profile :none)] - :entities {:lid (assoc (texture "inside-stash/lid.png") - :x 156 :y 116 :baseline 125 :night-profile :none) - } - :collision "inside-stash/collision.png" - :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00) - :start-pos [143 96] - :apply-state (fn [_ entities] - (if (get-in entities [:state :broke-lock?]) - (update-in entities [:room :entities] #(dissoc % :lid)) - entities)))) + (actions/talk entities :ego "Just a candle.")) + :scripts {:note-1 (actions/get-script entities + (actions/talk entities :ego "Why would I want to burn Gandarf's note?")) + :note-2 (actions/get-script entities + (actions/talk entities :ego "Why would I want to burn Gandarf's note?")) + :recipe (actions/get-script entities + (actions/walk-to entities :ego [152 95] :face :right) + (actions/play-animation entities :ego :reach) + (actions/remove-item entities :recipe) + (actions/give entities :ash) + (actions/talk entities :ego "It burned up into ash.")) + :default (actions/get-script entities + (actions/talk entities :ego "Momma always told me not to play with fire."))}} + :chest {:box [151 107 180 124] + :script (actions/get-script entities (explore-chest entities)) + :scripts {:sword (actions/get-script entities (actions/talk entities :ego "There's not enough room to swing my sword here.")) + :crowbar (actions/get-script entities + (bust-chest entities))}}} + :layers [(assoc (texture "inside-stash/background.png") :x 0 :y 0 :baseline 0 :night-profile :none)] + :entities {:lid (assoc (texture "inside-stash/lid.png") + :x 156 :y 116 :baseline 125 :night-profile :none) + :candle-flame (assoc (animation->texture screen candle-flame) + :x 165 :y 135 :baseline 1 + :anim candle-flame + :anim-start 0 + :night-profile :none) + + :candle-aura (assoc (animation->texture screen candle-aura) :x 166 :y 138 :baseline 2 :additive? true :origin-x 13 :origin-y 13 :opacity 0.5 :anim candle-aura :anim-start 0 :night-profile :none) + } + :collision "inside-stash/collision.png" + :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00) + :start-pos [143 96] + :apply-state (fn [_ entities] + (if (get-in entities [:state :broke-lock?]) + (update-in entities [:room :entities] #(dissoc % :lid)) + entities)))))