From 6cb87b4d28e6fbc5e84fcaeafd9fe48db3a9538e Mon Sep 17 00:00:00 2001 From: jgk Date: Sun, 21 Mar 2021 14:15:01 +0100 Subject: [PATCH] Tweak automatic zooming --- moduleFlow.dia | Bin 6378 -> 6505 bytes src/Dodge/Rendering.hs | 5 ----- src/Dodge/Update.hs | 2 +- src/Dodge/{ => Update}/Camera.hs | 23 ++++++++++------------- 4 files changed, 11 insertions(+), 19 deletions(-) rename src/Dodge/{ => Update}/Camera.hs (92%) diff --git a/moduleFlow.dia b/moduleFlow.dia index b42527724d12c7a9ba937f407fe3221edae345f4..e9cca2216f76fe359c5bad5d9056891ad60d6405 100644 GIT binary patch literal 6505 zcmV-v8J6ZBiwFP!000021MOX1b0f#CecxZ9l3%&KjsEU1>y+)>B(69WSL~D@RU>IE z@tPu46t!#l;r{ju^iV62n&FJt)BIAa%HAcnHJBy`zyTUK`14Ez=n zFn)ScPA;aGqsi6B)BpbbxA*S!FJHg=^W~`c6aIHKD{fBkHzs%V>f`D4e17|<4<9~% z{>;V?cg1`*DA1!{S08maeqs>bJ#Jc|I$P-lKI2!izN-$q5nTyvsiV9izZiJfAx*}s=B4c8&B7&yU|7= z^P6IJHJZGXgP+d0`X~f*LJ0ggw0E9cW#RENdA+#v?TQ<3SKMs7;zoC8x6|2tR*dE^ zMV?QmJt!r z#M7@wK5^C68lBLkD|M+iaY9%3qs#KH=w-gp#J`|65)pw*S}D&)e7$iMg0gCb%EO zq3>^}sIPZh_6*fqD;PD1#mB6iEpGMOCvy zTKe+yY7%jNzA9lx+nrpE%P&&64N``}Fd+v*GrO6*a$Me=T})?_mteWiZ3QvG=e^w8 z6K>;%KmUOUS=Z(0>U!QR44CJA2qTR;tBIuAO~h-Y+!mLY%kXezJDhF!#mvj!Uwlfd z9$;ln(Oacyr*b~JD4yH2*Wba5C#?2sam!B`S8+m@txv70Y6g0M3hTU%leG+-*2M6fKf$NX zL?Ljvn%tE2UuikHzp25L>wI6GCu#ylAD;Zg=8gkm9S1n3l(7S;nNR6DP>%EqIpjR7 z@M0h>^C{g&51Z@aKpeV4q5QL->_Cpnf&5a8$KT;S&+ljDchm8BL`s-_N_w9nm^PBk z1kX-odrn0}Mz&Bb-?qa^%E8FrbD%!7DW`y+v0Zb+K zD`?d1LQ?Q6fJj6uI?qt4{YoF3?BZ8&D>mwICi{|o^d+PD92GCSk<@Mk@t-v0MljgV zZe)vYMEBrEJO?oVhk>OrY2Ap^l_Z7F$`GFwubdqS9$qJQBk`N;;zktnekndN*`*wn zOZk2>3Uyj{1r-2g$C5lgLE|t$?_vy?>{YhqRZOf`;mkV3>!HX>q&+-AQSyr@IzK@h zj1WXoQI|-3g3`}6yEzu_yw7LzN9$OAC_k0szn9siq<1L{RhI07Vk#e{Y|*ROK8n1Y z^#f3hEPUEBFC`a}@L8dhm-HHuhzYM#7kfo-vfH`5TRBU~F6F3P%D>PkWOuTK)R#w? zIRMR+a4Nf#ZMhQ{UEZacGfE7k#1JCs2?|MqN|JGOf`T?4sBl<^*GY@K`q*SQccQs| zu6g-n{ssH zQZQk>p)8a)iED=Y*kream$V|Eq#Un1`A<2yEa|V=r=<2Nk~1DMUXp>y8Lut2HAXkY zgJ2-&GUR-d!^5L z5tGG$3VL#}*EZcrbep^|j0=zh`~s7<$qUUeK&j*m5q?#Ro$-!oKR|n{P12HK6r+L|FlGqUNKTDP zktMvXek6W#9V@zEsh}$-xQ>i%r7UhUy~;MC5zY*C9$UyY!YQ1{&*ki9G%3c$ld)pO}8jdH@1Ua@ZL`dl`f0fCBnTQ z&@9&_4Wbz9TR$~Wp!F9K3ojcK{pOur#7o_i<_gTAC zd1u0nZd`zm+H!HbdOvl8Bwhv6CYNW$Y&QMeteiqbUixfYPOjENGaW0U75sIS@WlFm z_rjw;{>#ZVD$&9l&ZmKa^5p4X@vAT|o`srUhQ%*K^DjTz-<4bHNzru=if)C5N&zgS zRdl0`3x(963^6hrj2wbwr&W4Iuis~Fl%^G!s^VK@MbC=tZPfguMfgnZq)~V3epai5=^rn5*_FG70!+mClesp^7V)UHvO3(Xfyrsv#B7jSo zqy>e5-9sSiF+vT2;%%!*vgS%8R`aH9)~r-y5UM$j*_qT4dgDG{F15^~h6f7-US&-`GEFxznr_stG(Eam z4LCY5XR6|wq#m6!r*&u}&~^xtX>F>S9-BN7*R;vnf@UQ_Wq*F0S`OkM9lGeFeMk!7 z7aCyFwhsxdLJz7$e-2cRBZ6F~lk0iYF6#-URYlmQq>x$Bv!XvK`mWr$fF9=Na?1^I znhCopeD0QrqtYB6fI8QTW{iN;flN)RO@T!BJY3T@YnBp8z4D>wRc@L&$cnzNip~#G z&qWWzge>Sqh6>Wo5>l4(?VKqt#Ss4lT~SUbZ&K@d(>81Qfw=~=AQ5+2&2u8|i<;|Q zsd@a&FojREQ&lg%a%mIp06`EpVn}Ii`n#80r&jT%E!Hk|l1o|&60(jT8)lF4<<{>? z%j4_e0;w!e`=jGJF=&^PE0Scx>A6Ks65;rYZ=p=4X`i+9Qrr;vE#4RxI;;9|sk)6y z!^zZ|{%!fksGK$FdvsY`MZ+YCJIyB^C`}yFT9X=i@7$u<$pzN7ja~bB`NvtSt~c(n zM%O)&pgKbNLNB*}*DM7sflxl0EwOfKsL;2IDMK3vD%5m!Mi0o{YkE^^|1DdYEn6AC ziItICvocNgCB7QZk#+FSQRIT{%yD#zuQtH6hyM_4Q5rthWY^+tBs7 zu{FqeVsAqS*l$45r0UTHdFTj*Gu13T%M%Y3x4MeGt&)@n40%C1&KEj)zQ1Xk^@+d` z;uxAlo;Cf*G+jsK2$JY|JI{`YA5nnuxuw*XPCcEIB7=pbFr5hRhopU&CKCOZy! zhCD>=h$(medwW^T%iIQ^oKTwh=c|l-9?aPv=}zZVl<%QKQybw2(lDR2${Vy2l@sBV zcNQ2giqNjelzEv4mv80$v+9V z(=4})E;;Q*0XkV1&A9b}?w4z4=}^m%aiJuX+_dYwTavqJi*;O*Lem|BZAn`L6O;_6 zQdXNY+}XmcZ#Q>)nBs1ahh=n~>w7_DcVGvKGm+4=pd7CjazGCSGc;tJh#o+v4265x zUzb3b0`1H_d&GfopfCSndNsPp!Eowe_&u5k8FUtyRGG$n%fYaWE~;L9fhK%|ka8>r zN}}>6Az&ap5t;ZQf>>c>W$?L884@>c^W{>`3f~Mw17W!h?galv1wl?25^Of+;p=*$Q@6p|b|Fc{!no9R8cgofUy1T1yE- zDr_aH2+B^VO`GaFLDj}R)-83C!$7Jqm2B;?KU134Sp=->3y{7jNUlD5iz!wag;e!! z%a82g9OiI_noF}MC=%9gsF*gMn{bi?*6qtlPKa>jKze3dT4xpGn%3!-bvYW&Mh5mU z9PVsnTzrjVtdH$j;Anw*=~3a-7p^@Ls)SHU>l^E~S6AG~!y;&bB!W|8k0pLi)z;~+ zDa(gD&Bw!U(X8kgv%+_4Rs7+EMw$r^L~8F)A*CGxVi^pPs?cat`p~{ZBSWRr7`(X_ zli@?xpdCog*3*bB#)NO)W0;N0+YOA?F$*V6;j2DKz^%4ope(a#J2FTTUr0hNqwzhQ zCh903UMEfE_p!-twbKHGdX~)BIhlV{$^8GI=1*__QI2nOHa~SXA2gFjs)2IMLvAGQ zE1loLtHihB&>=0NM=Iw{$u)&?94zE;J$z4dm;?_6$2@H>PW%SD9S&l(;shUltR>z4eU0#s^sAq z89*=O6fq!6CnZfnGggK4q|#eY;a*)7MA8WDisKwRm(9Ccns#~m}hlqHZs}B zbTKk&S1H!$?hDXNnCdW8r=@l$NwAOvCiGu~?miV>Ce5(+vB!=XR+}T@Ba4WCna;+S zxt(uYc~wh1GLDW#%9FTRP$sjZqoaTvoOAN4lfgzn0dtzTa z-XonSsTPLDidUmUy(4ZC4GWo6ode-)U|wG!y<7WY4~2|?C{UFT(XUcc4{6dM_kpKT zIw$smjlfm4&(c$gWm}na)ePn^#BYT}@di9wm^VvEpwwM;l{-0wf78 zaE2g~k^9l+WkP+Wq~5dE(8p9IS5jl3*OL3sRwg%k9kQA6J>>Nt>l1C-`Ac+^?_ptP zyc^PRL#ceIXLdHFnQ7c(ZILx6mU?AcN4A1wj+UaCY3nD=W+sPAd=Je``@x~+eH*VmS<@x`;e%} zM}}KJGSqM|NjF2Yv=uoHZnO^!pu`rSFj6*qLIH}1Qilk=Js9>zhI^N~WnqO;eT28n z81>C2-1KhiXLWRuelH5p&AxD|SuqtkffE!7TWftlk1lCRLemy&qg($-vfpN6AP~2S zm7~C1laTGp%7}A*ko*K%_P~1rG87=mv>~t}XI}}T2sosjB$W%v!~t+0JM0qw3PfVL za`wpL-*3m$i{Enmn>zk|Hl0f6_;>s9Z*&hvFXP2J`4P#4b!5*q1LcUW-aGCf*mtLN zLWtV9$2vAo41q=aK~05ZRVQ*jMqHwb==nqrg5M@cjUv%9yA6W%A(-d!4dNy?%o=>pZJyJwv^kXjzIdOjRxREtUxPNp$E! ztT1L|1M^l4jE%~(`CX;iY2Q`==%U=UPsO--me@61~ZiQBT8Pm2vAq2gWw4 zMjCb-82dvhZ?g=*YN*&mjSJ;%q31zH9NzX^-Uet3$m(@i%IT2XQX7VVmT?3oeMf&TUGQq?kjv)Zd75DprVyJqVkk9^0TP)Q%SAQeOD8STf5n6^$GnyR1Wu%F=@E5k zIH-jzFns9DzLTv?x*5p3wKAfINJ$&vN!NYKBSgWh3h{z6;AlFj1VOs&4R>k7q?+y3 ztV5I$Oon7ewZIa^^uoG8wl3MathX+3z{W-PU|iy#|E~5$DF{`T28;~jj}=$cB4g5; zm--FXTOu+Wct@(u!qE5)T8iee1?uDx$Zs0D?B4|B_TmH+UA#?$LZ$RnAt-dx?5;PD za)v~GthlG~IU;3ILJynk$bMn%^O6L=&5{I_OA=C-B>Yf3Oz-EpAR%=@0`UP0K%~K$ z^m(9M|Mdt>=ro=-AHtzsu(TW?Engc@S9%yFC()M(CWI0sSqkAdg>I9{83K{^R`sTR z)^fIi)`D&n?{h;xhY!!i?dttJiO6_yXL!+UL^KWiG1kqP1Icxv5*hA9i1dsxL}QPk zsH(DE2KFJ_RgHk8QX*(OuTxA~po5&YpqDy_=GIY&3L*%0!m7j(YSS+3NyROMR(I<+ zy{{ag?rnf-4>>?Rn6hymP&N%lu_i{c*_aw z!VgxCkmq`gT((OCPyiEFzB_l5Q&`weh0^Bw6z?H&a`lw5U%~ zwQ%6(r$2{+#zS!zh6hLose{s{eb#y(r62vA%t2{}j9+3>yW5!5iUZ*oGfY`ijeRm8 z%`gBuUg^H@dJj0pFlhAL*-lF_$_-;eTDZu1Y4OVO=-VY2le_H@u<}5xi)3C~;{!t~ zH~PuC@Q8r1Z|kCbC*wlg3xSo;k!5t5AvN2VWcFpp45?Q2U|(oF4^=vuw51u8uy)Q- zB}NshIHSUZUb}IoxvPPx-(hXpmjtJ~ECq^ac&KV#i(sBrKZ|T$-ky1JQR(zujpDV@ zwd3y%6WnV@?Ld&Y=BpaZP>G_NulE(Lfg>t)nY!q!mwk3it-GamBySR?)-mw%eF)2` z_3o+lZ|>*QzfPyKcRv>MYkcP&qJa76;+JAPzI*r6=h6J)`rXg7(bZKsqh&b(pS&(i z(%CubwqP>Xg>9Wn)tVkEj~CydjDVTlybwAaqcMaQGJwY+N6|#18V3BNr*Qf51wvZjN+r&w z@*>*{M^tLSN)q%!QUI)md1WGvS~tMj%O<-4R^ylQvMvMGqXMj`k~!I$9rEO>U&tutTDx<=5YlR6Z`oYz2B-3bswa7;NLBx|KiYM!X3ebzFpE9oFC-I$&s zS3K`6cJxst&pU#SF1odWIz+t(BL@IXrKA=`Nk)BOLe(W8Qm-{HDhk#S>k+=y|W<$eHy=}a%WMc5eKI0MW{A56ORNvT_aS<9sfl7w_a z;s}#gSEzAQ$=y+7!#3-x(ZMJi@TIcSWzcwJrJxW48hfZTuU?OfhjRAyyXpo0cQq?+ PzJB-r`*o+c6RrUO0?4ux literal 6378 zcmVSFFyR=U_2gtz(pUzrV`^oUUT(w+xH62f9XP*Y+kLO?gy8Jo+u)NTRl`Czy`rY8VxSSP(-|8>U z@yGk^E`C?c)-QZ}H=U1g$>QPe#gdxq(Ep#US+1JnqRI8wUwxy#DsO4|#?!T`ZnRd& z;&w2*9!*}#!B1ygeiVW^Aq0LL+B?s!vhetsyk6YpZpDpvD{i)1aijUg-E_8?4MvNX zA}^=YaWR;bQWvxPVtYCBtHBr_u}#~G*u}4-#bVlU|Gy5#^EMkO-~OU)uhrb^*=V>~ zaaUHA6<@%s=FUe7M)%Gp_|LEKLNo< zJpFp)6IWiX)(H(=p$ol@6S}@14U2ih!@Rnt=1MoqWgnV8_w{v=AI)$yzZ(x8Hg92l zQO&gmlf?*a*kE1^JF+x&rgAd4d%u{zU$YYlB~35?x424d|8J(Bcd;W9b2Xhza6cG_ zzQ3EIzRq{-8OpcTV$>iOAG2b%ywz`?qSLdby;*+9XUh!?p1n1|{d{_S_3Vi+zq;j< z{I~J+^VQ8@wm5r#_U-id^QUkegYnVuIAwVM6wVW_CMy#kjb=xSGx;FN5VSw-v+$pZ9WW zPjMSJ{P_<=$hs*;*EfrLVZc1^LKtb(MFo;-HW9CpayJ+bSHr`#?Qpi`7qcjSfAJ}; zdw{hyb)Q54Nh|Bt@znS88bGzdj@5;<)5)Sr7QKJ=D+Y(-2fU@hWPW}&Up$bZKpiiC z^&iFfQ?VFb4W8Sy*Wba5C#>>oajQ=mS8+mDtxu(@Y6iN83hTU%leHQ+ZNTuHKZQ@* ziNe6)dU9J-f2GCb{^x?@*Z0|TA)^UJiN*UXen)#Hj1La7+lta$L z3NL!nGN00Ybg;QL4#c4=6v{vQ$qwYC9LO(&@%THu=f(Z3_-;BLk4Oo#Pf71n1k*;6 znc&%}?9Qo(Xf%S)is&i9q%k%n9^uT|AO{RW63MjeDHUENMJ4guYlllr#wDlhR=yp~ zi|j;p;6xCZC^QZLHan4BIT0C+Ogt09Lr++yos=oDiDzJ!lBAS<0yq>`M;Omy8w*RJ`m)Qo9k1|D+)|f?z+p zksZ1b-GLkN97GQs0!w4kx)G;KNeZ8pK0Yg6IolIFyiV*!;y2mGjVR{*3O+H}rJR&Y z`F=7Abz1WQ6#!+&k{q9)ap<9UF$PTbD!cM3Cf2KPW*x@sp~y<4Jv>2C@{1@sKS3Le zA&8=)E|K^IrJHTGb1d9>pU>t`*0KChd@9C&FS1KX?@}15EZGOeR6a`Cp;xh86nQ!8 zd!QIu__SqSN-ibgvqC8^=`}_oCcI8v>=nJqcIWbL?JOm`l#_BP|3agX-N_D8U!G1- zKr~P9r0mX}_-J=xnNt>eWl2TSdST0~CrM}qjj??x zm@wW@7RsB%HN#zOvR%SUT9HpuPS>6Mr2`fK(nseOv%jE9VuWMFc}Ylm%((GBq+ z7zjGKHW5gnUCIkBx?M`5Dz6gHS~@c~sjIxY*krpZFR_~Pa@nbzmQ$HdZ*#d<`kWUr zS@fu&Cl`C|(w#)N$qU1{0NKMYFln2-&7SNbTIshKBeqPl4rXdlbQ@eZj9fhABpaacTD>p+FNasmJFj96~urseV|5iYE+6W z;cfII@tbQ|(FH37T{*#ZVr(nL;4agv>;jE&W~lSnLaq@`;Y5BeX1AlsVEoLJz@sOT z9Uv0t4Pi;2_|U{KTMBZ4WyLcqt)$v=*jn&yu^2R&li}!Ukr?$ve}L`I_pJh1^}|KCl?LY_eZ#^xUr&gE0|3?#YDA?=NY(MRC5h9c&Zt{e+>?a4;KUxc38^ z<*KAXG-HJjOn{P0qC1x|))N>%01)G%Q^rxNu>-l}y4$wSooLf9iplT=>3i#aRxVZE znQ)_97vQ6|T-~kTPt_oaSA}Vl;l*G!n|`iWP9Y*MeK9U3*PBB#9V?W} z!lOU_%h?So(b5|(rh$R-?CD?et1vH~g^FK>G3ZK;8G@O zL1Dn|ArSQ#q5430+iH@mxe|%hyl$HnD-{`pG7liLJ3lowS5a~M-t;`WBT_Lf9M>h4 zic9Iw6;s;lK&ILg*mbnbZiqcAqboTINy1g9QSwvZkMyrkfZ|H)>y+9^I@4 z937Z5WpPbXkItFXIf77y+pRnVMAF1`_S_aCO_PSV|=I%7>m;xozekEBc`-IzLK1 z7aa@}vY?k4Do8s^NLk9abEdcyef$%2NjagsNv-E~+pOdV<{HeBMBHUH&xyD%YOeRC z=J7Mb6h6&PmA&}NrA@d41VP*g=u=*sqj$&GUUHpU&Fi*VxztH6X(^opW<5W#xIN0B zTfZ+&kFSXf#IiswkdEubfxDDkkt7>V&@F0`2uE0a2cdpx;)V!t@y58&S=CQV z)ooNNPNvrMZ;L-h#jH->qf6sTDke$%X+H5#Y2uOAn$*a9=avmmE-<%k?b^cky6%Yx)lsA`^lA%u#Zu4`DAGr>B{nV%Rr+>0X=rP(LXB4!^nlD?)1OlLZ`sQ1 z*vj~Atc={5m8r8Y@fCTFw8I9jm96`h+LBOuseSP1%6Z~6HrmUw5z!{Ev9H@_wKZ_u zhR)BetwD|_4i-AVVFwg-svcdGhmKG+0t4r){m84u?$PLnwzR<~Y{&m}| zP6h^uV`v(A*7Ot8bRCr=NTTP>TstCuOabC^OQ|oNdO{~5gQcV}p%Vq_@Y*Jy(Ami* zTMl}LJV@Z@1RRl8{vD>FrT#28?+Lo z6XBG17Kj%`Xxa4ItAu%|>J3(`lT7y{dLZRDt}_%}@^CC|H>RqdsmAtxGv}X<8kNT6 zpM=|MmRm-bopz!Ct*nb?-1k5Q~Jvb6Zzro_ax+kCl{GlR$-{SYGcjR&lFP3@FM-zf2#4HX|4 zE|(zM6FFLrT;E{iDx<)$-dp4vU)IgMa8go2%F3j4Nf3s|21!I%)F)z-pr9^-sHx>J zw=Oo>CV(}FmhJP2(;^43Cl$bchxfal z`%+>h-)eKXdQ#!)KZ}R|`Gi484petgd!*49hoTLe2S@HaPL1wT=_HhDS<-5q6@e#O zO9_3dY$d)3%1)?lJL_A8sXBp*~W8!rZlay7_e@xK>DH}x%}uYrdVZE zq^kE@e`Js6Fo!eLTtUdcC6-Rr z)a$P)&4)Y9=fiK&tmqiC!uM-c{PAET&4dS{ws)wI()Iy^8N^5>Hrkd%v}RANBQtNX)eEuO}49^79iBKY`)If{FBP&{|7aHdi#%Je3#StsnhwOnKV-Mlw%%p zD{)u({1#p%z8Qy3X)$`Fdft?5Qz*y5QV!Ss_cV=3@KABg({|&;Z?N6zuofcwkkj%Z zKhCC$X}}5Dha~U73F#{072r(d2Ao}=39I-9oM&Gk*J=AYozhT_Br`S)C6k^=NYTOz zp0xX>W{(vsfwI0@hg5|Z8+j=JZM$+|ZfO(WDsI(k>W()n$=aO$crybPqK<4}zsXf4 zkH^RWdLgHX16evLX&#!fDx@csHiuzjV995L3!AdAG{sS=K;=!%&@;+?^!BQWBWZfDzjJRCt**!`j6jTV_~oM#LwEh<};R z#>3ptx2wFWB_Whh*A&Oxy9Hes+@ zyTQt(7Rm#D(*SYh(W2fFH;IOYOsdX6I2)MP7fA2dzSv`7BOnq~D6x;|E9*j&&E^fjDL5Jf1`UaI+-ul%8y7UEJ9u)<^$!3uiiWEAlP@O zbixp|c8^tTo(O?O^Fd7+$*NZ5e2ln6718sF41(WgkQzmzW%dh#^)ZwEV&b;k7^A_EV@#PED5%#?uxsqbe z2puSnyi=a0dI{n`LD5c_l&QDcO;$8+sL=mu$pN~CxLgs7=wVAd#y-+ol_>57>r{m0_KYQ!-!(2gNtIA7Aq~<7P63<7;9Yv zHAbuv&nD*W1~L03-Z5}IBfh9GRilZa+&BUxGBK8ma>SQTTBZMr5nqmZEdeMvk+z{p z)S=;^9tXwle9aAn(`8hz^jFHo}vx`;=#hf>{;tf->M}JgEdhy6g>iX<<^u z_A1t4lo3pZWJWcFC5q{#b%AVMvUS;PUEqj~i|oL-#6SOS?Tb>xOsbgyBg6b-#TE6) zn6&1ldV|%Lh|C7wk!rFqG=GDZqIqlxb@B}4Hyyeh-U#I8>I4&Ay-kxsrSw!HD0I^7 zt~ZZz`ow*#xTpC!B4t%V2b*h2e_`$OngqYgngo?=5>nSB{4jW!-Y;@RLh6bHA_NwI zkp^ed=ZSLN7bMh0r}4b`5Dx8vrR4x=3EP0$(!(q{iM~WIA(SA=QV73o=r);LU?9@m zt6sOyO42saTF{N+eQxRJ@Zq_-Tfd(t5jkGmTfAttVw#4-nCoWDk>t8ii41olAU$IY z@z^62Rb{rzz#(M2${CPUN(4>kb&5$V^h>gdOiGchONXhhy>U_)+rhX$ea;Telj!bjC{HbA6`bvJ9-p{V`(DNM(J?Aup zk^DU&0FkTacL-9W>*dM7TSGS2T9LHNlW`@yr7m*Kts{&IA_#WEs>BerZkN@x;ub=) zyY<`h_hy88un5&2GeSL@x^+@^SB7$->ynB}g$i}+T3T@+b?bt8B4xM(e zy>_kKV7fqy8JZp_H2r?^3Gv1>_j0GlrH||`79)=gNp}TFZT#>6N!C0}&eWDCt?H9h zE*#kT>Ce8P0a4tA@d467YEW9Y&r0v3^rN4X8I) z`XQj>rS1!_4}fJ1L8Ir+wpxlPHw+4CU?c0K$1CH}w@Wc5_uC?1<&jty$-K742aZ&3 z^pkbr5rDC4>!N%s<3i*MftS#cWptS%HQSeD_GQl;saADhUuZxNl{%TUwHcJKcFs{L zMhR7%QDH`}-8$3U*1%Nnu(Iw;g41o50wEe6%9=MuFwe@LMK&*Q&%C&(bo#!A@!II( z@%M%a?zN+SAV^&FRSsq-MN!e$`;ynd5t+J7UG>$;KHH_%-AX@_Hwjbg2)uk3!g6Z8 zeQN!i`^EIH)9LKpkAuYxzVi;FfW_$Qm%(^EfA`bp(cs0$WjO(#yf94C z**WR9U^3T*?VL^3nhr{jm*1d_2s7JxA#^%MBZL+*1dn}=qMa}@jQB}Qc38j7inW3X z#QJTPQb(^+`sIwGJkBUbx-WsWKD=>8Eh1eTPjzUO2irqLm^je2%=kx16z2k`Zii5k z3W>wqPBz(Y?52`J=K_+GjdFjU6-5qRQ-`jOd84U=+T_S}ACaqz=WzM*1wz`ul}emV z=|#A;zVDeaG?6n9tca8c%e8x~N~3Z|l`YiP(2#BgT`~ti!?b{$nSJB&sy)usY;+R^ z(0~j;9Z{(RR+6BXl0v|0m{%s!sI?1NJK1ErfYtbwysXOs>q!NysFFF^nm%GhWT}-4 z2s1~lyDWHi(XBII%(}*)ODAc+thy5*`rw#yK1kL|+0;Z)b^ENOSXa_PSh_Vo sL#}u}*x1oWl{`m>j^*p|;Gvj({jPk0|6R`pw_m^ee{*Vg2IZpx0BZ=6%m4rY diff --git a/src/Dodge/Rendering.hs b/src/Dodge/Rendering.hs index e6f53922b..a75699626 100644 --- a/src/Dodge/Rendering.hs +++ b/src/Dodge/Rendering.hs @@ -393,11 +393,6 @@ drawItemName w flIt | magV (_crPos (you w) -.- _flItPos flIt) < 100 nameOfItem = _itName $ _flIt flIt zoom = _cameraZoom w -ringPict :: Drawing -ringPict = onLayer LabelLayer $ dShadCol white $ pictures [line [(-8,10),(-15,10),(-15,-10),(-8,-10)] - ,line [( 8,10),( 15,10),( 15,-10),( 8,-10)] - ] - dShadCol :: Color -> Picture -> Picture dShadCol c p = pictures $ [ color black $ uncurry translate (1.2,-1.2) p diff --git a/src/Dodge/Update.hs b/src/Dodge/Update.hs index 211436eb4..e1c1e4f20 100644 --- a/src/Dodge/Update.hs +++ b/src/Dodge/Update.hs @@ -4,7 +4,7 @@ import Dodge.Data import Dodge.Base import Dodge.WallCreatureCollisions import Dodge.LevelGen.Block -import Dodge.Camera +import Dodge.Update.Camera import Dodge.SoundLogic import Dodge.Inventory diff --git a/src/Dodge/Camera.hs b/src/Dodge/Update/Camera.hs similarity index 92% rename from src/Dodge/Camera.hs rename to src/Dodge/Update/Camera.hs index 033c056e1..dd265d3c0 100644 --- a/src/Dodge/Camera.hs +++ b/src/Dodge/Update/Camera.hs @@ -1,4 +1,4 @@ -module Dodge.Camera where +module Dodge.Update.Camera where import Dodge.Data import Dodge.Base @@ -45,9 +45,6 @@ moveCamera w = w & cameraPos .~ idealPos sightFrom | isCam = camCenter | otherwise = ypos - - - updateScopeZoom :: World -> World updateScopeZoom w | SDL.ButtonRight `S.member` _mouseButtons w = case w ^? scppoint of @@ -122,16 +119,13 @@ zoomCamOut w | SDL.KeycodeK `S.member` _keys w = w {_cameraZoom = max (_cameraZoom w - 0.01) 0.01} | otherwise = w --- the 395 here limits the max zoom out, is 25 less than the current screen --- size, thus matches up with it zoomCam :: World -> World ---zoomCam w = w zoomCam w = over cameraZoom changeZoom w where maxViewDistance = 800 camPos = _cameraCenter w camRot = _cameraRot w - wallZoom = min (halfWidth w / (horizontalMax+10) ) - (halfHeight w / (verticalMax+10) ) + wallZoom = min (halfWidth w / (horizontalMax+50) ) + (halfHeight w / (verticalMax+50) ) idealZoom | SDL.ButtonRight `S.member` _mouseButtons w = scZoom * ( @@ -143,10 +137,13 @@ zoomCam w = over cameraZoom changeZoom w = min (fromMaybe 20 $ yourItem w ^? itZoom . itZoomMax) $ max (fromMaybe 0.2 (yourItem w ^? itZoom . itZoomMin)) (wallZoom * fromMaybe 1 (yourItem w ^? itZoom . itZoomFac)) - changeZoom curZoom | curZoom > idealZoom + 0.01 = 0.05 * (19*curZoom + idealZoom) - | curZoom < idealZoom - 0.01 = 0.05 * (19*curZoom + idealZoom) - | otherwise = idealZoom --- zs = take 20 [-maxViewDistance,0 - 0.9*maxViewDistance..] + changeZoom curZoom + | curZoom > idealZoom + 0.01 = ((zoomOutSpeed-1)*curZoom + idealZoom) / zoomOutSpeed + | curZoom < idealZoom - 0.01 = ((zoomInSpeed-1)*curZoom + idealZoom) / zoomInSpeed + | otherwise = idealZoom + -- these speeds are inverted, larger means slower + zoomInSpeed = 25 + zoomOutSpeed = 15 zs = take 9 [-maxViewDistance,0 - 0.8*maxViewDistance..] rRays = rotF [( maxViewDistance,y) | y <- zs] lRays = rotF [(-maxViewDistance,y) | y <- zs]