From e7c2acead2370869416caad5041dc4c945b59e18 Mon Sep 17 00:00:00 2001 From: Remington Covert Date: Wed, 10 Dec 2014 18:05:35 -0800 Subject: [PATCH] adding more detail. --- desktop/resources/inside-castle/collision.png | Bin 5406 -> 8684 bytes .../advent/screens/rooms/behind_house.clj | 7 +- .../advent/screens/rooms/inside_castle.clj | 93 +++++++++++++----- .../advent/screens/rooms/outside_castle.clj | 16 +-- .../advent/screens/rooms/outside_house.clj | 19 +++- 5 files changed, 94 insertions(+), 41 deletions(-) diff --git a/desktop/resources/inside-castle/collision.png b/desktop/resources/inside-castle/collision.png index 93a41064c7100155639c0ee41e5cbd641d35c807..64484487e1081fe506c5da8f77f939b7e29e55b6 100644 GIT binary patch literal 8684 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 As{jB1 literal 5406 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 diff --git a/desktop/src-common/advent/screens/rooms/behind_house.clj b/desktop/src-common/advent/screens/rooms/behind_house.clj index 4a20d82d..a48c5581 100644 --- a/desktop/src-common/advent/screens/rooms/behind_house.clj +++ b/desktop/src-common/advent/screens/rooms/behind_house.clj @@ -37,7 +37,9 @@ :script (actions/get-script entities (actions/walk-to entities :ego [128 100]) - (actions/talk entities :ego "I can see Fangald moving around in there but it's hard to see at this angle."))}} + (actions/do-dialogue entities + :ego "I can see Gandarf moving around in the corner of the room." + :ego "It's hard to make out from this angle."))}} :layers [(assoc (texture "behindhouse/background.png") :x 0 :y 0 :baseline 0) (assoc (texture "behindhouse/house.png") :x 0 :y 0 :baseline 122) (assoc (texture "behindhouse/brush.png") :x 0 :y 0 :baseline 240)] @@ -66,7 +68,8 @@ (actions/talk entities :ego "It looks like the wall is crumbling here.") (actions/play-animation entities :ego :reach) (actions/update-entity entities :peeling #(assoc % :opacity 0)) - (actions/update-state entities (fn [state] (assoc state :opened-crack? true)))))))} + (actions/update-state entities (fn [state] (assoc state :opened-crack? true))))))) + :bird (utils/make-bird screen [[50 235] [80 220] [100 239] [180 235] [85 225]])} :collision "behindhouse/collision.png" :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00) :apply-state (fn [entities] diff --git a/desktop/src-common/advent/screens/rooms/inside_castle.clj b/desktop/src-common/advent/screens/rooms/inside_castle.clj index 141a644a..284e8366 100644 --- a/desktop/src-common/advent/screens/rooms/inside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/inside_castle.clj @@ -4,6 +4,8 @@ [advent.screens.items :as items] [advent.utils :as utils] [clojure.zip :as zip] + [clojure.set :as set] + [clojure.string :as str] [play-clj.core :refer :all] [play-clj.ui :refer :all] [play-clj.utils :refer :all] @@ -26,8 +28,7 @@ (defn nice-trophy-dialogue [entities] {:run #(actions/respond entities % - :game-player "Thanks. I was nominated the Riddlemaster of Remington for the 7th straight year!" - :game-player "I guess I'm pretty wise." + :game-player "Thanks. I'm the reigning champ in the annual Town of Remington Junior Smarty Pants Derby." :game-player "And with my sharp intellect, I'm guessing you want my trophy?") :choices ["Yes." {:run #(do (actions/update-state entities (fn [state] (assoc state :current-riddle :wool))) @@ -41,8 +42,7 @@ :ego "Okay."))} "No." {:run #(actions/respond entities % - :game-player "That's exactly what I'd expect a dummy like you to say.") - }]}) + :game-player "That's exactly what I'd expect a dummy like you to say.")}]}) (defn walk-to-player [entities] (actions/walk-to entities :ego [210 73] :face :right)) @@ -55,16 +55,19 @@ {:run #(actions/respond entities % :game-player "It is said that only he who is worthy in wisdom can pull the sword!" :game-player "I, of course have such wisdom, but I'm still unable to pull it myself.") - :choices ["Can you teach me your ways?" + :choices ["How'd you get to be so wise?" {:run #(actions/respond entities % - :game-player "Ha! My intellect has only been achieved with years of precise training!" - :game-player "You're out of luck, friend. Unless you are willing to spend hours and hours in careful study, you will always be a dunce." - :ego "...") + :game-player "Ever heard of the annual Town of Remington Junior Smarty Pants Derby?" + :ego "I don't think so..." + :game-player "I'm the three times town champ!" + :game-player "My intellect has only been achieved with years of precise training!" + :ego "..." + :game-player "It would take years of careful honing of your skills to be as wise as I am.") :choices actions/previous-choices} - "How come?" + "Why don't you pull the sword?" {:run #(actions/respond entities % :game-player "You must be mighty in strength to pull the sword." - :game-player "And I spend all of my time either playing my game, or at the library.") + :game-player "And I spend all my time studying!") :choices actions/previous-choices} "Something else." {:choices actions/something-else}]} @@ -95,6 +98,32 @@ "Nevermind." {:run #(actions/respond entities % :game-player "See you around.")}]})) + +(defn pull-sword [entities] + (actions/play-animation entities :ego :reach) + (actions/talk entities :ego "I got it! I will become the greatest knight Remington has ever known!")) + +(defn try-to-pull-sword [entities missing-items obtained-items] + (actions/give entities :certificate) + (actions/give entities :medal) + (let [item->proof {:trophy "wisdom" :medal "strength" :certificate "courage"}] + (actions/play-animation entities :ego :reach) + (actions/do-dialogue entities + :ego "I can't pull it out!" + :ego "It looks like there's an enscription here.") + (actions/play-animation entities :ego :squat) + (actions/do-dialogue entities + :ego "The Sword of Blergh with magic sting," + :ego "shall yield to no earthly king." + :ego "Worthy in wisdom, courage, and might," + :ego "only then with sword he'll fight.") + (if (= 3 (count missing-items)) + (actions/do-dialogue entities :ego "I have to prove myself worthy in wisdom, courage, and might!") + (actions/do-dialogue entities :ego (str "I've proven myself in " + (str/join " and " (map item->proof obtained-items)) + ", but still have to prove myself in " + (str/join " and " (map item->proof missing-items)) + "."))))) (defn make [screen] (let [game-player-talk-sheet (texture! (texture "inside-castle/game-player-talk.png") :split 40 44) game-player-talk (animation 0.15 (for [i [0 2 0 2 0 2 0 3 0 2 0 1 0 0 0 0 2 0 2 0 3 0 1 0 1 0 0 1 0 2 0 3 0]] @@ -127,20 +156,35 @@ :script (actions/get-script entities (actions/talk entities :ego "That's the coolest sword I've ever seen!!") (actions/walk-to entities :ego [37 134] :face :left) - (actions/talk entities :ego "Maybe I can pull it out.") - (actions/play-animation entities :ego :reach) - (actions/do-dialogue entities - :ego "I can't pull it out!" - :ego "It looks like there's an enscription here.") - (actions/play-animation entities :ego :squat) - (actions/do-dialogue entities - :ego "The Sword of Blergh with magic sting," - :ego "shall yield to no earthly king." - :ego "Worthy in wisdom, courage, and might," - :ego "only then with sword he'll fight."))} + (actions/talk entities :ego "If I pull it out I can become a great knight!") + (let [missing-items (set/difference #{:trophy :medal :certificate} (get-in @entities [:state :obtained-items])) + obtained-items (set/intersection #{:trophy :medal :certificate} (get-in @entities [:state :obtained-items]))] + (if (= #{} missing-items) + (pull-sword entities) + (try-to-pull-sword entities missing-items obtained-items)) + ))} :sign {:box [125 140 165 155] :script (actions/get-script entities - (actions/talk entities :ego "Ye Ol' Antique Shoppe."))}} + (actions/talk entities :ego "Ye Ol' Antique Shoppe."))} + :background-houses {:box [84 145 126 180] + :script (actions/get-script entities + (actions/walk-to entities :ego [79 145] :face :right) + (actions/talk entities :ego "Those are just a bunch of townsfolk houses."))} + :mid-house {:box [217 125 250 180] + :script (actions/get-script entities + (actions/do-dialogue entities + :ego "That's Billy Billigan's house." + :ego "He's probably still angry from when I put his dog in the dryer."))} + :frankie-house {:box [251 140 266 160] + :script (actions/get-script entities + (actions/do-dialogue entities + :ego "That's Frankie Rockfist's house." + :ego "The last time I saw him, he socked me one, right in the kisser."))} + :georgia-house {:box [271 150 286 170] + :script (actions/get-script entities + (actions/do-dialogue entities + :ego "That's Georgia McGorgeous' house." + :ego "One day, when I'm a knight, I'll ask her to be my girlfriend."))}} :layers [(assoc (texture "inside-castle/background.png") :x 0 :y 0 :baseline 0) (assoc (texture "inside-castle/pedestal-overlay.png") :x 0 :y 0 :baseline 135)] :entities {:bird-1 (utils/make-bird screen (as-> [[185 235] @@ -194,7 +238,10 @@ :game-player "You have earned my trophy.") (actions/give entities :trophy) (actions/remove-entity entities :trophy)) - (actions/talk entities :ego "He doesn't need it.")))} + (actions/talk entities :ego "He doesn't need it."))) + :trophy (actions/get-script entities + (walk-to-player entities) + (actions/talk entities :game-player "You can keep the trophy. You've earned it."))} :anim game-player-stand :anim-start 0 :stand game-player-stand diff --git a/desktop/src-common/advent/screens/rooms/outside_castle.clj b/desktop/src-common/advent/screens/rooms/outside_castle.clj index 3b064ce9..049d6640 100644 --- a/desktop/src-common/advent/screens/rooms/outside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/outside_castle.clj @@ -19,7 +19,7 @@ balloon-sheet (texture! (texture "outside-castle/balloons.png") :split 20 36) balloon-stand (animation 0.25 (for [i [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 0 1 2 1 0 1 2 1 0 1 2 1 0 1 2]] (aget balloon-sheet 0 i))) - butterfly-stand (utils/make-anim "butterfly.png" [7 7] 0.1 [0 1]) + steer-sheet (texture! (texture "outside-castle/steer.png") :split 50 35) steer-stand (animation 0.2 (for [i [0 0 0 0 0 0 0 0 0 1 0 2 0 1 0 2 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 0 0 0 0]] (aget steer-sheet 0 i))) @@ -166,19 +166,7 @@ :bird (utils/make-bird screen (as-> [[82 235] [134 215] [185 235] [165 238] [220 225] [210 230] [250 235]] p (concat p (reverse p)))) - :butterfly (assoc (animation->texture screen butterfly-stand) - :x 161 - :y 218 - :baseline 240 - :anim butterfly-stand - :anim-start 0 - :path (catmull-rom-spline (map #(apply vector-2* %) (take 10 (repeatedly #(vector (rand-int 320) (rand-int 180))))) true) - :update-fn (fn [screen entities entity] - (let [speed 0.009 - pos-f (- (* (:total-time screen) speed) (int (* (:total-time screen) speed))) - v (vector-2 0 0) - a (catmull-rom-spline! (:path entity) :value-at v pos-f)] - (assoc entity :x (vector-2! v :x) :y (vector-2! v :y))))) + :flies (assoc (animation->texture screen flies-stand) :x 201 :y 175 diff --git a/desktop/src-common/advent/screens/rooms/outside_house.clj b/desktop/src-common/advent/screens/rooms/outside_house.clj index 3950b376..64670421 100644 --- a/desktop/src-common/advent/screens/rooms/outside_house.clj +++ b/desktop/src-common/advent/screens/rooms/outside_house.clj @@ -6,6 +6,7 @@ [clojure.zip :as zip] [play-clj.core :refer :all] [play-clj.ui :refer :all] + [play-clj.math :refer :all] [play-clj.utils :refer :all] [play-clj.g2d :refer :all])) @@ -118,7 +119,8 @@ sheep-stand (animation 0.15 (for [i (flatten [(repeat 10 0) 1 2 3 4 5 6 7 4 5 6 7 8 9 10 (repeat 25 11) (repeat 15 12)])] (aget sheep-stand-sheet 0 i))) sheep-walk (animation 0.05 (for [i (range 6)] - (aget sheep-walk-sheet 0 i)))] + (aget sheep-walk-sheet 0 i))) + butterfly-stand (utils/make-anim "butterfly.png" [7 7] 0.1 [0 1])] (rooms/make :music :town-2 :interactions {:door {:box [258 100 281 160] @@ -194,7 +196,20 @@ :stand (utils/flip sheep-stand)} :right {:walk sheep-walk :stand sheep-stand}) - sheep-stand)} + sheep-stand) + :butterfly (assoc (animation->texture screen butterfly-stand) + :x 161 + :y 218 + :baseline 240 + :anim butterfly-stand + :anim-start 0 + :path (catmull-rom-spline (map #(apply vector-2* %) (take 10 (repeatedly #(vector (rand-int 320) (rand-int 180))))) true) + :update-fn (fn [screen entities entity] + (let [speed 0.009 + pos-f (- (* (:total-time screen) speed) (int (* (:total-time screen) speed))) + v (vector-2 0 0) + a (catmull-rom-spline! (:path entity) :value-at v pos-f)] + (assoc entity :x (vector-2! v :x) :y (vector-2! v :y)))))} :collision "outsidehouse/collision.png" :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00) :apply-state (fn [entities]