From 04955000dff21f999476e58b5ca9d5036d5045a4 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Sat, 27 Dec 2014 15:15:25 -0800 Subject: [PATCH] jail scene coming together --- desktop/in-jail.edn | 2 +- .../resources/inside-jail/collision-free.png | Bin 22610 -> 22992 bytes desktop/src-common/advent/actions.clj | 13 +++++ .../advent/screens/rooms/inside_jail.clj | 45 ++++++++++++++++-- desktop/src-common/advent/screens/scene.clj | 8 ++++ 5 files changed, 64 insertions(+), 4 deletions(-) diff --git a/desktop/in-jail.edn b/desktop/in-jail.edn index a1ff6dd6..bc005f39 100644 --- a/desktop/in-jail.edn +++ b/desktop/in-jail.edn @@ -1 +1 @@ -{:active? true, :convinced-wizard? true, :inventory [:ladder :flask-1 :grass :medal :kiss :trophy :flask-1-strength :sword ], :wizard-left? false, :clues #{}, :current-riddle :wool, :last-room :inside-jail, :wants-toy true, :mints-eaten 0, :object nil, :obtained-items #{:kiss :medal :sword :flask-1 :grass :ladder :trophy}} +{:active? true, :convinced-wizard? true, :inventory [] :chest-contents [:ladder :flask-1 :grass :medal :kiss :trophy :flask-1-strength :sword ], :wizard-left? false, :clues #{}, :current-riddle :wool, :last-room :inside-jail, :wants-toy true, :mints-eaten 0, :object nil, :obtained-items #{:kiss :medal :sword :flask-1 :grass :ladder :trophy}} diff --git a/desktop/resources/inside-jail/collision-free.png b/desktop/resources/inside-jail/collision-free.png index 5fb71cfe383da892ff67498ab02008f439ae674b..a301c2dbd7ac32f9366022629ae3b8da1e257798 100644 GIT binary patch delta 7500 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 B9^e1~ delta 7505 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 b{{I00mc4`PzfMlf00000NkvXXu0mjf;mJ|h diff --git a/desktop/src-common/advent/actions.clj b/desktop/src-common/advent/actions.clj index 27bac2d4..4b5dc291 100644 --- a/desktop/src-common/advent/actions.clj +++ b/desktop/src-common/advent/actions.clj @@ -113,6 +113,7 @@ (defn stop [screen entities target-id & {:keys [face]}] (update-in entities [:room :entities target-id] (comp #(start-animation screen % :stand) (if face #(assoc % :facing face) identity)))) + (defn walk-straight-to [entities target-id [final-x final-y] & {:keys [update-baseline? face speed anim override-dir]}] (let [{start-x :x start-y :y} (get-in @entities [:room :entities target-id]) final-x (int final-x) @@ -187,6 +188,18 @@ (terminate [this screen entities] entities) (can-skip? [this screen entities] false))) +(defn stop-walking [entities target-id & {:keys [face]}] + (run-action entities + (begin [this screen entities] + (stop screen entities target-id :face face)) + + (continue [this screen entities] entities) + + (done? [this screen entities] true) + + (terminate [this screen entities] entities) + (can-skip? [this screen entities] false))) + (defn walk-to [entities target-id [final-x final-y] & {:keys [can-skip? face]}] (let [{start-x :x start-y :y} (get-in @entities [:room :entities target-id]) final-x (int final-x) diff --git a/desktop/src-common/advent/screens/rooms/inside_jail.clj b/desktop/src-common/advent/screens/rooms/inside_jail.clj index 8ec11f5e..79e81b82 100644 --- a/desktop/src-common/advent/screens/rooms/inside_jail.clj +++ b/desktop/src-common/advent/screens/rooms/inside_jail.clj @@ -1,5 +1,6 @@ (ns advent.screens.rooms.inside-jail - (:require [advent.screens.rooms :as rooms] + (:require [clojure.core.async :refer [chan]] + [advent.screens.rooms :as rooms] [advent.actions :as actions] [advent.screens.items :as items] [advent.utils :as utils] @@ -30,6 +31,9 @@ (actions/do-dialogue entities :ego "Hey!" :ego "All my possessions are in here!") + (actions/update-state entities #(-> % + (assoc :inventory (concat (:inventory %) (:chest-contents %))) + (assoc :chest-contents []))) (when (not (actions/has-obtained? entities :rope)) (actions/do-dialogue entities :ego "Looks like there's some rope in here too."))) @@ -121,6 +125,11 @@ :ego "Maybe you should give it a rest."))) (actions/update-state entities #(assoc % :hay-searches (inc hay-searches))))) +(defn go-to-jail [entities] + (actions/update-state entities #(assoc % :chest-contents (remove #{:key} (:inventory %)))) + (actions/update-state entities #(assoc % :inventory [])) + (actions/update-state entities #(assoc % :opened-bars? false)) + (actions/transition-background entities :inside-jail [130 85])) (defn make [screen] @@ -152,10 +161,40 @@ :script (actions/get-script entities (search-hay entities))} :chest {:box [194 62 228 99] - :script (actions/get-script entities (touch-chest entities))}} + :script (actions/get-script entities (touch-chest entities))} + :door {:box [257 62 301 152] + :cursor :down + :script (actions/get-script entities + (if (get-in @entities [:state :opened-bars?]) + (do + (actions/walk-to entities :ego [279 57]) + (actions/transition-background entities :outside-jail [50 46] )) + (actions/talk entities :ego "Do you really think I can walk down those steps while I'm locked up?")))}} :layers [(assoc (texture "inside-jail/background.png") :x 0 :y 0 :baseline 0) (assoc (texture "inside-jail/bars.png") :x 0 :y 0 :baseline 165) (assoc (texture "inside-jail/glow.png") :x 0 :y 0 :baseline 240)] + :hotspots [{:box [121 40 258 44] + :fn (fn [screen entities] + + (let [is-walking? (#{(get-in entities [:room :entities :ego :left :walk]) + (get-in entities [:room :entities :ego :right :walk])} (get-in entities [:room :entities :ego :anim]))] + (if is-walking? + (let [entities (-> entities + (update-in [:actions] #(assoc % :channel (chan) :current nil :started? false)) + (update-in [:room :entities :ego] #(actions/start-animation screen % :stand)))] + ((actions/get-script entities + (actions/stop-walking entities :ego) + (actions/do-dialogue entities + :ego "*creak*" + :ego "Oops!" + :warden "Hey! What are you doing?" + :warden "Get back in jail.") + (go-to-jail entities) + (actions/do-dialogue entities :warden "Now don't let me catch you trying to escape again.") + (actions/play-animation entities :warden :fall-asleep :stop? false) + (actions/begin-animation entities :warden :sleep)) entities) + entities) + entities)))}] :entities {:warden (assoc (texture "inside-jail/warden.png" ) :x 40 :y 60 :baseline 166 :stand warden-stand @@ -192,7 +231,7 @@ :start-pos [130 85] :apply-state (fn [entities] (as-> entities entities - (if (actions/has-item? entities :ball-n-chain) + (if (actions/has-obtained? entities :ball-n-chain) (update-in entities [:room :entities] #(dissoc % :ball-n-chain)) entities) (if (get-in entities [:state :warden-sleeping?]) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 00b8021c..ee832cea 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -252,6 +252,13 @@ (assoc entities :actions {:channel channel :current current :started? false :script-running? (get-in entities [:actions :script-running?])})))) +(defn update-from-hotspots [screen entities] + (if-let [hot-spots (get-in entities [:room :hotspots])] + (if-let [hotspot-hit (first (filter #((apply zone/box (:box %)) (get-in entities [:room :entities :ego :x]) (get-in entities [:room :entities :ego :y])) hot-spots))] + ((:fn hotspot-hit) screen entities) + entities) + entities)) + (defn update-cursor [screen {{:keys [current override last]} :cursor :as entities}] (let [new-current (or override current)] (when-not (= new-current @@ -349,6 +356,7 @@ (clear!) (let [entities (update-cursor screen entities) entities (update-from-script 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