From 579e4d1da1cedea41fc75c55717d27225a823f80 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 3 Sep 2014 17:02:16 -0700 Subject: [PATCH] refactors and cleanups. --- desktop/resources/cursor.png | Bin 1796 -> 1820 bytes desktop/resources/pathfind-test-big.png | Bin 6205 -> 6308 bytes desktop/src-common/advent/core.clj | 48 ++++++++++++++---------- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/desktop/resources/cursor.png b/desktop/resources/cursor.png index b4f7d0ced4cb74d5730589c2403adb61bf453b6b..edfee0fcd40f1a022e343f2d56e94d63c6272318 100644 GIT binary patch delta 725 zcmV;`0xJE44xA3KR0MysNklFZ9B1ljho8UfkCY*7YH}l>; zNH&NAyZ633_sq;Wb7w|M7bUEGd=W}QyM4LQnNuy^H~dE91CW2uv>y!Y1-b}dxUm$; z^Wn=gBTBGs-9r(KIhPM_=EV6)_%j0o&W#%#8;f0+Kmd?9-r25g+(PU=U@3y#SF3N3 z4=WYtkHTb<7IWv?C6z*(l+XU<$MbYI#DZX)hB@g;1n>cP~Mj-2T0)4o>#WZY~Umiuq^h#Xk?_&KdXwQxZG*QW*V zR5)Hq_lpT8X;TRFdj+`iwmwwkjZvDiJHl_p_oWoyP7z-@TLAb+I51 za%d2NJHNQFSH&R0?8JzUtDxu4+;y8cArS#kmM-!HY#)9Y5r%zhVNn4;-u*rM-1Vlf zx1_ast0I5i)juSN$2Gq56oJ;p#FFXCl~lRUPPPU6xn2!QzL z__(k_ysrQj;A&|^FmHT&tfbvTe%iO*o`b|eI-gC?t8Nl!uHIb+XwC9x3^t7bI0hyb zK8{5- delta 701 zcmV;u0z&zM5;|2>D~M$zHyj4bKf0$ zzH;EbbMBdQ=FInv>j(j=lVLvx8;4IwO z_;~uhKmb4-@7}Iu$c7P15<=o?=?n02rQ-aNn1*Tz?_9g2TqvvgbAILVGpheY0${ON z^ybDKe7r|s@WygfJ|U`o0H*P1mv^!Cn)tTx+}Xa!*S!01dJ9{ddN4h$EvNeWwC*JU z9ydEj#*}x#N&Dm4C^WV?#Q7Z~tedFHb#{*Ol|~<2H7JLTU^Xe7t%xuGa3ZJAm=H1aS|b3ozIT&;cHIKw3Qf_}06gLlAO0my1%t zfB=BUVi+KyUIZXtt)9V|QYq#U0PwMi31NqLUjb~uH9|-*Z+v^LYSn{(=v!~+AaH;# z6bfpZ!0D^2O9Q3Z{eOU8_`jlC>Wn6Yn(kYo?pjb%!*JwwQr5JDLBBgr1J#z?Xj zN!jf!q>(mpreEc0?%T%xu0n}(}>3h%X0sAQ<&S@ChRBIH1-Mcn%r(XV)k z{aOrMw_@W?2r24e&eyJ~eR*`mrZ=ou_Ia^!>l4o9b5;hfw`VJ8`ghJf+In$cW$`F$ zt7(1Lf92#tfh}(U0R%u0#=29=k+>&vP$Vdf9}Mk?0fAw!Fl5lTw44uuAesR8|0n?d zaZT7PGErkHr_xB8X<=%Yk4vBxj385gLJ?E37X-B|urC?TU*ggrszohSlCG>WoHjy3 z6;SrQ-xlax*@mOhUq2&cb}GWNmb-{Bb_~KVk{cWqj@8#_nTpm?OVaaAqo!CT7_DaU zXD~Uyb(8ISaKd7?6h{{wXbOp<2nx%h?O)A|rvt+-YJmW-!gZ2vIcSG zUHRPvPVvA|?^WIPIA@`IrnSBbD>!7idAPw13gIEa5K;{C=r>p5!sFs zi%JX7>ute&{XQR!i2mN3rkPpJ+Ok0H+vuBe$@6@4Pp=xX*wfLhxOsXs+*7FglD9m! z7Xu`izLD;(AgSKZO)W~joJCs)3Lxxt+N__%Vl^%^nN$e{tfkVd_Rd_v)HWHzo$UXz z>YO$l41JZ?=kYZ~TwSR4?VI|?I^_DF6v@L9x)@kxs>wG3%=miUPhl&oSlx1BNKiT> z__uMJw%;p^rshxwTo8E$Dw+$k)DV@_)O@wm6WjZ&tmQ-H3m0cdX|8@ZAVXR@dn1F; z!^|1{lhgG=*n8#!wQIXeEg}m zC^Gde>d!&rn)qj;H}98|6=~(eCHs>$)tulNiFNSD_b(`X5D)Wk-8=XBF(sQXU;LqV zc0Y`h3g}Lfl5RSpOpol2zwuD)CkYgTYRrFaVuT86z9R&JgD__K`9dgDqW>|tp@cfES2{vW%#ZZSxWZpGt882A9EItBm1E? zyuSE_8pn?%;QoF0%nH0$WqU+~D`qJa;c)oO1-jI4-*6MMrp1q@vT;%Hjecw2Y??BK zmi$Iu4?PavZJHX8ez)0de`q$F#a@sge;B~*lYlsE5V8m6U6L!;;r( zx~sX>=5iy7NZ}iW$(+&ph|r^sExc4cUw^#qGkAldtI{~+JE^?)#fW6!LfnaGC)Vvu z%+-bN4Yjr!NS}n%{(52H-@8V5u5b@n_G+N7LRIzFEryUvGJ>2wJ|N6OUkMMVMZf11ZToZJklQd_i!kI0frU>YXJt&=CXql0^Y-k36;(D!xpPMo$n z$LFs)^hz+VkmCh!T(g%$C1hu}%NE<5*ULJ8|4KmPl^>+KTA$>HP zKOI|>%}oqmzdSyj0C?h0D)Hx8a+jTMkOjdbYWlIiCK~WH&lZ}_G}i|C=R0Fua_|9P zy%hK=dSS+%ZZJA!0v6A^ zCk^nPH0M+u=Htui0VVR zU#J6C7ohH4Wl>9MvCo}P3PsxbvrHECa7^Hr#k)1A8aY;*=I8&I-w|8F57sY&ZSV<}Z>uZI5i~W3%hjT% z1fG1l72CWzD=^yS0UgrMPx*+uyOEFTlmsp-CVY>aT5zZd>gimF0!hMi+E}8KCZBR0 zd4}k1oC{EiQy=S05<^1M;XyCZB?IcpqI9ZE+4( z;15FNCR{4|^rj$H0Q>2vK(>aupCRXf3LC>_S#N46$Iy9A$v}q)Nf#qT4MTN}fYzIe zXJN)V*=^1^ktPgfv(%7vxdbybvC(*D$o5lxOu*I9!kCw12dHMV5ifyu`tsES`Ewz~ zdnV>UM_H$-LuD?@l=ITvt9;mIo;wyh-*P2_n4qE!s^gj>dcmi~H-9b+Sf;|(!KLrp zTV$bmozlY22TMpQJ?%=xPSy>;D?D3|3t>-J3*xkyg?nP~TP=EB4@EXIzEq0P(sj`5 zmt^a=tQ7J9{J9$KpI0JtATfzD(1jS}2Ah)|om?NIjP(OOh>oUB4BV*_+4X2Lr~&JC z5}~gr1?0uU!fw-QI5}IJ-)X|N@ zj5CSC&5Q_{d_P(#vJXd!g%Cq9*EMt`8qd7?>$A?Al=1_O0G%#%joXmLkiAh6tWoD3 zE4D-=p3;I{wB=vH0|I4&#`ki^#_omO8}`EBJ6%2Gl6usFJc~h> zRZh8EPp#>fX~jpeG@l)JnBQ!R2W?f11?TbfSL(f$!aqC1S|xNx6;1v4)7CWb^!50? zp23^nm9JU{pJcXj3B*CU&_5SIq%+2cJU>oPe2*EB$^x*>)ydBsYRt)n0CUgkFSF|h zV>BnX)PLussO3!u1r^krG#jSrz+6qZ$u?!ozuOH2M z&a!?#C;##-sjpfPKHe)3=<4Pcempz5+k!v;?P7``tAy!oIFoLtL>#CYkQ87hz zxG64L+}J_pok0x;97T<03n0=h*cR7a^|T8nrpvOD9Q__=k0hMC_hWA$M6BZF=Qdv* z_}nFz<0PxZTubml_|3o#k6PEKavRbBxo{A-x4*IPcyL%SlQFvZSY@!e`q&aPlm`mA zpQ<$MXRAyMR50h>G;yY{sJrEmPD~xh zwABCHy?L}UT(Ih#~B0>&Kwxg`LVLqs1FygSW2=4L-XK{fM{c)=5QJ~f=Si_i|X3))^DSLGcY z3dT7_gT^bvykP7?$ZJ4^xg6cs9R7n3JCt*!^*>^#hu1^gtGvZ%admBOg-o~!F^QZF9uiPteY?0p{VyG!p4AsQUoJOSL)#rLtQu@(@N`c;1cjg)qo`5P zV6jpT2TyU+V0$sUVz)`ha;K%W~xk1&~j_+UV=Ed|zD_MMZFoAdx9# zX-&nRly44Ql9iVWB39)or?&*7Bj{N*?m|wCgjbJMTz6c%47sswV?||v9m(U4$$IV4 zc!N6gA1JGv^av8{0(+IW#wG?tjBMZS z2ChT`xV4pC0lv}fYJRYDTc1nCS-Q9Yk)tzbeX{gS9SA$#~b74{|{QPoLFyKvPXI^=(x88?xtZ_sk+i~f-ITJby#d_K#LUZi-5fr!@L#ipr(|gWdXEydI&{R6Ut9?WcfHmz{qn(f+YobI zX^7of_d=z|U-;?yqawv}~zXVQ$oD)|s5^*uq79>`+vHkLB z!*TU~-Yz~+Av9ZbtLH01k%`Z!Jhy)Ps66BQF4JMd{P6(@3S}wxTT=5EEQZNwMk)X> z0)Z}U%gjkH89@d?A+(+xL~n>7lbL8KP$#>S*0RHBlLoNpMcNSI60I-izbkA&n=BAO z;M2LZz8Ov%bq(9l7^lMwN8yR*;b0;GfPqmwc%U;a=RF4iLv*v^ z0mOT>3f@7_=o<cm&Dm4VY2cQZ7dvz8Az-kbvyosS?Sp)_TSpJ2=<1OHz zvHK4lHaJQJUk(FRRD@s%{`y^R8W@OC83Pa)43q}I8LS_nBLM^ommjVCV13JKDIrI;b}vT;m8gLo_kC5Rr)%L=S$`a8arLOn zzN&fVu(F{%r{ie%!e&rEffk|5M-;yQ7L*2(Zy~MM{JM@HqVVYDrYpXirkQ0p1$>9NZ+QMVuV&XQoFyJwFE$=-VdAL7yt- zvLq)4hCpF~x-=sb`?RpYTSF4`UT*0C+`XaRB!lA(e_)mk5{9tQ$xj25XP|lXNQNXI zEck44vM&MGxqkMyDPgF93ip0gzzz zU;02z1cxsD6XEx)%xK2|#KAarvg`*|ix5+EMU_@<0V_#1B1zaadU+jLN{z~gF8*LK z!duV#MU2K9zjD$|!}&nryz?gTb>JG^>#6*+Us8nDe9a@WdJh;a3@cLGrv|_%1-#ue2{9<-hnqL| zeuKuoC&|tobr`x^uS{cDL0HV?hqF#NJv!u4g(p=l2a&N9ve2Pv3X1{-Em3E}q5&%Y z&=J%UBPVA{^Q+^XB^R;N@|BEdc!A<3=V!9s5ufzueG-1>oUAg9Jv!OyRIX|p_nd8A zRwzr~hYs#^(HNV3Z35xAs6hq~Ivwc+ zDwjDp--J^^uKKyAk3Lk-Fu+Q8QV_qpQ2L>*B2VyWb4q^#+VuhcGN_FlI5sowo`$Di zKj*;0jS{S3;Jip}JpZQ27stWRe%Q^GY~)BG%fiAZqzQxwYo5mY_t|Czx4CPq)pi8_ zbSgSMP_nz~6FL9{-TGX`1{YUQ<(6-I!n3g*Q2;@6A=b@nRYAjA>E`xFMh~|X_bVq; zcY7%mRFcnDm0|Gjmqe3izm9S$8)$s&CmsAw$XOd!V$;J$fiGi1Fsyc2N|OUsC*bW;H9GE&@ly7pQJ0uF4<_x+h13`b|*>&;a8%6HCw@#&YUdNyqopcPRaY&b74gP;s(1Yt-^NOFXFl?t_k8XbK+_*QCE@ET1D5w+4TSSOCnU-OHXc+Ws=ug&$ zdc314o4onO?~+7uH8#&Ad|IxqA;df3RA8QDr5hOZ3Rly9&+TCm&z*K((x^w|ll4(i z^8vH)C}4c+mlh=qM^Wr`6Ma1)O^GVY`jOc}edyXRWvf7|uuDbdJ~iRRG&DMNu*$E{ z_jm^Q63t+*N!Z-Jw3u1%j@9b|47pWQLZnRc;{CSbPnr1k&Dj+Z&Fz5IN7qt1?r8&0h zw4&wb;RW-7C6!9)orCErl8AAvu`*PYv%hL5N$QTH2-qe6UQx`%@JMpQW!os-?Gd;4A)<*0X5)(6`}Y zVA;i?ewx9nSjt}a+{4M&f+GrQNB*l594EFd$~yiQOS(wdo5e4d2tc76dz;a?P5*q`Oge&C#EJ8Nxdoy*T zGo+sl&)<2p27m49m_y~QzI=!mfvu`8F?@AQ2)r%T_uVKcnB=Z&pl7Jq@#p7}k8GzB z7tuja9cuGuPXyvn5mvrrf4eX;q_g4DTGk3SnBqRgj3rlRmREzIcCGNh(Auh*1*N|0vHvbmC_L;kOWp zIm$Am3XdKNxV{dQT!Rq{0lryBrdr)wd(kq-p(4X%CCG_AMcj_Aru*W(s@L6ro(Jx2 zl3&3Jms?C%_crTHl>9TODK1qs=&#nVj^`MWb$I}n6FFvkYld+|(BUe}qDmSIpL{y+ z79)*#7Ru@9#FMznxj`i#d7yhfjAi_K|58(syPn%MJmCfu<|hs6x1nUtZr#xqZew-E zIu6NE{~8Zk$GQ0@0B$8IgR+q#?Z(_C&MqHJT2Q?`3tbzY7uPCN`020$ zsTPPF{r_N|19aSzlL_1n(JnN^ZSuM*u-TK&lijH8+PKtiR zl@RoTi)5qsSFfT!6J36^Ax$8({`*5@f4`LUcSh|zhTn?*>-Wb!^b#l#Y1~BNt)yMa zfwr*Yn+2b;_=Z)9%CEL)j&X|aDHU)Zw+er!HBKEB1m_4FQ zO*j}CuynX&En`EEJ6ym$op*BT%gXx+c-gD>5v}E)PKQe_G6^4>bJ2R5>5zaq}cM0*l1C+q#A_|hFgacw;P^??rl3_h>LDw ztRb74a`K5Tkv7V9BC3#Ij<$4jhLmc=1;0{P6?}MVPiyrO*muk}a0%)kAdT2aQ4QR7 zZf7rJ3BBT)N@9hH*d)}%^11klsD^8QmNM+Ws{35%To_`SKw zdZE%m&roYiFYt3!5~nX-57||P@PG7W+pM zD+lNDPwOU)@0sW|JVI02>ElX#=9+}%9MthaI%Ru9^w<2%%hIg^&952mJ4d)tlrCqe z*L52Y8|>RO(|?f2<|ekk(ZyqIgZCO*)V+R`IhJe)I7cCtOT3UY;76foAd)wSo_a_@ zJ}lU${0vCeH{V1?uclCu;8m0e~wkkM2yyw=1FsVg!dDV`Or|fIr zrxfmJf2||d0-T5qec~SEQ>smPq{thasUe#dn;p;_puw!}xig)~9RD=%TJ7gmzgXNRIQ#50y@+V)r;t{e|Ka@0ih zcltj^m{wQ@EUr~j4Aj)9hz`bXCzw-S)Jo)07K&skkypFsn zpki%@6RJ;PN?@_qV@eWzks^20?s_NSS79rsBB}?mkrpSE_c`QopcOUvP<(`_BE&e8;+@ z`fa<|`~10zl%Z6Hb2?26gF~9LT@rPQ=I7MD3;w!l|GAKnAdn$2{$-lFuW>1-Y~j~K z#Ru!qRwjQClkP_yx(kRUOrq5j+Dr= zXyfH%B^WYEnBcqGa!CMjaNK0x%${}fSkXIe9~7gy&HGe4j}dv;(_eWj?l@&P;u3qy z^8Njyo#&?OQ{lAnQr^@sn$KUE5opxbiJB+Wb6tE}d>Q%FKBg%Z*lhnk*3X!ao=Z2% zvAj53L+VRcivS00&b3Am;}E(G`Dwjzt_d`4J}YK3rzc0vxVb|O&$%Y@lM8s7?oV7c z|LJDGmY#9e#Dkt+GfGcSObcH_73~?K2p(#8IWmjenrIuouJPLn-sXt;XBc+i)s-rL+;ljAP%f%3D=630g&fv)_< zK-`7ZWd>|aXSzdNK2h#$2nznlHcdn=+d2wW1b(_ErWEAe$}wPVZkQQx$=qE5K0@_w zG+G+0(^9G0x6&y7J*76Xu`1`(05N-ga__f%yY|fU@u+;U$GH?@7Bef?;Hu`lVCP6n z6*TuCcc0RKN_f*Eh$`@~bNIq?;2w_FvyR}df){X=xH*cjO3kxnNM|qu2h(Q1)QVOZ z1kDpS+%}J9i+2nIk4oC#=}ggKO|z)S;4lHs-HO!H3&P?JneDj6pOF9#qIYS(3u4~h z)jiL~52x1ZicSJC@1)D(fvIvq%RYU8qn}!KcncJxzf^zj``wJP9x5A#5pKf@phLo9i}LK_kaYCm<1nhxv<1A_QJQ@~SE#W$jG$b04P z;QcsM7ssGj2=grw9;hN^@xLy@h+yT)JM$%U-G-ow7r9)g3cxwRb;hSWI%;Gpai0t@ zX!x&?Cnd@QW z6G{eKgI7W>?Ax{U(88o`Zznwl5c+Vdz~*zXyXdQAvek#K?ku7|QPzk=UqY8GrH%vS Np`&T2QK^Ov{TCV<Lx diff --git a/desktop/src-common/advent/core.clj b/desktop/src-common/advent/core.clj index 653f268b..326d751f 100644 --- a/desktop/src-common/advent/core.clj +++ b/desktop/src-common/advent/core.clj @@ -27,7 +27,7 @@ resized )) (defn right-click [screen entities] - (let [entities (update-in entities [:cursor] #(assoc % :cursor-index (+next-cursor+ (:cursor-index %)) :hotspot [63 63]))] + (let [entities (update-in entities [:cursor] #(assoc % :cursor-index (+next-cursor+ (:cursor-index %)) :hotspot [0 0 ]))] (input! :set-cursor-image (cursor "cursor.png" (get-in entities [:cursor :cursor-index])) 0 0) entities)) @@ -48,9 +48,9 @@ :anim (animation 0.075 (for [i (range 8)] (texture (aget player-sheet 0 i)))) :baseline 95 - :origin-x 16 + :origin-x 0 + :origin-y 0 :x 150 :y 95 :x-velocity 1 - :character-x 158 :character-y 95 :id "ego"}] (merge (animation->texture screen (:anim ego)) ego))) @@ -60,28 +60,37 @@ [target-x target-y] (first target-path) target {:x target-x :y target-y}] (if (and target (seq target-path)) - (let [delta-x (- (:x target) (:character-x ego)) - delta-y (- (:y target) (:character-y ego)) + (let [scale-fn (-> entities :background :scale-fn) + delta-x (- (:x target) (:x ego)) + delta-y (- (:y target) (:y ego)) mag (Math/sqrt (+ (* delta-x delta-x) (* delta-y delta-y))) vector-x (* 1.5 (/ delta-x mag)) vector-y (* 1.5 (/ delta-y mag))] (if (< mag 1) (update-in ego [:target-path] rest) - (merge (as-> ego _ - (update-in _ [:x] #(+ % vector-x)) - (update-in _ [:y] #(+ % vector-y)) - (assoc-in _ [:character-x] (+ 8 (:x _))) - (assoc-in _ [:character-y] (:y _)) - (assoc-in _ [:baseline] (- 240 (:y _))) - (assoc-in _ [:anim] (if (< vector-x 0) - (:left _) - (:right _))) - (assoc-in _ [:scale-x] (/ 1 (/ 240 (- 310 (:y _))))) - (assoc-in _ [:scale-y] (/ 1 (/ 240 (- 310 (:y _)))))) - - (animation->texture screen (:anim ego))))) + (do + (merge (as-> ego _ + (update-in _ [:x] #(+ % vector-x)) + (update-in _ [:y] #(+ % vector-y)) + (assoc-in _ [:baseline] (- 240 (:y _))) + (assoc-in _ [:anim] (if (< vector-x 0) + (:left _) + (:right _))) + (assoc-in _ [:scale-x] (scale-fn (:y _))) + (assoc-in _ [:scale-y] (scale-fn (:y _)))) + + (animation->texture screen (:anim ego)))))) (merge (dissoc ego :target-path) (texture (animation! (:anim ego) :get-key-frame 0.6)))))) + +(defn scaler-fn-with-baseline [baseline minimum-size & [maximum-size]] + (let [maximum-size (or maximum-size 1.0)] + (fn [y] + (if (< y baseline) maximum-size + (let [percent-complete (- 1.0 (/ (- y baseline) (- +screen-height+ baseline))) + range (+ (* percent-complete (- maximum-size minimum-size)) minimum-size)] + range))))) + (defscreen main-screen :on-show (fn [screen entities] @@ -98,7 +107,8 @@ :background (assoc background :id "background" :x 0 :y 0 :collision (advent.pathfind/map-from-resource "pathfind-test-big.png") - :baseline 0) + :baseline 0 + :scale-fn (scaler-fn-with-baseline 110 0.10 1.10)) :house (assoc house :x 0 :y 0 :baseline 122)