From 546bbccb3df8f499c10ec48a6b8520e4521cc98a Mon Sep 17 00:00:00 2001 From: Remington Covert Date: Mon, 8 Dec 2014 23:27:08 -0800 Subject: [PATCH] more detail on the screen. --- desktop/resources/butterfly.png | Bin 0 -> 1256 bytes desktop/resources/outside-castle/bird.png | Bin 1533 -> 1149 bytes desktop/resources/outside-castle/flies.png | Bin 0 -> 1221 bytes desktop/resources/outside-castle/steer.png | Bin 16935 -> 2867 bytes .../advent/screens/rooms/outside_castle.clj | 72 ++++++++++++++---- desktop/src-common/advent/screens/scene.clj | 6 ++ 6 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 desktop/resources/butterfly.png create mode 100644 desktop/resources/outside-castle/flies.png diff --git a/desktop/resources/butterfly.png b/desktop/resources/butterfly.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6e04399b514b2cb2874ae779326ff09ed28043 GIT binary patch literal 1256 zcmVP)4Tx05}naRo`#hR1`jmZ&IWdKOk5~hl<6oRa0BJ8yc;~21%2p?MfD<>DVeH z9(p*dx19w`~g7O0}n_%Aq@s%d)fBDv`JHkDym6Hd+5XuAtvnwRpGmK zVkc9?T=n|PIo~X-eVh__(Z?q}P9Z-Dj?gOW6|D%o20XmjW-qs4UjrD(li^iv8@eK9k+ZFm zVRFymFOPAzG5-%Pn|1W;U4vNroTa&AxDScmEA~{ri9gr1^c?U@uwSpaNnw8l_>cP1 zd;)kMQS_;jeRSUEM_*s96y65j1$)tOrwdK{YIQMt92l|D^(E_=$Rjw{b!QT@q!)ni zR`|5oW9X5n$Wv+HVc@|^eX5yXnsHX8PF3UX~a6)MwxDE0HaPjyrlI!;jX{6Kvuh*8ej?;85ekN$?5uuCiS zBTvvVG+XTxAO{m@bvM#Jr)z6J><&E22D|vq?Y?Vkbo_DijopiF$2PET#mZ8eu=y$(ArYkv7@Ex`GL?QCc!_*KFrd&;n1r7 zqW-CFs9&fT)ZaU5gc&=gBz-DaCw(vdOp0__x+47~U6sC(E(JNe@4cTT*n6*E zVH4eoU1-&7pEV~_PRe`a7v+@vy!^5}8?Y3)UmlaER0001gNklwooZ5)nH~9@jHiMzOgwdi13MRWf+G`njxgN@xNAD!3H> delta 472 zcmey%@t0e%Gr-TCmrII^fq{Y7)59f*fq|I^$QI*Z1CqJ7q@_118nM(fPVsbc45?sz zd&`ioL4k)g;8E!un~v}HeSJJR4jj7YPtI8Ir8aocLJ@XGCKe6>1&0O(A{o~>_MHE_ zwsO*P9GV)1S^sp__fOn4C+SJbG?3XFb~dnp_#ya&d2w=5>)XMksU?TmTKYfxq#0By?%#APVIn*WnM&w3rZmBV%PSZ a^G}MK#BGV!I_H3q#o+1c=d#Wzp$Py8EOfj8 diff --git a/desktop/resources/outside-castle/flies.png b/desktop/resources/outside-castle/flies.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5b5bdbd101aca8762c32a3b5c332c51e48be63 GIT binary patch literal 1221 zcmV;$1UmbPP)4Tx05}naRo`#hR1`jmZ&IWdKOk5~hl<6oRa0BJ8yc;~21%2p?MfD<>DVeH z9(p*dx19w`~g7O0}n_%Aq@s%d)fBDv`JHkDym6Hd+5XuAtvnwRpGmK zVkc9?T=n|PIo~X-eVh__(Z?q}P9Z-Dj?gOW6|D%o20XmjW-qs4UjrD(li^iv8@eK9k+ZFm zVRFymFOPAzG5-%Pn|1W;U4vNroTa&AxDScmEA~{ri9gr1^c?U@uwSpaNnw8l_>cP1 zd;)kMQS_;jeRSUEM_*s96y65j1$)tOrwdK{YIQMt92l|D^(E_=$Rjw{b!QT@q!)ni zR`|5oW9X5n$Wv+HVc@|^eX5yXnsHX8PF3UX~a6)MwxDE0HaPjyrlI!;jX{6Kvuh*8ej?;85ekN$?5uuCiS zBTvvVG+XTxAO{m@bvM#Jr)z6J><&E22D|vq?Y?Vkbo_DijopiF$2PET#mZ8eu=y$(ArYkv7@Ex`GL?QCc!_*KFrd&;n1r7 zqW-CFs9&fT)ZaU5gc&=gBz-DaCw(vdOp0__x+47~U6sC(E(JNe@4cTT*n6*E zVH4eoU1-&7pEV~_PRe`a7v+@vy!^5}8?Y3)UmlaER00017Nkl^oB~Ddu z(8Us}x)_IHwDt&I^YKdJaPY7d9t{j)qLyBvL@#@Y@iSG_(8NQe7)pv-qI^ts1BtSg jPKt)L=jarML&F*Xd|4DYiv?2F00000NkvXXu0mjfl%z<8 literal 0 HcmV?d00001 diff --git a/desktop/resources/outside-castle/steer.png b/desktop/resources/outside-castle/steer.png index 94027295068760956c1dea8153e9fb437f09ef38..bb63f21d11794e352b4eb3ebefe1a616d3eb52ab 100644 GIT binary patch literal 2867 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 RY={5=002ovPDHLkV1j;Jp0@x1 literal 16935 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 diff --git a/desktop/src-common/advent/screens/rooms/outside_castle.clj b/desktop/src-common/advent/screens/rooms/outside_castle.clj index 7646f5af..7645f52b 100644 --- a/desktop/src-common/advent/screens/rooms/outside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/outside_castle.clj @@ -7,6 +7,7 @@ [play-clj.core :refer :all] [play-clj.ui :refer :all] [play-clj.utils :refer :all] + [play-clj.math :refer :all] [play-clj.g2d :refer :all])) (defn make [screen] @@ -18,11 +19,18 @@ balloon-sheet (texture! (texture "outside-castle/balloons.png") :split 20 36) balloon-stand (animation 0.3 (for [i [0 1 2 1]] (aget balloon-sheet 0 i))) - bird-sheet (texture! (texture "outside-castle/bird.png") :split 60 22) - bird-order [0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ] - bird-stand (animation 0.15 (for [i (concat bird-order - (reverse bird-order))] + bird-sheet (texture! (texture "outside-castle/bird.png") :split 1 2) + bird-stand (animation 0.15 (for [i [0 1]] (aget bird-sheet 0 i))) + butterfly-sheet (texture! (texture "butterfly.png") :split 7 7) + butterfly-stand (animation 0.1 (for [i [0 1]] + (aget butterfly-sheet 0 i))) + 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))) + flies-sheet (texture! (texture "outside-castle/flies.png") :split 15 15) + flies-stand (animation 0.075 (for [i [0 1 2 1]] + (aget flies-sheet 0 i))) ] (rooms/make :music :town-2 :interactions @@ -133,15 +141,19 @@ (assoc (texture "outside-castle/peddler.png") :x 110 :y 90 :baseline 150 :anim nil :talk peddler-talk :stand peddler-stand) :stand) - :steer (assoc (texture "outside-castle/steer.png" ) :x 203 :y 155 :baseline 80 - :script (actions/get-script entities - (actions/talk entities :ego "That is one buff bull!")) - :scripts {:grass (actions/get-script entities - (actions/walk-to entities :ego [168 150] :face :right) - (actions/play-animation entities :ego :reach) - (actions/remove-item entities :grass) - (actions/talk entities :ego "Eww! He slobbered on my hand.") - (actions/give entities :slobber))}) + :steer (actions/start-animation screen (assoc (animation->texture screen steer-stand) :x 203 :y 155 :baseline 80 + :stand steer-stand + :script (actions/get-script entities + (actions/do-dialogue entities + :ego "It's Angus, Remington's buff bull." + :ego "Farmer doug feeds him a special grass diet to keep him in tip top shape.")) + :scripts {:grass (actions/get-script entities + (actions/walk-to entities :ego [168 150] :face :right) + (actions/play-animation entities :ego :reach) + (actions/remove-item entities :grass) + (actions/talk entities :ego "Eww! He slobbered on my hand.") + (actions/give entities :slobber))}) + :stand) :balloons (actions/start-animation screen (assoc (animation->texture screen balloon-stand) :x 75 @@ -153,10 +165,40 @@ :stand) :bird (actions/start-animation screen (assoc (animation->texture screen bird-stand) + :x 0 + :y 0 + :baseline 21 + :stand bird-stand + :path (catmull-rom-spline (map #(apply vector-2* %) (as-> [[82 235] [134 215] [185 235] [165 238] + [220 225] [210 230] [250 235]] p + (concat p (reverse p)))) true) + :update-fn (fn [screen entities entity] + (let [speed 0.05 + 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))))) + :stand) + :butterfly (actions/start-animation screen + (assoc (animation->texture screen butterfly-stand) :x 161 :y 218 - :baseline 21 - :stand bird-stand) + :baseline 240 + :stand butterfly-stand + :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))))) + :stand) + :flies (actions/start-animation screen + (assoc (animation->texture screen flies-stand) + :x 241 + :y 175 + :baseline 240 + :stand flies-stand) :stand)} :collision "outside-castle/collision.png" :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.00) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index fb49be34..4a443fde 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -273,6 +273,12 @@ (if (:anim entity) [id (animate entity screen)] [id entity]))))) + entities (update-in entities [:room :entities] (fn [entities] + (into entities + (for [[id entity] entities] + (if (:update-fn entity) + [id ((:update-fn entity) screen entities entity)] + [id entity]))))) all-entities (concat (vals entities) (get-in entities [:room :layers]) (vals (get-in entities [:room :entities])))] (label! (:fps entities) :set-text (str (game :fps))) (render! screen (sort-by :baseline all-entities))