From ff8a38c246403a5a7d6f103615d7fda4537ccdda Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Mon, 11 May 2015 07:45:27 -0700 Subject: [PATCH] working on held. --- desktop/resources/ego/base.png | Bin 1757 -> 1661 bytes desktop/resources/ego/suspended.png | Bin 0 -> 1760 bytes desktop/resources/ego/suspended.pxa/0.pxi | Bin 0 -> 264078 bytes .../resources/ego/suspended.pxa/CelData.plist | 10 + desktop/resources/held/background.png | Bin 0 -> 10836 bytes desktop/resources/held/background.psd | Bin 0 -> 494504 bytes desktop/resources/held/collision.png | Bin 0 -> 15168 bytes desktop/src-common/advent/actions.clj | 2 +- desktop/src-common/advent/screens/#scene.clj# | 1025 +++++++++++++++++ desktop/src-common/advent/screens/.#scene.clj | 1 + .../advent/screens/rooms/behind_house.clj | 2 +- .../advent/screens/rooms/castle_gate.clj | 2 +- .../advent/screens/rooms/cat_tree.clj | 2 +- .../src-common/advent/screens/rooms/dream.clj | 2 +- .../src-common/advent/screens/rooms/held.clj | 29 + .../advent/screens/rooms/inside_antique.clj | 2 +- .../advent/screens/rooms/inside_cafeteria.clj | 2 +- .../advent/screens/rooms/inside_castle.clj | 2 +- .../advent/screens/rooms/inside_house.clj | 2 +- .../advent/screens/rooms/inside_jail.clj | 2 +- .../advent/screens/rooms/inside_stash.clj | 2 +- .../advent/screens/rooms/outside_castle.clj | 2 +- .../advent/screens/rooms/outside_house.clj | 2 +- .../advent/screens/rooms/outside_jail.clj | 2 +- .../src-common/advent/screens/rooms/space.clj | 8 +- desktop/src-common/advent/screens/scene.clj | 11 +- 26 files changed, 1093 insertions(+), 19 deletions(-) create mode 100644 desktop/resources/ego/suspended.png create mode 100644 desktop/resources/ego/suspended.pxa/0.pxi create mode 100644 desktop/resources/ego/suspended.pxa/CelData.plist create mode 100644 desktop/resources/held/background.png create mode 100644 desktop/resources/held/background.psd create mode 100644 desktop/resources/held/collision.png create mode 100644 desktop/src-common/advent/screens/#scene.clj# create mode 120000 desktop/src-common/advent/screens/.#scene.clj create mode 100644 desktop/src-common/advent/screens/rooms/held.clj diff --git a/desktop/resources/ego/base.png b/desktop/resources/ego/base.png index ee0cd58638cfe20043b3f1d42833391f953884d2..c84ed2512a25e2a7c603c1ab86c91269d4d309b7 100644 GIT binary patch delta 600 zcmV-e0;m1m4gCxuiBL{Q4GJ0x0000DNk~Le0000I0000a2nGNE0EF#o=dmF(1b-As zL_t(Y4P#&!DDdQ%`G0J7vtScM7n@Tg4A;D4%^h@UFrN`!6l5bvu}6ps1G1)L5C4Ic z&RhE)Lk~y-MG)C$WD8cG<6#Ij`T`b8>3fT!2c{0gYapASzU5<>m2AwwB4Gwr=jjPk z4y5}kkT?h?6M_k0S;;fO4M}R94u2NplC@@lvC-AT_!tJc8rp+h0@A!<#uAu1hI!SQ za5gpuhS&aI`@z5MfhLqKBkvFotv!72#S_@L4YoCq1UIAG@BGz6po#cOaKKt>ABL4Pn86lNf7 zvgQ)9GzJ^1i*hzd{J(MaGlPaUFI)qN4+49tzhc#c;UbtJFcUxq>_|_88w!$#$syAi zrn|IqV^s*!bn%oVgTC2wtggav5wa~X_Jc{qU?$5OUa(;>aby~&L07k_!PP0`^}^Y> z7&s03BLWFrkVcq`a2Wy;$A2&g6b|TsA{U_>Mu?B$B0?HYYazl8SuKV^uQ%Rdob$z= z0h@+14dD!|PIk!p;cSdz1SA7fEVN)ETp@@dU9F0d?qCXVN`ytMNR;XHPy_%ZtDl5}+iHOT0000taO%DJBvL2F^zH<7fU~Hr9#g*qGxt(cn&?^|d>SZroR|7%ZC2!lgJt*~TeEVuEb( zn}_xrE>&jVPk!NO-aM;DHmX-l7+dVeZ^!ZX(T2uU$cD(bVL%!{lH zem=_yi^I-DFm11oD^;80>(AyU@_+xg=0?Y+#)r2bFD@uo*!-}mBxym5f`;)D`TeIp zJg+~hx#R2p@3Kh@4;z^xil1D*EBoKEuO(Gz#$$)1Pa9uvc-6Rap;_P~<3!mhk}p{lepuTnHyvCJlky*DdlJ@StyY|g*Zc*ChxWaC8v z71b>sL9g`=_6MzL`0*l1MbabpX!AM8E8iY;81ggZ&7a>g=^fvLTfo%F;OXk;vd$@? F2>_prB;No4 diff --git a/desktop/resources/ego/suspended.png b/desktop/resources/ego/suspended.png new file mode 100644 index 0000000000000000000000000000000000000000..f54fbebc5b8de97ca095750f5c63a96da2c45e46 GIT binary patch literal 1760 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 Wk?iLqK5@+LpX}#r=cl>(#s31;_zI{1 literal 0 HcmV?d00001 diff --git a/desktop/resources/ego/suspended.pxa/CelData.plist b/desktop/resources/ego/suspended.pxa/CelData.plist new file mode 100644 index 00000000..0e12daec --- /dev/null +++ b/desktop/resources/ego/suspended.pxa/CelData.plist @@ -0,0 +1,10 @@ + + + + + + duration + 1 + + + diff --git a/desktop/resources/held/background.png b/desktop/resources/held/background.png new file mode 100644 index 0000000000000000000000000000000000000000..208515669ca578a3d467b1826a9c92c7c21b5570 GIT binary patch literal 10836 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 literal 0 HcmV?d00001 diff --git a/desktop/resources/held/background.psd b/desktop/resources/held/background.psd new file mode 100644 index 0000000000000000000000000000000000000000..cc0d5ce63b91745d0e1117e85a0202e2dec8b4b9 GIT binary patch literal 494504 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

    -?91zEkmra)Hm4etNS}? zeZ#hCsc!&-`3+mY0OHGW)i=O2r^B8`=o`)Y2>7&i{UnWx+Xi`dLQj1|;Z}O;8w%^= z^F54u;5*|;IKkKioUz+U_US65)`n_U@+ z`UcI2tLRxXsxLFs54cX%7exw?#!=Ka=-UAW@EsX**7+&EMB=!Rg(&wK6IS0~?Mj4M zn5su=JkJ<@Ud~}!zk(-tjBJJY+S?-8TBiM+Zo4?nWhNODHJ)C);HKQ z+M5zCbqf>XM?Zq*eIl)INZX*IEv;|Z2Hh?74avU%k^RdL`nU1)Z$bP`{w;$~rvLJT z{xv`SyM2EZ{^bY#+YlSoH~i)Q%MU|&eZx>*-!K$+#QBpOiU)mvNK0PdU@g@SpSEy+ zJrqJy>u_m{r^WRLv_&0xeS@{c{c+v`a{nqcuHG^j^jEDVuWqoGpg*r}7MEhT>Z~;-B9~`(Renz<@x!qS3UXp+oF^ zqF2KQhlcWs22jI}T5rqH;9y?S&=K{o(x$p_(C~?8RigHTv98jWKyOL%*ZP z^rJyG66HA8UUuUSZD>W|?fHZJNt zn#J`;c~4%=U^8K5dR%V=f37#LX6X0goW5vK=IULyH=;L@EU#u@gvKR3F+Aqg3?SA9 z_x29zb6X9lB2nQ=eeCyQTRL#)a z($U`^!b{v6;2^brKeRkp9b&t-hHh^^gq7Y(zq~#kS{Mw6A{PyP;N)>cvkQm(P;)gy zhlW±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 L>3n! chan go thread take! alts!!]]) + (:import [com.badlogic.gdx.graphics Pixmap Pixmap$Filter Texture Texture$TextureFilter GL20 GL30] + [com.badlogic.gdx.graphics.g2d TextureRegion Animation Batch] + [com.badlogic.gdx.math Vector3 Matrix4] + [com.badlogic.gdx.utils.viewport FitViewport] + [com.badlogic.gdx.scenes.scene2d Actor Stage] + [com.badlogic.gdx.graphics.glutils ShaderProgram] + [java.lang Object] + [com.badlogic.gdx Gdx] + [com.badlogic.gdx.graphics Camera Color GL20 OrthographicCamera + PerspectiveCamera Pixmap Pixmap$Format PixmapIO Texture + VertexAttributes$Usage] + [com.badlogic.gdx.scenes.scene2d Actor Stage])) + +(declare hud) + +(def v-shader "attribute vec4 a_position; +attribute vec4 a_color; +attribute vec2 a_texCoord0; + +uniform mat4 u_projTrans; + +varying vec4 v_color; +varying vec2 v_texCoords; + +void main() { + v_color = a_color; + v_texCoords = a_texCoord0; + gl_Position = u_projTrans * a_position; +}") + + + +(def pix-shader " +#ifdef GL_ES +#define LOWP lowp + precision mediump float; +#else + #define LOWP +#endif + +varying LOWP vec4 v_color; +varying vec2 v_texCoords; +uniform float multiply_amount; +uniform float hue_amount; + +uniform sampler2D u_texture; + +vec3 RGBToHSL(vec3 color) +{ + vec3 hsl; // init to 0 to avoid warnings ? (and reverse if + remove first part) + + float fmin = min(min(color.r, color.g), color.b); //Min. value of RGB + float fmax = max(max(color.r, color.g), color.b); //Max. value of RGB + float delta = fmax - fmin; //Delta RGB value + + hsl.z = (fmax + fmin) / 2.0; // Luminance + + if (delta == 0.0)//This is a gray, no chroma... + { + hsl.x = 0.0;// Hue + hsl.y = 0.0;// Saturation + } + else //Chromatic data... + { + if (hsl.z < 0.5) + hsl.y = delta / (fmax + fmin); // Saturation +else +hsl.y = delta / (2.0 - fmax - fmin); // Saturation + +float deltaR = (((fmax - color.r) / 6.0) + (delta / 2.0)) / delta; +float deltaG = (((fmax - color.g) / 6.0) + (delta / 2.0)) / delta; +float deltaB = (((fmax - color.b) / 6.0) + (delta / 2.0)) / delta; + +if (color.r == fmax ) +hsl.x = deltaB - deltaG; // Hue +else if (color.g == fmax) +hsl.x = (1.0 / 3.0) + deltaR - deltaB; // Hue +else if (color.b == fmax) + hsl.x = (2.0 / 3.0) + deltaG - deltaR; // Hue + + if (hsl.x < 0.0) + hsl.x += 1.0; // Hue + else if (hsl.x > 1.0) + hsl.x -= 1.0; // Hue + } + + return hsl; +} + +float HueToRGB(float f1, float f2, float hue) +{ + if (hue < 0.0) + hue += 1.0; + else if (hue > 1.0) + hue -= 1.0; + float res; + if ((6.0 * hue) < 1.0) + res = f1 + (f2 - f1) * 6.0 * hue; + else if ((2.0 * hue) < 1.0) + res = f2; + else if ((3.0 * hue) < 2.0) + res = f1 + (f2 - f1) * ((2.0 / 3.0) - hue) * 6.0; + else + res = f1; + return res; +} + +vec3 HSLToRGB(vec3 hsl) +{ + vec3 rgb; + + if (hsl.y == 0.0) + rgb = vec3(hsl.z); // Luminance + else + { + float f2; + + if (hsl.z < 0.5) + f2 = hsl.z * (1.0 + hsl.y); + else + f2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); + + float f1 = 2.0 * hsl.z - f2; + + rgb.r = HueToRGB(f1, f2, hsl.x + (1.0/3.0)); + rgb.g = HueToRGB(f1, f2, hsl.x); + rgb.b= HueToRGB(f1, f2, hsl.x - (1.0/3.0)); + } + + return rgb; +} + +vec3 BlendHue(vec3 base, vec3 blend) +{ + if (blend.r == blend.g && blend.g == blend.b) { + return base; + } + else { + vec3 baseHSL = RGBToHSL(base); + return HSLToRGB(vec3(RGBToHSL(blend).r, baseHSL.g, baseHSL.b)); + } +} + +// Color Mode keeps the brightness of the base color and applies both the hue and saturation of the blend color. +vec3 BlendColor(vec3 base, vec3 blend) +{ + vec3 blendHSL = RGBToHSL(blend); + return HSLToRGB(vec3(blendHSL.r, blendHSL.g, RGBToHSL(base).b)); +} + +#define BlendOpacity(base, blend, F, O) (F(base, blend) * O + blend * (1.0 - O)) + +void main() +{ + + + vec3 multiplied = mix(texture2D(u_texture, v_texCoords).rgb, v_color.rgb * texture2D(u_texture, v_texCoords).rgb, multiply_amount * 0.67 ); + vec3 hued = mix(multiplied, BlendHue(multiplied.rgb, v_color.rgb), hue_amount * 0.67); + vec3 final = hued; + + gl_FragColor = vec4(final[0], final[1], final[2], texture2D(u_texture, v_texCoords).a * v_color.a); +} +") +; + +(def default-interaction + {:get-script (fn [cursor [x y]] (if (= :main cursor) + (actions/get-script entities + (actions/walk-to entities :ego [x y] :can-skip? true)) + (actions/get-script entities + (actions/talk entities :ego "I don't know what to do with that."))))}) + + + + +(defn click-inventory [screen entities] + (when (not (get-in entities [:actions :script-running?])) + (if (= (get-in entities [:cursor :current] ) :main) + (do + (screen! inventory-screen :show-screen :items (map (entities :all-items) (get-in entities [:state :inventory]))) + (-> entities + (assoc-in [:state :active?] false) + (assoc-in [:cursor :override] nil))) + (assoc-in entities [:cursor :current] :main)))) + + +(defn left-click [screen entities] + (let [[x y] (utils/unproject screen)] + (println "clicked " x y) + (let [interaction (first (filter #((:mouse-in? %) entities x y) + (get-in entities [:room :interactions]))) + interactable-entities (if (= (doto (get-in entities [:cursor :current]) println) :main) + (vals (dissoc (get-in entities [:room :entities]) :ego)) + (vals (get-in entities [:room :entities]))) + interacting-entity (first (sort-by (comp - :baseline) + (filter #(and (:mouse-in? %) + (:get-script %) + ((:mouse-in? %) entities x y)) + interactable-entities))) + current-action (get-in entities [:actions :current]) + + ;; TODO - hacky way of resetting queue + entities (if (and current-action (actions/can-skip? current-action screen entities)) + (let [terminated-entities (actions/terminate current-action screen entities)] + (do (put! (actions/get-channel current-action) terminated-entities) + (-> terminated-entities + (assoc-in [:actions :current] nil) + (assoc-in [:actions :started?] false)))) + entities)] + + (if (get-in entities [:actions :script-running?]) + entities + ((or (when interacting-entity + ((:get-script interacting-entity) (get-in entities [:cursor :current]) [x y])) + (when interaction + ((:get-script interaction) (or (when (:cursor interaction) :main) + (get-in entities [:cursor :current])) + [x y])) + + ((:get-script default-interaction) (get-in entities [:cursor :current]) [x y])) entities)) + entities))) + +(defn drink-blergh [entities] + (actions/walk-straight-to entities :ego [205 45]) + (sound! (sound "ego/potion.ogg") :play (utils/current-sound-volume)) + (actions/play-animation entities :ego :grow :stop? false) + (actions/do-dialogue entities + :blergh "What this? A potion of strength?" + :blergh "You're still no match for me." + :blergh "Give it to me, or I'll make you regret it!") + (actions/present-choices entities {:choices ["Ok." + {:run (fn [_] + (actions/talk entities :ego "Ok." :anim :grow-talk :stop? false) + (actions/talk entities :ego "Here you go." :anim :grow-talk) + (actions/do-dialogue entities + :blergh "Yes! Now I can drink this whole thing and can become powerful enough to rule the world!" + :blergh "[#AAFFAAFF]*gulp*[]" + :blergh "What's this? What's happening?") + (actions/talk entities :ego "Uh oh." :anim :grow-talk :stop? false) + (actions/walk-straight-to entities :ego [100 45] :face :right) + (actions/play-animation entities :blergh :grow :stop? false) + (actions/do-dialogue entities :ego "'Not more than that do drink,\nOr you'll push your body to the brink.'" + :ego "Brilliant! I win!") + (actions/walk-straight-to entities :ego [800 75] :face :right) + (actions/update-state entities (fn [s] (assoc s :blergh-dead? true))))} + "No way!" + {:run (fn [_] + (actions/talk entities :ego "No way!" :anim :grow-talk) + (actions/talk entities :blergh "Then take this!") + (actions/play-animation entities :blergh :swing) + (actions/walk-straight-to entities :ego [100 45] :anim :squat :override-dir :right :speed 3.0) + (actions/do-dialogue entities :ego "Yeow!!" + :ego "Even with that potion, I'm not strong enough."))}]})) + + +(defn get-ego [screen start-pos start-scale] + (let [player-sheet (texture! (texture "player.png") :split 18 36) + talk-sheet (texture! (texture "ego/talk.png") :split 18 36) + stand-sheet (texture! (texture "ego/stand.png") :split 18 36) + squat-sheet (texture! (texture "ego/squat.png") :split 18 36) + reach-sheet (texture! (texture "ego/reach.png") :split 18 36) + grow-sheet (texture! (texture "ego/grow.png") :split 18 36) + cat-toy-sheet (texture! (texture "ego/cat-toy.png") :split 41 50) + fire-sheet (texture! (texture "ego/fire.png") :split 18 36) + walk-right (animation 0.075 (for [i (range 8)] + (texture (aget player-sheet 0 i)))) + + stand-anim (animation 0.1 (for [i (flatten [(repeat 6 [(repeat 10 0) (repeat 3 1) (repeat 20 0)]) 3 4 5 5 5 6 5 6 5 6 5 4 3 ])] + (texture (aget stand-sheet 0 i)))) + reach-up (animation 0.1 (for [i [0 3 4 5]] + (texture (aget stand-sheet 0 i)))) + reach-down (animation 0.1 (for [i [5 4 3 0]] + (texture (aget stand-sheet 0 i)))) + talk-anim (animation 0.2 (for [i (range 8)] + (texture (aget talk-sheet 0 i)))) + start-squat (animation 0.05 (for [i [0 1 2 3 4]] + (texture (aget squat-sheet 0 i)))) + start-squat-2 (animation 0.05 (for [i [0 1 2 3]] + (texture (aget squat-sheet 0 i)))) + end-squat (animation 0.05 (for [i [3 2 1 0]] + (texture (aget squat-sheet 0 i)))) + squat-anim (animation 0.05 (for [i [0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 2 1] ] + (texture (aget squat-sheet 0 i)))) + reach-anim (animation 0.1 (for [i [0 1 2 3 3 3 3 3 3 2 1 0]] + (texture (aget reach-sheet 0 i)))) + reach-start (animation 0.1 (for [i [0 1 2 3 ]] + (texture (aget reach-sheet 0 i)))) + reach-stop (animation 0.1 (for [i [3 2 1 0]] + (texture (aget reach-sheet 0 i)))) + cat-toy-anim (animation 0.1 (for [i [0 0 1 1 2 2 3 4 3 2 3 4 3 2 3 4 3 2 3 4 3 2 2 1 1 0 0]] + (texture (aget cat-toy-sheet 0 i)))) + cat-toy-first-half (animation 0.1 (for [i [0 0 1 1 2 2 3]] + (texture (aget cat-toy-sheet 0 i)))) + cat-toy-last-half (animation 0.1 (for [i [3 3 3 2 1 1 0 0]] + (texture (aget cat-toy-sheet 0 i)))) + fire-1-anim (animation 0.1 (for [i [0 1 2 2 2 3 2 3 2 2 2 2 2 2 2 2 2 2 1 0]] + (texture (aget fire-sheet 0 i)))) + fire-2-anim (animation 0.1 (for [i [0 1 2 2 2 3 2 3 2 2 2 2 2 2 2 4 4 4 5 6 7 4 4 4 2 2 2 2 2 2 2 2 1 0]] + (texture (aget fire-sheet 0 i)))) + fire-3-anim (animation 0.1 (for [i [0 1 2 2 2 3 2 3 2 2 2 2 2 2 4 4 4 4 4 4 5 6 7 4 4 4 4 4 8 9 10 11 4 4 4 2 2 2 2 2 2 2 2 0]] + (texture (aget fire-sheet 0 i)))) + grow (animation 0.1 (for [i [0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 3 0 0 0 0 3 0 0 0 3 3 0 0 0 2 2 0 0 2 0 0 2 0 2 0 2 0 2 0 2 0 2 3 2 3 2 3 2 3 2 4 3 4 3 4 3 4]] + (texture (aget grow-sheet 0 i)))) + hold-up-to-window (utils/make-anim "ego/hold-up-to-window.png" [18 36] 0.1 [0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0 0 0 0 0 0]) + jump (utils/make-anim "ego/swing.png" [36 75] 0.2 (flatten [[1 2]])) + swing (utils/make-anim "ego/swing.png" [36 75] 0.145 (flatten [[3 4 5 6 7 ]])) + grow-talk (utils/make-anim "ego/grow-talk.png" [18 36] 0.2 (range 2)) + get-sick (animation 0.3 (map (partial get [(aget talk-sheet 0 0 ) (texture "ego/get-sick.png")]) [0 1 1 1 1 1 1 1 1 1 1 1]) ) + spear (utils/make-anim "ego/spear.png" [18 100] 0.2 [0 1 2 3 2 3 2 3 2 3 2 1 0]) + crowbar (utils/make-anim "ego/crowbar.png" [36 36] 0.1 [0 0 0 1 1 2 2 2 2 2 3 2 3 2 3 2 3 2 3 3 3 1 1 0 0 0]) + shoot (utils/make-anim "ego/shoot.png" [24 36] 0.075 [0 0 0 1 1 2 2 2 2 2 2 2 2 3 4 5 4]) + pant (utils/make-anim "ego/pant.png" [31 36] 0.5 [0 1]) + shock (utils/make-anim "ego/shock.png" [40 48] 0.075 (flatten (repeat 2 [(repeat 5 [0 1 2]) (repeat 5 [3 4 5]) (repeat 5 [6 7 8])]))) + burnt (utils/make-anim "ego/burnt.png" [40 46] 0.12 [1 2 3 2 1 2 3 2 1 0 2 0 4 5 6 7 8 9 10 11 10 9 10 11]) + passed-out (utils/make-anim "ego/burnt.png" [40 46] 0.12 [9 10 11 10]) + scared (utils/make-anim "ego/scared.png" [18 36] 0.05 [0 1]) + scared-talk (utils/make-anim "ego/scared.png" [18 36] 0.05 [0 1 0 1 0 1 0 1 2 3 2 3 2 3 2 3]) + scared-walk (utils/make-anim "ego/scared-walk.png" [16 36] 0.05 (range 6)) + sigh (utils/make-anim "ego/sigh.png" [18 36] 0.08 [0 0 0 0 1 1 1 2 3 4 5 6 7 8 8 8 8 8 8 8 8 8 0 0 0 0 ]) + glad (utils/make-anim "ego/glad.png" [20 46] 0.04 (flatten [0 1 2 3 4 (repeat 8 [5 5 5]) (repeat 20 0)])) + milk (utils/make-anim "ego/squat.png" [18 36] 0.05 [0 1 2 2 3 3 3 3 3 3 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 6 5 3 3 3 3 3 3 3 3 3 3 3 2 1 0]) + idea (utils/make-anim "ego/idea.png" [18 70] 0.3 [2 0 0 0 0 0 0 2]) + throw (utils/make-anim "ego/throw.png" [18 36] 0.04 (flatten [[(repeat 5 0) (repeat 10 1)] (repeat 3 [2 2 2 3 3 3 4 4 4 5 5 5]) (repeat 5 [2 2 3 3 4 4 5 5]) (repeat 10 [2 3 4 5]) [2 3 3] (repeat 33 6)])) + swing-shovel (utils/make-anim "ego/swing-shovel.png" [70 70] 0.1 (range 9)) + love (utils/make-anim "ego/love.png" [50 70] 0.1 (flatten [0 0 1 1 2 2 3 3 4 4 5 5 6 6 (repeat 10 7) (repeat 5 8) (repeat 5 7) (repeat 5 8) (repeat 5 7) (repeat 10 [23 24 25 24]) (repeat 30 9) 10 11 12 13 14 15 16 17 18 19 20 21 21 21 22 22 22 21 21 21 21 21 21 21 21 22 22 22 22 22 21 21 21 21 22 22 22 22 22 22 21 21 21 21 21 6 6 5 5 4 4 3 3 2 2 1 1 0])) + axe (utils/make-anim "ego/axe.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 7)])) + axe-wood (utils/make-anim "ego/axe-wood.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 11)])) + suspended (utils/make-anim "ego/suspended.png" [18 36] 0.10 [0]) + + ego {:right {:walk walk-right + :stand stand-anim + :talk talk-anim + :squat squat-anim + :start-squat start-squat + :start-squat-2 start-squat-2 + :end-squat end-squat + :reach reach-anim + :cat-toy cat-toy-anim + :cat-toy-first-half cat-toy-first-half + :cat-toy-last-half cat-toy-last-half + :grow grow + :crowbar crowbar + :get-sick get-sick + :hold-up-to-window hold-up-to-window + :swing swing + :grow-talk grow-talk + :reach-up reach-up + :reach-down reach-down + :reach-start reach-start + :jump jump + :reach-stop reach-stop + :shoot shoot + [:fire 1] fire-1-anim + [:fire 2] fire-2-anim + [:fire 3] fire-3-anim + :spear spear + :pant pant + :shock shock + :burnt burnt + :passed-out passed-out + :scared scared + :scared-talk scared-talk + :scared-walk scared-walk + :sigh sigh + :glad glad + :milk milk + :throw throw + :swing-shovel swing-shovel + :love love + :idea idea + :axe axe + :axe-wood axe-wood + :suspended suspended + } + :left {:walk (utils/flip walk-right) + :stand (utils/flip stand-anim) + :talk (utils/flip talk-anim) + :start-squat (utils/flip start-squat) + :start-squat-2 (utils/flip start-squat-2) + :end-squat (utils/flip end-squat) + :squat (utils/flip squat-anim) + :reach (utils/flip reach-anim) + :cat-toy (utils/flip cat-toy-anim) + :get-sick (utils/flip get-sick) + :cat-toy-first-half (utils/flip cat-toy-first-half) + :cat-toy-last-half (utils/flip cat-toy-last-half) + :grow (utils/flip grow) + :hold-up-to-window (utils/flip hold-up-to-window) + :grow-talk (utils/flip grow-talk) + :reach-up (utils/flip reach-up) + :reach-down (utils/flip reach-down) + :reach-start (utils/flip reach-start) + :reach-stop (utils/flip reach-stop) + :shoot (utils/flip shoot) + [:fire 1] (utils/flip fire-1-anim) + [:fire 2] (utils/flip fire-2-anim) + [:fire 3] (utils/flip fire-3-anim) + :spear (utils/flip spear) + :pant (utils/flip pant) + :sigh (utils/flip sigh) + :glad (utils/flip glad) + :milk (utils/flip milk) + :throw (utils/flip throw) + :swing-shovel (utils/flip swing-shovel) + :love (utils/flip love) + :idea (utils/flip idea) + :axe (utils/flip axe) + :axe-wood (utils/flip axe-wood) + :suspended (utils/flip suspended)} + :baseline (- 240 (last start-pos)) + :facing :right + :night-profile :sprite + :origin-x 9 + :origin-y 0 + :scaled true + :milk-sound (sound "outsidehouse/milk.ogg") + :step-sound-1 (sound "ego/step-1.ogg") + :step-sound-2 (sound "ego/step-2.ogg") + :sigh-sound (sound "ego/sigh.ogg") + :blink (sound "blink.ogg") + :scale-x start-scale + :scale-y start-scale + :talk-color (color 0.6 1.0 1.0 1.0) + + + + :mouse-in? (fn [entities x y] + (let [{entity-x :x entity-y :y region :object scale :scale-x} (get-in entities [:room :entities :ego]) + half-width (/ (* (.getRegionWidth region) (or scale 1.0)) 2) + height (* (.getRegionHeight region) (or scale 1.0))] + #_(clojure.pprint/pprint [["point" x y] + ["entity " (- entity-x half-width) entity-y (+ entity-x half-width) (+ entity-y height)]]) + + ((zone/box (- entity-x half-width) entity-y (+ entity-x half-width) (+ entity-y height)) x y))) + :get-script (fn [cursor [x y]] + (condp = (:value cursor) + :flask-1-with-cream-of-mushroom (actions/get-script entities (actions/talk entities :ego "Blegh! Gross!")) + :flask-1-strength (actions/get-script entities + (cond (and (actions/has-item? entities :magic-slingshot) + (get-in @entities [:room :blergh])) + (drink-blergh entities) + + (get-in @entities [:room :blergh]) + (actions/talk entities :ego "There's no time!") + + :else + (do + (actions/talk entities :ego "I'll just take a sip!") + (sound! (sound "ego/potion.ogg") :play (utils/current-sound-volume)) + (actions/play-animation entities :ego :grow :stop? false)))) + :recipe (actions/get-script entities (actions/do-dialogue entities + :ego "The recipe says:" + :ego "'For strength beyond measure,\nyou must mix, at your leisure:'" + :ego "'1. Cream of mushroom soup.'" + :ego "'2. Saliva of the creature whose strength you want to match.'" + :ego "'3. Mandrake root.'" + :ego "'A word of warning, before you go.\nA sip is all it takes to grow.'" + :ego "'Not more than that do drink,\nOr you'll push your body to the brink.'" + :ego "Hmm. I wonder what that last part means?")) + :note-1 (actions/get-script entities (common/read-note-1 entities)) + :note-2 (actions/get-script entities (common/read-note-2 entities)) + :camera (actions/get-script entities (actions/talk entities :ego "It's some sort of magical device that captures images.")) + :alarm-clock (actions/get-script entities (actions/talk entities :ego "It's a magic device that tells the time.")) + :walkie-talkies (actions/get-script entities (actions/do-dialogue entities :ego "If I talk in one of these devices, I can hear it in the other one!")) + nil)) + :x (first start-pos) :y (last start-pos) + :id "ego"} + + ego (assoc ego :anim-sound-frames {(get-in ego [:left :walk]) {2 [:step-sound-1 1.0] + 6 [:step-sound-2 0.8]} + (get-in ego [:right :walk]) {2 [:step-sound-1 1.0] + 6 [:step-sound-2 0.8]} + + (get-in ego [:left :talk] ) {2 [:blink 0.15]} + (get-in ego [:right :talk] ) {2 [:blink 0.15]} + + (get-in ego [:left :stand]) {11 [:blink 0.15] + 44 [:blink 0.15] + 77 [:blink 0.15] + 110 [:blink 0.15] + 143 [:blink 0.15] + 176 [:blink 0.15]} + (get-in ego [:right :stand]) {11 [:blink 0.15] + 44 [:blink 0.15] + 77 [:blink 0.15] + 110 [:blink 0.15] + 143 [:blink 0.15] + 176 [:blink 0.15]} + (get-in ego [:left :sigh]) {1 [:sigh-sound 0.4]} + (get-in ego [:right :sigh]) {1 [:sigh-sound 0.4]} + (get-in ego [:left :milk]) {8 [:milk-sound 1.0]} + (get-in ego [:right :milk]) {8 [:milk-sound 1.0]} + } + :anim-merges {(get-in ego [:right :shock]) {:origin-x 15} + (get-in ego [:left :swing-shovel]) {:origin-x 26} + (get-in ego [:right :swing-shovel]) {:origin-x 26} + (get-in ego [:right :axe]) {:origin-x 17} + (get-in ego [:right :axe-wood]) {:origin-x 17} + (get-in ego [:left :love]) {:origin-x 36} + (get-in ego [:left :suspended]) {:origin-x 0 :origin-y 0} + (get-in ego [:right :suspended]) {:origin-x :origin-y 0} + :default {:origin-x 9}})] + (actions/start-animation screen + (merge (animation->texture screen (:stand (:right ego))) ego) + :stand))) + +(defn update-from-script [screen {{:keys [current started? channel]} :actions :as entities}] + (if current + (let [entities (if started? entities (actions/begin current screen entities)) + entities (actions/continue current screen entities)] + (if (actions/done? current screen entities) + (let [terminated (actions/terminate current screen entities)] + (put! (actions/get-channel current) terminated) + (recur screen (assoc terminated + :actions {:channel channel :current nil :started? false :script-running? (get-in entities [:actions :script-running?])}))) + (assoc-in entities [:actions :started?] true))) + (let [[current _] (alts!! [channel] :default nil)] + (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 + last) + (input! :set-cursor-image (utils/cursor "cursor.png" (or (:cursor new-current) new-current)) 0 0)) + (assoc-in entities [:cursor :last] new-current))) + + + +(defn get-animation-point [^Animation animation total-time] + (loop [time total-time] + (if (> (- time (animation! animation :get-animation-duration)) 0) + (recur (- time (animation! animation :get-animation-duration))) + time))) + +(defn animate [entity screen] + (merge entity (animation->texture (update-in screen [:total-time] #(- % (:anim-start entity))) + (:anim entity)) + {:current-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity)))) + :previous-frame-index (texture! (:anim entity) :get-key-frame-index (get-animation-point (:anim entity) (- (:total-time screen) (:anim-start entity) (or (:delta-time screen) 0)))) + :origin-x (or (get-in entity [:anim-origins (:anim entity) 0]) + (:base-origin-x entity) + (:origin-x entity)) + :origin-y (or (get-in entity [:anim-origins (:anim entity) 1]) + (:base-origin-y entity) + (:origin-y entity))} + (or (get-in entity [:anim-merges (:anim entity)]) + (get-in entity [:anim-merges :default])))) + + +(defn get-layers [entities] + (let [layers (get-in entities [:room :layers])] + (if (map? layers) + ((get-in entities [:state :time]) layers) + layers))) + +(defn get-state [] + (if (.exists (io/file "save.edn")) + (utils/load) + {:object nil + :active? true + :last-room :dream + :time :day + :obtained-items #{} + :inventory [] + :plaques-read #{} + :clues #{} + :mints-eaten 0 + :seen-intro? false})) + +(defn fade-in-first-time-if-necessary [screen entities] + (if (not (get-in entities [:started? :value])) + (do (music! (utils/get-current-music entities) :set-volume (utils/current-music-volume (get-in entities [:volume :value]))) + (utils/play-sound (get-in entities [:musics (actions/get-music (get-in entities [:room :music]) (get-in entities [:state :time]))])) + (assoc entities + :tweens {:fade-in (tween/tween :fade-in screen [:fade :opacity] 1.0 0.0 1.0 :ease tween/ease-in-cubic + :finish #(if (not (get-in % [:state :seen-intro?])) + (do ((actions/get-script % (rooms.dream/do-intro %)) entities) + (assoc-in % [:actions :script-running?] true)) + %)) + :fade-in-music (tween/tween :fade-in-music screen [:volume :value] 0.0 1.0 1.0 :ease tween/ease-in-cubic)} + :started? {:value true + :object nil})) + entities)) + +(defn play-key-sounds [entities] + (doseq [[target {:keys [previous-frame-index current-frame-index anim-sound-frames anim x y] :as e}] (get-in entities [:room :entities])] + (when (and (not= previous-frame-index current-frame-index) + ((set (keys anim-sound-frames)) anim)) + (when-let [[snd vol-scale] (get-in anim-sound-frames [anim current-frame-index])] + (let [vol (if (= target :ego) + (* (/ (get-in entities [:room :entities :ego :scale-x]) 1.5) 0.75) + (max 0.0 + (- 1.0 (/ (utils/dist x y + (get-in entities [:room :entities :ego :x]) + (get-in entities [:room :entities :ego :y]) + :y-sign 2.0 + :x-sign (/ 1.0 (get-in entities [:room :entities :ego :scale-x]))) + 175.0)))) + pan (/ (- (:x e) 160 ) 160) + vol (* vol vol-scale) + vol (max vol 0.005)] + (sound! (or (snd e) + (snd (:sounds entities))) :play (utils/current-sound-volume vol) 1.0 pan)))))) + +(defn update-from-room [screen entities] + (if-let [update-fn (get-in entities [:room :update-fn])] + (update-fn screen entities) + entities)) + +(defn render-parallax [{:keys [^OrthographicCamera camera ^Stage renderer ^ShaderProgram shader] :as screen} {:keys [parallax ^float multiply-amount ^float hue-amount] :as e }] + + (let [tmp (Vector3.) + tmp2 (Vector3.) + parallax-view (Matrix4.) + parallax-combined (Matrix4.)] + (.update camera) + + (.set tmp (.position camera)) + (set! (.x tmp) (* (.x tmp) parallax)) + (set! (.y tmp) (* (.y tmp) parallax)) + (.setToLookAt parallax-view tmp (-> tmp2 + (.set tmp) + (.add (.direction camera))) + (.up camera)) + (.set parallax-combined (.projection camera)) + (Matrix4/mul (.val parallax-combined) (.val parallax-view)) + + + (let [^Batch batch (.getBatch renderer)] + + (.begin batch) + (.setProjectionMatrix batch parallax-combined) + (.setShader batch shader) + (when shader + (.setUniformf shader "multiply_amount" (float (or multiply-amount 1.0))) + (.setUniformf shader "hue_amount" (float (or hue-amount 1.0)))) + (.setColor batch (color (:r e 1.0) (:g e 1.0) (:b e 1.0) (:opacity e 1.0))) + + + (entities/draw! (assoc e :x (+ (/ (:x e) (.zoom camera)) + (- (* 320 parallax 0.5) + (/ 160 (.zoom camera)) )) + :y (+ (/ (:y e) (.zoom camera)) + (- (* 240 parallax 0.5) + (/ 120 (.zoom camera))))) screen batch) + (.setColor batch (color 1 1 1 1)) + (.end batch)))) + +(defn get-rendered [entities e] + (merge e + (when (not= :day (get-in entities [:state :time])) + (get-in entities [:time-profiles (:night-profile e :default)])))) + + +(defn shift-range-to-bounds [x1 x2 min max] + (println x1 x2 "->" (cond (and (< x1 min) + (> x2 max)) + [min max] + (< x1 min) + [min (+ x2 (- min x1))] + (> x2 max) + [(- x1 (- x2 max)) max] + :else + [x1 x2])) + (cond (and (< x1 min) + (> x2 max)) + [min max] + (< x1 min) + [min (+ x2 (- min x1))] + (> x2 max) + [(- x1 (- x2 max)) max] + :else + [x1 x2])) + +(defscreen scene + :on-timer + (fn [screen [entities]] + (when-let [timer-fn (get-in entities [:room :timers (:id screen) 2])] + (timer-fn screen entities))) + + :on-show + (fn [screen entities] + (let [screen (assoc screen :total-time 0)] + (let [[cam] (utils/setup-viewport screen 320 240)] + (set! (. cam zoom) 0.95) + (let [_ (input! :set-cursor-image (utils/cursor "cursor.png" :main) 0 0) + shader (ShaderProgram. v-shader pix-shader) + _ (println (.getLog shader)) + _ (update! screen :shader shader) + rooms {:inside-house (rooms.inside-house/make screen) + :inside-stash (rooms.inside-stash/make screen) + :outside-house (rooms.outside-house/make screen) + :behind-house (rooms.behind-house/make screen) + :cat-tree (rooms.cat-tree/make screen) + :inside-castle (rooms.inside-castle/make screen) + :space (rooms.space/make screen) + :held (rooms.held/make screen) + :inside-cafeteria (rooms.inside-cafeteria/make screen) + :inside-antique (rooms.inside-antique/make screen) + :inside-jail (rooms.inside-jail/make screen) + :dream (rooms.dream/make screen) + :castle-gate (rooms.castle-gate/make screen) + :outside-jail (rooms.outside-jail/make screen) + :outside-castle (rooms.outside-castle/make screen)} + entities {:rooms rooms + :step-particles (assoc (particle-effect "ego/step") :x 100 :y 100 :baseline 241) + :cam {:zoom 0.95 + :paused? false + :object nil} + :musics {:object nil + :inside-antique (utils/make-music "inside-antique.ogg") + :town-1 (utils/make-music "town-music-1.ogg") + :town-2 (utils/make-music "town-music-2.ogg") + :love (utils/make-music "love.ogg") + :inside-fangald (utils/make-music "inside-fangald.ogg") + :fight (utils/make-music "megaboss.mp3") + :pull-sword (utils/make-music "pull-sword.ogg") + :night (utils/make-music "night.ogg")} + :state (get-state) + :time-profiles {:object nil + :default utils/default-night-merge + :sprite utils/default-night-merge-sprite + :none {}} + + :sounds {:blink (sound "blink-other.ogg") + :object nil} + :fade {:object nil + :opacity 0.0} + :white-fade (assoc (texture "white.png") + :scale-x 20 + :scale-y 20 + :baseline 9500 + :opacity 0.0 + :origin-x 0 + :origin-y 0) + :actions {:object nil + :channel (chan) + :current nil + :script-running? false + :started? false} + :volume {:object nil + :value 0.0} + :music-override {:object nil + :value nil} + :cursor {:id "cursor" + :current :main + :last :main + :override nil + :last-pos [0 0]} + + :all-items (assoc items/items :object nil) + :started? {:value false + :object nil} + :room (as-> (get rooms (:last-room (get-state))) room + (assoc-in room [:entities :ego] (get-ego screen (:start-pos room) ((:scale-fn room) (:start-pos room)))))}] + + (doseq [[k [start time fn]] (get-in entities [:room :timers])] + (add-timer! screen k start time)) + + + + (if-let [apply-state (get-in entities [:room :apply-state])] + (apply-state screen entities) + entities))))) + + :on-resume (fn [screen [entities]] + (doseq [[k [start time fn]] (get-in entities [:room :timers])] + (add-timer! screen k start time))) + + :on-render + (fn [{:keys [camera] :as screen} [entities]] + (clear!) + + (let [entities (fade-in-first-time-if-necessary screen entities) + entities (utils/apply-tweens screen entities (:tweens entities)) + entities (update-cursor screen entities) + entities (update-from-script screen entities) + entities (update-from-room 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 + (for [[id entity] entities] + (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]))))) + + entities (if (and (not (get-in entities [:cam :paused?])) + (nil? (get-in entities [:tweens :cam-x])) + (= 1 (rand-int 20))) + (if (= (rand-int 2) 1) + (actions/pan-to screen entities + (get-in entities [:room :entities :ego :x]) + (get-in entities [:room :entities :ego :y]) + (constantly (get-in entities [:room :entities :ego :scale-x])) + tween/ease-in-out-quadratic + 5.0) + (actions/pan-to screen entities + (+ (get-in entities [:cam :x] 0) + (- 10 (rand-int 20))) + (+ (get-in entities [:cam :y] 0) + (- 10 (rand-int 20))) + (constantly (get-in entities [:room :entities :ego :scale-x])) + tween/ease-in-out-quadratic + 5.0)) + entities) + + + layers (get-layers entities) + + all-entities (concat (vals entities) layers (vals (get-in entities [:room :entities])))] + (screen! talking-screen :on-update-camera :scene-viewport (:viewport screen) :scene-camera (:camera screen)) + (screen! fade-screen :update-fade :opacity (get-in entities [:fade :opacity])) + (when true #_(not (get-in entities [:cam :paused?])) + (set! (. camera zoom) (:zoom (:cam entities))) + (set! (.. camera position x) (:x (:cam entities) 160.0)) + (set! (.. camera position y) (:y (:cam entities) 120.0))) + (let [entities (utils/update-override screen entities)] + + + (when (= (get-in entities [:fade :opacity]) + 0.0) + (play-key-sounds entities)) + (doseq [m (vals (get-in entities [:musics]))] + (when m + (music! m :set-volume (utils/current-music-volume (get-in entities [:volume :value]))))) + (doseq [e (sort-by :baseline all-entities)] + (if (:parallax e) + (render-parallax screen (get-rendered entities e)) + (render! screen [(get-rendered entities e)]))) + + entities))) + + :on-resize (fn [{:keys [viewport width height]} [entities]] + (.update viewport width height)) + + :on-hide (fn [screen [entities]] + (doseq [snd (->> (get-in entities [:musics]) + vals + (filter identity))] + (utils/stop-sound snd))) + + :on-mouse-moved + (fn [{:keys [input-x input-y viewport] :as screen} [entities]] + (if (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) + (.getScreenWidth viewport) (.getScreenHeight viewport) + input-x input-y) + + (utils/update-override screen (assoc-in entities [:cursor :last-pos] [input-x input-y])) + (assoc-in entities [:cursor :override] nil))) + + :on-touch-up (fn [{:keys [input-x input-y viewport] :as screen} [entities]] + (when (utils/contains-point? (.getScreenX viewport) (.getScreenY viewport) + (.getScreenWidth viewport) (.getScreenHeight viewport) + input-x input-y) + (if (= (button-code :right) + (:button screen)) + (assoc-in entities [:cursor :current] :main) + (when (and (get-in entities [:state :active?]) + (not (get-in entities [:state :hud-active?])) + (= 0.0 (get-in entities [:fade :opacity]))) + (left-click screen entities))))) + + :on-deactivate (fn [screen [entities]] + (assoc-in entities [:state :active?] false)) + + :on-reactivate (fn [screen [entities]] + (-> entities + (assoc-in [:state :active?] true) + (assoc-in [:cursor :override] nil))) + + :on-chose-item (fn [{:keys [item]} [entities]] + (assoc-in entities [:cursor :current] item)) + + :on-show-inventory (fn [screen [entities]] + (click-inventory screen entities)) + :on-menu (fn [screen [entities]] + (when-not (get-in entities [:tweens :fade-out]) + (-> entities + (assoc-in [:cursor :override] nil) + (assoc-in [:tweens :fade-out-music] + (tween/tween :fade-out-music screen [:volume :value] 1.0 0.0 1.0)) + (assoc-in [:tweens :fade-out] + (tween/tween :fade-out screen [:fade :opacity] 0.0 1.0 1.0 + :finish #(do (.clear @(resolve 'advent.core/am)) + (input! :set-cursor-image (utils/cursor "cursor.png" :main) 0 0) + (set-screen! @(resolve 'advent.core/advent) @(resolve 'advent.screens.title/title-screen)) + %)))))) + + :on-start-script (fn [{:keys [script]} [entities]] + (script entities) + entities) + :hud-active? (fn [{:keys [hud-active?]} [entities]] + (assoc-in entities [:state :hud-active?] hud-active?))) () + + +(defn grow-hud [screen entities target up?] + + (let [grow-or-shrink (if up? :grow :shrink) + scale-from (if up? 1.0 1.1) + scale-to (if up? 1.1 1.0) + opacity-from (if up? 0.8 1.0) + opacity-to (if up? 1.0 0.8)] + (if (and (not (get-in entities [:tweens [target grow-or-shrink :x]])) + (not= scale-to (get-in entities [target :scale-y] 1.0))) + (-> entities + (assoc-in [:tweens [target grow-or-shrink :y]] + (tween/tween [target grow-or-shrink :y] screen [target :scale-y] scale-from scale-to 0.15 :ease tween/ease-in-out-quadratic)) + (assoc-in [:tweens [target grow-or-shrink :x]] + (tween/tween [target grow-or-shrink :x] screen [target :scale-x] scale-from scale-to 0.15 :ease tween/ease-in-out-quadratic)) + (assoc-in [:tweens [target grow-or-shrink :opacity]] + (tween/tween [target grow-or-shrink :opacity] screen [target :opacity] opacity-from opacity-to 0.15 :ease tween/ease-in-out-quadratic))) + entities))) + +(defscreen hud + :on-show + (fn [screen entities] + (let [screen (assoc screen :total-time 0)] + (utils/setup-viewport screen 320 240) + + {:close (assoc (texture "close.png") + :x 304 :y 224 + :width 16 :height 16 + :baseline 9000 + :opacity 0.8) + :inventory (assoc (texture "inventory.png") :x 278 :y 0 :baseline 9000 + :mouse-in? (zone/box 278 0 320 42) + :opacity 0.8) + :fps (assoc (label "" (color :white) ) :x 5 :baseline 0 :opacity 0.3)})) + + :on-render + (fn [screen [entities]] + (let [entities (utils/apply-tweens screen entities (:tweens entities))] + #_(label! (:fps entities) :set-text (str (game :fps))) + (render! screen [#_(:fps entities) (:inventory entities) (:close entities)]) + entities)) + + :on-resize + (fn [screen entities] + (.update (:viewport screen) (:width screen) (:height screen) true)) + + :on-mouse-moved + (fn [screen [entities]] + (let [[x y] (utils/unproject screen) + hovered-inventory? ((:mouse-in? (:inventory entities)) x y) + hovered-close? (utils/intersects? (:close entities) [x y])] + (screen! scene :hud-active? :hud-active? (or hovered-close? hovered-inventory?)) + (cond hovered-inventory? + (grow-hud screen entities :inventory true) + + hovered-close? + (grow-hud screen entities :close true) + + :else + (let [entities (update-in entities [:tweens] dissoc :inventory-grow-x :inventory-grow-y) + entities (grow-hud screen entities :inventory false) + entities (grow-hud screen entities :close false)] + entities + )))) + + + :on-touch-up + (fn [screen [entities]] + (if (= (button-code :left) (:button screen)) + (let [[x y] (utils/unproject screen)] + (cond ((:mouse-in? (:inventory entities)) x y) + (screen! scene :on-show-inventory) + + (utils/intersects? (:close entities) [x y]) + (screen! scene :on-menu) + + :else + nil))))) diff --git a/desktop/src-common/advent/screens/.#scene.clj b/desktop/src-common/advent/screens/.#scene.clj new file mode 120000 index 00000000..bc288428 --- /dev/null +++ b/desktop/src-common/advent/screens/.#scene.clj @@ -0,0 +1 @@ +bryce@bryce-pc.hsd1.wa.comcast.net.5560 \ No newline at end of file diff --git a/desktop/src-common/advent/screens/rooms/behind_house.clj b/desktop/src-common/advent/screens/rooms/behind_house.clj index afadd3f9..f7dbb819 100644 --- a/desktop/src-common/advent/screens/rooms/behind_house.clj +++ b/desktop/src-common/advent/screens/rooms/behind_house.clj @@ -88,7 +88,7 @@ :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] + :apply-state (fn [_ entities] (as-> entities entities (if (get-in entities [:state :opened-crack?]) (assoc-in entities [:room :entities :peeling :opacity] 0) diff --git a/desktop/src-common/advent/screens/rooms/castle_gate.clj b/desktop/src-common/advent/screens/rooms/castle_gate.clj index 3f73dea8..ac660cbd 100644 --- a/desktop/src-common/advent/screens/rooms/castle_gate.clj +++ b/desktop/src-common/advent/screens/rooms/castle_gate.clj @@ -174,7 +174,7 @@ :collision "castle-gate/collision.png" :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.30) - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (= :night (get-in entities [:state :time])) (make-night entities) diff --git a/desktop/src-common/advent/screens/rooms/cat_tree.clj b/desktop/src-common/advent/screens/rooms/cat_tree.clj index 2548ca46..084e7bba 100644 --- a/desktop/src-common/advent/screens/rooms/cat_tree.clj +++ b/desktop/src-common/advent/screens/rooms/cat_tree.clj @@ -329,7 +329,7 @@ nil))) :collision "cat-tree/collision.png" :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.20) - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (actions/has-item? entities :kiss) (update-in entities [:room :entities] #(dissoc % :cat)) diff --git a/desktop/src-common/advent/screens/rooms/dream.clj b/desktop/src-common/advent/screens/rooms/dream.clj index 7ec3e52b..9b11e782 100644 --- a/desktop/src-common/advent/screens/rooms/dream.clj +++ b/desktop/src-common/advent/screens/rooms/dream.clj @@ -436,7 +436,7 @@ (actions/play-animation entities :ego :sigh))})} :collision "dream/collision.png" :scale-fn (utils/scaler-fn-from-image "dream/scale.png" 0.1 1.3) - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (get-in entities [:state :seen-intro?]) (set-opacity entities 1.0 1.0) diff --git a/desktop/src-common/advent/screens/rooms/held.clj b/desktop/src-common/advent/screens/rooms/held.clj new file mode 100644 index 00000000..af4b1dfb --- /dev/null +++ b/desktop/src-common/advent/screens/rooms/held.clj @@ -0,0 +1,29 @@ +(ns advent.screens.rooms.held + (:require [advent.screens.rooms :as rooms] + [advent.screens.rooms.common :as common] + [advent.actions :as actions] + [advent.screens.items :as items] + [advent.utils :as utils] + [advent.tween :as tween] + [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] + [play-clj.math :refer :all] + [play-clj.g2d :refer :all])) + +(defn make [screen] + (rooms/make :music :fight + :interactions {} + :layers [(assoc (texture "held/background.png") :x 0 :y 0 :baseline 0)] + :entities {} + :collision "held/collision.png" + :scale-fn (constantly 1.5) + :start-pos [113 120] + :apply-state (fn [screen e] + (-> e + (assoc-in [:cam :paused? ] true) + (update-in [:tweens] dissoc :cam-x :cam-y) + (update-in [:room :entities :ego] #(actions/start-animation screen % :suspended)))))) diff --git a/desktop/src-common/advent/screens/rooms/inside_antique.clj b/desktop/src-common/advent/screens/rooms/inside_antique.clj index 900dd7a7..fb0dbb91 100644 --- a/desktop/src-common/advent/screens/rooms/inside_antique.clj +++ b/desktop/src-common/advent/screens/rooms/inside_antique.clj @@ -220,7 +220,7 @@ (actions/talk entities :shopkeep "Since you ate the last one, you have to go tell Gandarf to bring me some more.")))))) :teddy teddy} :collision "inside-antique/collision.png" - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (or (actions/has-item? entities :teddy) (actions/has-obtained? entities :balloon)) diff --git a/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj b/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj index 23444858..4601efff 100644 --- a/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj +++ b/desktop/src-common/advent/screens/rooms/inside_cafeteria.clj @@ -211,7 +211,7 @@ :win hands-fight-win :lose hands-fight-lose) :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.3) - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (actions/has-item? entities :ladder) (update-in entities [:room :entities] #(dissoc % :ladder)) diff --git a/desktop/src-common/advent/screens/rooms/inside_castle.clj b/desktop/src-common/advent/screens/rooms/inside_castle.clj index 551ff1c1..2b31d620 100644 --- a/desktop/src-common/advent/screens/rooms/inside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/inside_castle.clj @@ -475,7 +475,7 @@ :chorus {:sound (sound "inside-castle/chorus.wav")} :collision "inside-castle/collision.png" :scale-fn (utils/scaler-fn-from-image "inside-castle/scale.png" 0.25 1.00) - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (actions/has-obtained? entities :trophy) (update-in entities [:room :entities] #(dissoc % :trophy)) diff --git a/desktop/src-common/advent/screens/rooms/inside_house.clj b/desktop/src-common/advent/screens/rooms/inside_house.clj index 16e0e03f..d8e5a5f5 100644 --- a/desktop/src-common/advent/screens/rooms/inside_house.clj +++ b/desktop/src-common/advent/screens/rooms/inside_house.clj @@ -203,7 +203,7 @@ :baseline 225)) :collision "inside-house/collision.png" :scale-fn (utils/scaler-fn-with-baseline 110 0.10 1.75) - :apply-state (fn [entities] + :apply-state (fn [_ entities] (particle-effect! (get-in entities [:room :entities :candle-smoke] ) :reset) (particle-effect! (get-in entities [:room :entities :candle-smoke] ) :start) diff --git a/desktop/src-common/advent/screens/rooms/inside_jail.clj b/desktop/src-common/advent/screens/rooms/inside_jail.clj index 6c2402cc..9018203f 100644 --- a/desktop/src-common/advent/screens/rooms/inside_jail.clj +++ b/desktop/src-common/advent/screens/rooms/inside_jail.clj @@ -319,7 +319,7 @@ :collision-free (advent.pathfind/map-from-resource "inside-jail/collision-free.png") :scale-fn (utils/scaler-fn-with-baseline 0 0.50 1.5) :start-pos [130 85] - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (actions/has-obtained? entities :ball-n-chain) (update-in entities [:room :entities] #(dissoc % :ball-n-chain)) diff --git a/desktop/src-common/advent/screens/rooms/inside_stash.clj b/desktop/src-common/advent/screens/rooms/inside_stash.clj index 185cf369..638f922c 100644 --- a/desktop/src-common/advent/screens/rooms/inside_stash.clj +++ b/desktop/src-common/advent/screens/rooms/inside_stash.clj @@ -69,7 +69,7 @@ :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] + :apply-state (fn [_ entities] (if (get-in entities [:state :broke-lock?]) (update-in entities [:room :entities] #(dissoc % :lid)) entities)))) diff --git a/desktop/src-common/advent/screens/rooms/outside_castle.clj b/desktop/src-common/advent/screens/rooms/outside_castle.clj index 96786f99..5b1c7bd4 100644 --- a/desktop/src-common/advent/screens/rooms/outside_castle.clj +++ b/desktop/src-common/advent/screens/rooms/outside_castle.clj @@ -394,7 +394,7 @@ :collision "outside-castle/collision.png" :scale-fn (utils/scaler-fn-from-image "outside-castle/scale-map.png" 0.20 1.00) :start-pos [310 80] - :apply-state (fn [entities] + :apply-state (fn [_ entities] (if (#{:night :sunrise} (get-in entities [:state :time])) (make-night entities) entities))))) diff --git a/desktop/src-common/advent/screens/rooms/outside_house.clj b/desktop/src-common/advent/screens/rooms/outside_house.clj index c1ec6363..037b4f22 100644 --- a/desktop/src-common/advent/screens/rooms/outside_house.clj +++ b/desktop/src-common/advent/screens/rooms/outside_house.clj @@ -504,7 +504,7 @@ (common/read-note-1 entities)))) :collision "outsidehouse/collision.png" :scale-fn scaler - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (get-in entities [:state :coaxed-sheep?]) (let [scale ((get-in entities [:room :scale-fn]) [90 138])] diff --git a/desktop/src-common/advent/screens/rooms/outside_jail.clj b/desktop/src-common/advent/screens/rooms/outside_jail.clj index 114576df..7afb3e26 100644 --- a/desktop/src-common/advent/screens/rooms/outside_jail.clj +++ b/desktop/src-common/advent/screens/rooms/outside_jail.clj @@ -224,7 +224,7 @@ :collision "outside-jail/collision.png" :scale-fn (utils/scaler-fn-with-baseline 40 0.001 1.3) :start-pos [145 15] - :apply-state (fn [entities] + :apply-state (fn [_ entities] (as-> entities entities (if (= :night (get-in entities [:state :time])) (make-night entities) diff --git a/desktop/src-common/advent/screens/rooms/space.clj b/desktop/src-common/advent/screens/rooms/space.clj index 3fb46592..620e352f 100644 --- a/desktop/src-common/advent/screens/rooms/space.clj +++ b/desktop/src-common/advent/screens/rooms/space.clj @@ -187,7 +187,7 @@ {} :layers [(assoc (texture "space/background.png") :x 0 :y 0 :baseline 0)] :timers {:taunt [10.0 8.0 taunt] - :shock [5.0 1.0 shock]} + :shock [5.0 15.0 shock]} :entities {:appear (assoc effect :x 240 :y 50 :baseline 200) @@ -262,7 +262,9 @@ (Thread/sleep 5000) (actions/do-dialogue entities :bloodclot-head "Argh! My lightning gem!" - :bloodclot-head "No matter. I will rip you apart with my bare hands!"))})} + :bloodclot-head "No matter. I will rip you apart with my bare hands!") + (actions/pause-camera entities) + (actions/transition-background entities :held [125 170]))})} :bullet (assoc (animation->texture screen bullet) :x 37 :y 85 :baseline 241 :walk bullet) @@ -271,7 +273,7 @@ :collision "space/collision.png" :scale-fn (constantly 1.5) :start-pos [35 45] - :apply-state (fn [e] + :apply-state (fn [_ e] (as-> e e (if (get-in e [:state :broke-jewel?]) (assoc-in e [:room :entities :broken-jewel] (get-in e [:room :entities :broken-jewel])) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 8281684d..c19762cd 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -31,6 +31,7 @@ [advent.screens.rooms.behind-house :as rooms.behind-house] [advent.screens.rooms.outside-castle :as rooms.outside-castle] [advent.screens.rooms.space :as rooms.space] + [advent.screens.rooms.held :as rooms.held] [advent.screens.rooms.cat-tree :as rooms.cat-tree] [advent.screens.dialogue :refer [talking-screen]] [advent.screens.inventory :refer [inventory-screen]] @@ -362,6 +363,7 @@ void main() love (utils/make-anim "ego/love.png" [50 70] 0.1 (flatten [0 0 1 1 2 2 3 3 4 4 5 5 6 6 (repeat 10 7) (repeat 5 8) (repeat 5 7) (repeat 5 8) (repeat 5 7) (repeat 10 [23 24 25 24]) (repeat 30 9) 10 11 12 13 14 15 16 17 18 19 20 21 21 21 22 22 22 21 21 21 21 21 21 21 21 22 22 22 22 22 21 21 21 21 22 22 22 22 22 22 21 21 21 21 21 6 6 5 5 4 4 3 3 2 2 1 1 0])) axe (utils/make-anim "ego/axe.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 7)])) axe-wood (utils/make-anim "ego/axe-wood.png" [60 70] 0.10 (flatten [1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 (range 11)])) + suspended (utils/make-anim "ego/suspended.png" [18 36] 0.10 [0]) ego {:right {:walk walk-right :stand stand-anim @@ -406,6 +408,7 @@ void main() :idea idea :axe axe :axe-wood axe-wood + :suspended suspended } :left {:walk (utils/flip walk-right) :stand (utils/flip stand-anim) @@ -440,7 +443,8 @@ void main() :love (utils/flip love) :idea (utils/flip idea) :axe (utils/flip axe) - :axe-wood (utils/flip axe-wood)} + :axe-wood (utils/flip axe-wood) + :suspended (utils/flip suspended)} :baseline (- 240 (last start-pos)) :facing :right :night-profile :sprite @@ -531,6 +535,8 @@ void main() (get-in ego [:right :axe]) {:origin-x 17} (get-in ego [:right :axe-wood]) {:origin-x 17} (get-in ego [:left :love]) {:origin-x 36} + (get-in ego [:left :suspended]) {:origin-x 0 :origin-y 0} + (get-in ego [:right :suspended]) {:origin-x 0 :origin-y 0} :default {:origin-x 9}})] (actions/start-animation screen (merge (animation->texture screen (:stand (:right ego))) ego) @@ -734,6 +740,7 @@ void main() :cat-tree (rooms.cat-tree/make screen) :inside-castle (rooms.inside-castle/make screen) :space (rooms.space/make screen) + :held (rooms.held/make screen) :inside-cafeteria (rooms.inside-cafeteria/make screen) :inside-antique (rooms.inside-antique/make screen) :inside-jail (rooms.inside-jail/make screen) @@ -799,7 +806,7 @@ void main() (if-let [apply-state (get-in entities [:room :apply-state])] - (apply-state entities) + (apply-state screen entities) entities))))) :on-resume (fn [screen [entities]]