From c6e0ef7c0a4252bc39b44b1589227bd471086993 Mon Sep 17 00:00:00 2001 From: wan-may Date: Tue, 23 Jul 2024 03:15:11 -0300 Subject: [PATCH] Render borders with edge-detection shader; render radar ranges to file Add top level files to built-in mod --- data/graphics/blur.bmp | Bin 146996 -> 437814 bytes main.lua | 4 ++ map/blur.lua | 113 +++++++++++++++++++++++++++++++++++++++++ map/bmp.lua | 24 +++++++++ map/map.lua | 104 ++++++++++++++++++++++++------------- map/saveoptions.lua | 19 +++++++ map/territory.lua | 1 - map/travelNodes.lua | 2 +- mod.txt | 5 ++ screenshot.bmp | Bin 0 -> 98358 bytes shaders/dilate.lua | 46 +++++++++++++++++ shaders/sailable.lua | 36 +++++++++++++ shaders/territory.lua | 54 ++++++++++++++++++++ ui/loadmodal.lua | 4 ++ ui/menu/cities.lua | 11 ---- ui/modal.lua | 3 +- ui/savemodal.lua | 30 ++++++----- ui/saveprogress.lua | 36 +++++++++++++ 18 files changed, 428 insertions(+), 64 deletions(-) create mode 100644 map/blur.lua create mode 100644 map/saveoptions.lua create mode 100644 mod.txt create mode 100644 screenshot.bmp create mode 100644 shaders/dilate.lua create mode 100644 shaders/sailable.lua create mode 100644 shaders/territory.lua create mode 100644 ui/saveprogress.lua diff --git a/data/graphics/blur.bmp b/data/graphics/blur.bmp index 0c1628bc0e3c217cad7d0c7dc1b12eef229525db..cc815add534f4d3a75458f21bfa9fdde084f2466 100644 GIT binary patch literal 437814 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

(u9`Q;A+9>>X!CE zFts2uY|pUx>~4B)*DX~?HCF2uFWVQ+vo>ga!)jS50g5T>uHM>=X(F=-*wJ%^|DU}( zd)93`>pE_LXt)Xmf&t45C`GF*ZnP{=0|^Mh#5yRZBOwV$p#eiWNZ*H$hC|{BCXnVB zLLypJ*<4xvSKj6pKkxfp>pA1hx7lm2-S52~4s(w=<`~a-n&0yqW6rhq4tK21RH}+n zw(*V&itdW9MNbat-FR9AoTXs{8>?0@UdbQiU{z7T5~)TurRR2fIX_gJB%52KkSA5=CAut59WI?Tdg=V+N5y z+8zm%&?Pav&Jk=d1Lmn{6X6~Hm)Ug-F#XiTW;IwlNe>!i)redD7NTuzxU_Wlr%sP( zFjAH|D37u!r}4ilsMz8$9>?QeSvF2{4_KOzO5d0mAZ zH5ktaS2e2#VoAtfi_RFeW4x>W!L0(v-W^&@oPtuD5kl4EQ3YZm!iR9zM0Bbzl>`HK9dGC_BG3`iku*)Z2pSgxT6NTgCu#3(8ec5r zk)?+!J1{^UYPAJu6gT$Act;NjXmC#ck-w!`)%l!-FsYvn3@GviR?yhM0GZ;8wZgo0 zOPPrvx});TFFERBx2f#KU}QwkE17T!o#pHuLdrbI@gB_`qJ$mt zIWA%%U;t~`?7ZY?2WEGjtSB70UFLZV#`FCV^+H{AW`GLF0U>8{umSr{EU-!-93X?V zeF0*lYxsm{I5Z|mo8^(V9+jw^V{&ah9+^%#seX+goGX89FbH=W;kU%BVv6Z7-<$8F z8~hbBypRIHSFqxYF8E7^|MklY{+TTxF4DP*uuOm4j=qTLtJJw(*NvdI@pvP)$G0Q< z?CsK*bnB_XrkI;OEJ@tzv{vLFuH+Opq!^VY^KzHV6w+qyxSU_9vX%i1h+qeDA_i#$ zG9fmcAU&@DYqYf?AK*cVk%rM=N+zLJTL8F*G?tGIy~vot4Ca~00CU$ZfDPu#U{a0D zw&J!*F;OjW!BuutU%42yeQ@tvx4#4O`B?tkMI)%ng_y899>w)%20Ah!?L%YE#1`Nd*bK&msD54ngu0VI*o!AUL;lPlcBS~AW>2}3 z87P!&EXfQuS1(cq?fWh0;x|;CVYo&*%*d>bX^O>k;pIqm(bc*X8m9EbincbUwt)G^ zBG{Rm?5BaMHE3fhgS7>r!~ewL?&4fj$=%g?qwO9=K&G5F;lWFy5~!e*FbF96R>3M33XL%fh7BVcra0%2<|-2v0n+PV{F%S|6SmV#)c`vr z_xly9__2Xp8BwG>RsO;*J|wyjG^r6)5pD|*WDU32Nq-XUuRWJfF23`4WJ=Ot1FT3& z?zG*82f^P6OA-T!k%_sh8M8`Dn8FJ%;1PbthnUtbPhcR*g(YA!j6&wEtQ(tgS-*v7 zi!O3hWF>S87TPX1nO0UN5RRTmb8 zUJ9vIw$A*{a_k4=$A*_we>`~##qRdSPRo8Fu-y; zt!qG_9ojEe5JgW6X$!EB0Y=hBNdyS?8g3cJDKG}$_9KiMsk(*y;Ac6DTKd9{=l{Vf zc2dPb+9b}bwt$S`nmvWk99OHdvRSD4Vxr)*1-Op1Bd9)8rX)E<#A?KCrD|RNGJt+_ zOPN)2f#E91-gm?Qcb!omA%!dXLkMW89asfU0#ti^?LO%PRoo8MP^5^eXmB!d_#ZO0 z!B{OQF60bjuG&bu0*P%Dkp?}`Ze0s0iuiy3)o1rt{`Ihd&K5PE60}dJuT>8Gj~VT+ z$g!!ZP%alA@fRYAC<|4z;19b-t$HG4SM5ZQ6JrRS(Y|zylnzggG|TiDX}wBoqO(RoPGsGp^20{PTzUXq=}o#Q+xzdy{m2BY*2|j9CrKw$)9_S=jbO8=c9T$Kn6%nX45`rLZU6&Ng8rF9;1{ z)sE11&|c6kU|o&b2r6OGW374wvoj#PdGr`ZAcn!Ka0UO6sc`xi7yIz89@SK*Ac(3E z3FC+Br_ zJ^|qz5tbk&yxRaS|5~fypcf<{M8glrA*nN>MxjK?M3St`KlIfWV2qLS+ZK>oZK9Lx zHSI2}BCAds(%+-54M@4GPDG ze4-csb3}FUNct`py!aqPzo+rPBqp<=PuNBKmNJV9n&40+KJ7c)5vBdMcJWssz=mzi zR-rI9<$2S1LLz{KeL|0T;RNg*y_5;^|9^YYP)bTtg#r)g!YX7|lBzgBLLDFh@bJG< zQaE}%vbp$zVGDpUV#gU_fVR#J|Eo}SYEgAc59Pf_82p5!W_44PL{E|8Jw>f-g;!+M zva7n5muRY8K-G78G+3svw=9&bVbKleueS&xf{je@&rncIK1yP|b?&-@z=rWeW1Zrb zLbkyYN8}peV}6HrR~+8Hk0cE+%wS5=;7Z)4fxqhxg8ZR($bW6 zN$zTUFK*+10}QLOrhW~v1vtHX&9o6D2;bI|Xfs1iAuAe8?<+1I09Png1vV*zG2xSw zoz+tt-)xamfI8H2XE`AfG3mo9VilPfqqHM`*}(>~9ETio*QN)<7%6Kz7P}O;qv0q8 zjgp=kyobicW#*=tVW=A;alxx)Es;^;t*QQiu~h$*O9*b z_vNQ=n1w5<@5&M)fN?SqqGkGVayu!5!#o=}IL_ACM9fGQniBcbK##o8$*Gpmu!>I7 zLWlf6iU=^QD~Kz zA0`n#2400FBsPwUMK9Wic49>~AC2U=%*f0e<~Nc3^w7p%nt7xgMq>U}G+<;_-|+vb zWU=A!Q9T~X1;ePKpO4&En<6h1f?zEJ@c$EDTxaU;aeXA?xED6y5FS*@hWtDHD<9l~ z$pICfrw~j`)P+uHhb5|vbQXm%(xDXUV6TFrVOLR?HFc@u0-pfMlD-BjUQ4@;|C#!P zLv+3ZDQe{`)M{CLu%*3wwt)6r0bi4ao#N+HL^1u8N8nN;vx)YQ@Je*@o@|DdR*%?O zt~DB|0Vi^bej{59Tmk}B8P0(fMh5w}D%4ka5Xw4&v# zG6`B6`jfSD(>6dtMUPHP3vA^nCZNIq#@`gz<4W?U{Oa%zDp299rC1aW!rvVJk+2fO zGb#m)VSDOvs!|W}h$?V0lEQTha0_+&L)Px1O{zqIG{w~{oiJHN+l+`~8!Awq*1CbH zRN4Z31QQAsjbTJaY}YM7TjT{| zg#vC-996^c*_mM%re8AfYQN$JJ9L`MCBEjYz#xa=cfGo5R0b)ns2#W%xv~ zfH4SF1?!a(qQ_IvH4?@^OO3;rD^ZDw_8xk>em#cmcY}*xy;HL)7wtR0k*Fa4f5N~2 z4-{?Ovjw1tbqla{I__52(yG`?SqX}=B9o|N_+c9Q4Zvw-bBJq4XL~_k@@r8kZYwW? z+E&y*q>AU=>NIi{>6UtS%C92_m|=dWj-&i^n5-Ucvsj?2g{H(Q5A-Do6(STd{ zS9D;86OaS_WF>za3Z5q#Z4f=x)~R@vur0vVUZ9gIYBzt6;0a9JxZD=t=jj*#SKvbt zE_9-&A)bP-Uw(&7N|rQXcoKVT=t8GQHvM7mD4Hcn_J9QaRN3<21W<`%zqyoK&W>X|7r-@q?oR6avwGge zy0B`DHi>eBxAuBFm_ORD)AS48-~W-$(NN^ORwiqY_UNC6P9qt7DoyntUN;GyTWO`7 zb@9LS5it}`3mtvA2D9C->+S!lP7OVWf=>pSH;sop0@CO7xc;&Yx==e_!>dGB;?`^R z=F89EIg}2b11f-3U!E!lWeZwJLnY!O5^tzYz*D)2wjRt7Ik?3qNX*j6-_uU z{SFKl9`YdH2lE8MPebGp1BkXb3t(FS0u(g2DqRYM?vRcIvn^owp$2Upl|lSj`i9Ku zEI}5s3X!R#Tm8~kW;NU&$1uz)CcR+8j3xNu7^VQvvB4AD$7Ef-~U1B2p_=wzJcG_^OR_8WPXv)NaJrdg8NYT zcd~>W;m^*E(5p;vufmy1RD(oS>OsG%b|i^|q=u-A4F zrMMCx)R}0jU+dzH=mixp(nMuN`OOwE08nnT1qhB1iCaMvJ#CTHi7>@~Pfi!?R4Nfp z3^R-&iF))KAaRISb_5@(mX4HPQvSt133aMde`2mAvWL*->Xs7cb};ke*^dAMUi@#0 zk-)%yuxSh6#W=z#oiM{fyMV!jzk2jD9##(>j5%Y%@Cl+tV<4?@$nzoJNMgz=B42E? z&C;G4R&|Icnd+EO*O>l>t=ArH#?S3cJZ#LEwP9FkWuy?bkBgW#`;A2Ge*ZH9ceK#P z?TEr}=$X4QY;HX=*BDhv18y<#=6E(0`cO5HznuDt4*!y_tiV8pI*B>|tGoGv>f4L* zRHxtpFb2c_S|DMY9!MAj4&DMxyFjH>z0k962OZ>MC#xiG8K&?%+Tj6$f86S)!HPFq zz~D-)^|Juc#zM%j^RV=Zn+&4Fl|>^`BSmuMsFEnQ^hlYf5@8~WfDk7EAVJrzy_D%J zFP2D9I@x9G^3_12P6Hxm<`E{vKWX;S#@BnhfK$hO!1u_k_}msSX2TELNI(iLfRPxM zYg{-={vgWJkh!DsO9|elBuBS^#txFRVelM!C$OslR-Do}(zN~hJN8o)Qi1~$r%iQFkxf{{xkpYHT!W6Fwc7dCBfvM1kq|wPA`GWzJ zBKAt#;lI+J>P8*$t-6z6$(`y@II9f#pMsnL#1xA{2%&1NqpGQ%>4zvVv%2z!(pcqi z3xLv_lLmANf{IgmVv7J3HR6>-f<;BIN*7FmezCgjBTUIfV!}T8EkTk3AqJ!hJe&ux zG|>QqWpWKr}#6Cne@)D!-x{28WrI zepySvhIq;&j({BCfgfI4@#$9o3dP3Hl&~r$BuuVX`Zr56Y=jwwl(xgAS2OOg&5KiV zRI|bSV!TL7lh{r{@ecnxy(=i9;e2I07mVkcd`XsEl-cH*UY5(RwDO%QULzUj%z2x5 zNC@yrHe*hSFd$8`DR-(^Ehj5cfQO7@VAUj{Qx`J3kq~$kZ__y_ow@BGEIBHcQ+J9e z;6WEtcW27yzXee1q~XMJ^T`pg`wAq&Qid?qCjN9#Pud8iSPb!Pl{?fb&e5h~Cn66a zv4oM}5jlH3^pZHt3?#-FX$p`ukt&_QGlCZM=pX3-*|6CH&a6U}!Dd;Doy^-=c`0s3 zF8g+WGKl~ZIL$5)6h#T}f?306#w?;uON&ZA@7m zHjXaD7#=ZOJkj{Ro_4Q?ZW&Ao&R0;b_5#LplRKWar$a(?(OD5B=C~+#v{407#*2XI zP9wGeXU->?bsrMn=PU8>gJj`^mH9zJqE%~!Ci@kIRBp;=gSVq#JM7%dI&;g&j%Q#Q z0^th$Lac^cguuL;Uk4h1t*-!*D4X)DLe=SrTha#{Pperca3rj3PwGbZbCMd-skXFF(}CW1NW@=(mu$o&Q0O0dktP^lyHLhZzQ& z6}7H9sU4xeB@D32NaI0;oxwPCWvBi$XfT@?wu&B)NW<1uW+8@=;-;bBU=u9|lx3wX2P{9{xMAn6cp4D?DL0fsX$yLa#ot}0O}!4lgx zTL93m7`u4|5CL!Q4sWt1k4RN9V*Y-t6MMTV*lN}z8$r7O02nW%DmT#v5{0j*r`|jK z;{lvtm{nva-cae5cEvm}BXPr=;6&gG$(SOQ=E|lOiB+tQURcssCWavs;2c=mFXY;E z)S3*{Uv}&`-x&JA+Y)Uq7ScA|(>R%7dt5(v_}8E8&AiwJ7@ySHfOSy{6N|2*vkJ1% z!^8iosid$?e1yGiy*SIJPCgbHV??ZSGfZAw6K#0dYym-QK-KX;CJ|*3}0z44T zpG8+@fK{1Q*HTG30ZNvP%NMj)Ah)D_nI(tEj59sg7_WlZ1DVWL$Z#81WVRZIRcgJo z`qDW5KA8uyZGZ`98p2}8*PHnFI zuRU8p1r8Ew7B)Cs~*T-!j91PUG`JVWD0; zUD3!Y_3M#bHke{MJ(h@CBdC>lXO-Dmm`x7~O0@N`7I;9YEr7u*y<=?sM`g2aJWtOm zV;&9EQZ5A@{srVH<}0P6kM2e1diW0*m_Iyd2$5)uk7!q7awOfm?P34p9s?x3ZB#bN zWYZ(~nK#66<(39x1VnB6&4imzKo4p!5P6>kh87fpRLYK`kaShkxd>=O>?!z#*xS0E zQgvJXR%{D^C8jbMfZGB%0%Ix>=WwuJIeSoXe&Fj$biV?Gf>g2Ks7+O@7zqM*t)gc~ z(9mfN$_)=<3n6U*f~+5l8lc8Cz(yy{t~HDdLU=M3l@2r#Kg>wVsiGt^b_VU&ZR_zU zKpHk`V;egNg%Rw^z0v;cFB>{qowX3lX{L~2l&~}MKe`1B;m=-U3L8#IwgG3ye#{Sz z5ZfE{2I`yg**v{>w~SHXOqDDVmQcID-?sIuwlE+IIw$pFr3X|xAqb`fc`ABhGC>oN zHVbnh%`mFkQ#8cf6k{xX^9kqyl7qv)&m({bqVk3F<(I7FKgX3b2;4yTDz|5}t&dh! zYrl4nRFj$tz(A;w5epXpuX77n8ezsZ7;cq#(SHkgJXvBO*90h@0E!<_P^Ej!Q)w^Avs=ixV?y?W!kLQkoJ zOskK$T?Kdu)Dd7~ExgUCqb&ey;Q^0~?C+j<-|-_SzCVzdKd42y?4TujNJ*Kiz6d{V z$EyUv*007@C{g<=S0p`MDYtk0wg4K4FW%r@ADB0if} z0MH^j$!q~b{=H>nhBg7hmH*8$9Yi58Bv&Jc_}|pd;ef03Y?Pc@YgGjm%6#Sj5+q78 z2nNyz24bi&VKkLji-}H1Z@%|GOAKZK56y%pm<qkz$ggA0MQIO-W!W2?%=~go5pSf*o)(YVInCGrd(_}&;MsA3^0r;GiZRl z*#ht_9Bu%AjoVXIww{q%Ycq1QR{YQ4A?o&MDG(Xiv=Iv+(U25R+ev#WM?xnQ9CY{x zGbfGyrhtXo0zgY1scQ43nJPK8sMT+NLt~}o`_}H`kNC@il2Iwx(p9olI_S!sryI0% zyFt`7ZjY*+PU|9ng`Ih0$40gyT3Ht}eD(Kdibvo&ZNMnk7ow1a=xhV#b~ z4gD4}7XgY72Z4Vi&YxXCLr+_P!9r&i5s<=IhzuZ<#Q%433)s|}N?D~>jLmfhtaH~| zQ|U~F0ihE{c@#0JbOivx(UWNRNOp*}enA!i{;FA9fWyC27Ex$cwD*NNbA?*`ORmHT zn#dUD05cfFHdI5{ zrj4UqwN*ERVQ;E_o>urVLqul`4YUnPojSY-2m-Mc5(u;-JeKbTe8m6CQ;my*$Y4cR zffBTc%Oh1RuyJPmufUb97z*GzQWngmLHQfmV1%%ef5-c-5x(nYBbZkJtXE!XSI*t%z|OJIwOsF8cON6ii1aI zm9D+I_I2nndo?)9{~{wwcv4L4jIO}|XNqvujaoGXUjQ3y3=!lRhFvkg((ZJJ;Zf^K z{@RhPNBGw94;9D8ZW}z`e>C*yH=q+{1_S`@gkh~~o3L)*BA|j*vcISQ9se`iL?aDr zMdU;IY(s9%H4$3Of`4&vO@zg^7^QEv0BniYJT->EY9n>7h>RzC+8}_Wq=;Vd5H!<8K&*0;T82^Ukuee~ z;DTS+X%KVcS>=7<<_7`yZ5N3D@t*7;{L&p2KszKz9Mm0>v!2j+hu5Q;Qx1&`U}Le= zKkqoMiUmaJiHZ0qXL%QDS8Y9>iloxUv>mNA^cXLI1`v(PzoT{RT4|pl|1ub>r&;2p zZ+3xsS&08*bxRPl+^!N5=p>XFz-ESVkUNAsd||vt!~X`elYXMDpCw!anBlh^bftkF z+zyQZvxmvW#cf-FkS4|)C4a+4+C(5teZl#u6016<#G-5IGb^Ft+Cl?WB(+x2aI0TA z@QW8b;&oeFyIUJvohnGI#7Eo!g8+k2iy;)Ddc$boHGhf7=#(0H6!SJ;DRXO zud+8^f$q;1Fz0_Lk|`;O1ms%w!2ljkfpcJay~Y{l4~k5J2M_`<2vMy=DH?~;aY7** zi~*u4P*l8$HtgvqgHjky6gb~=-=daQ2#?v%2z=f0y-S%ZNx2pfaS)RzF5a6cMeH5z z<~n8WDRJu&<`i?BY+qK_7`5!o;lJAwv~JTSf(;t`%k-b1Sn-P z4gk^tfk%;frgK1hrg3z-@o)})mWDBy0T`fy794W;Bf>rx%yAKEC~a`UNDvjt2SR!@ zD(w}h&}dl2jyg!^K!d?mnKLOsI+Hx=P*hWX#OBq8Ut$|K@^ruN?Jn9XS9~IN*Qsbx zB89G}7<(8}+~#zR|0P1cCNJ80RC@euB0Z7qtgig&rO>exyMPn`n;O*6DMzYIPQ~9T2hzO8?%E z;}_Fc3$w};8u-E~-gTUS5J@CrP6W->t^V-iHjITI*Wz!wh*?OjIi>jYs@#$)?omH| z-D@(xhW_|}{r+F36oSH$St*ulfIOt@Gd(MSPqjDG4YQEt)CD+oqJR^1r}|XAqy8oL zKldl{Cy{@=y^=p)+ROMtK$Kr_h`ykX=J*P|m^;LhHl3J_hPD7z!Qg&Uj6dhMhMY{U z5%vc-#m=R&xZo`yR*9^{oTn;O!4@3x(P$4=GspZ`blsGd zzv=RlPI-wHUA1+3I$Hn|j{H+NIRb`Bx<`lPk7EHTYGS!OGIjVrovdn0f(MIQns=@Z zrZX3KVF`2Ne;g%ZfI5^IF?Q7nD#MDFrV#3g1_Z|cY@=kQU$e|5t2S*t9$Ahw-nHA! zlv9OP|EN8xaJ3}mvqY<;WUbi>)>Cu2GiQln$lqc6*#+7NgjXYJcMyEz0YFSF0i5_h zap)r2wtz>j)*fJ)UvX({AiQF(QY21N)B=$sx3DTBQhb>G6$#o6xZUe087x^Y@@ENF z!Oz$u@^{*Qj`#Pi&i|;u07a^tQ5Na|s+D2j3OI=dr&fBw1M8`>uSqFX`^bSdFjmE^ z5~6BWKva{xz%Jl?^2otb(wQyq3XK=Cz$4yaC&7{Zc1DaR1^B-Rh@K$0wvFnPBTx5u z+5J34L%2*aUFf7kcwG@`sthn?O$}A4EkX3#0#HE=oEf7^Mvn5oRp6vEq`5To=`zCP zmmb!#(Du}h&#DY_%V2=9AIY+jt_Cxe&A|ggxL_EoJWY8-eF%8Kh!PFU7yg=<*QWEg zy(ugm60hm2#KR3+2OBe+#h5V#wKnEyRhEUOA8KA#nYCsi(^s|HDNGf2_%#UOX&awl za$nvBnP|8r1w`1TOjQbtO@wW|Xgi|dd=OP)L<3^s_KLK2Gwdo6KwRRC0pwaGN=?NZ zi%O7A>wxZ~+x8>au76KuQT3R_P{7N1nJLGT3-|d|It5DUg#?1vh@Kb%zh*-El z0w<)w9_0#uCI5&e{_kLEX;n`rDlnz<>S(4`(3AjV`cQe5Xg^eAq`qB1mHCZ32~~Z9 z1_NAZXDgEw-9nR_&xoEb+g$+k_Y8c$3osdAmw zSp^1!g{~QCfWc-RT}5XKDKXx}5F$`=A(8?s2&z&L#E=vXJ^CYmff6nYc_+p8efe>{ z;s1L_8bkiVF8-3D795IjsX~K!g)cj5M_K`34jVfF-94c;u>=SK&#(|PhL%zN=KLS| zug88aFgQv9rxnA2lX8GG3|;VaB@>)a@V{%sA`U1*9HK7_hA4=zw2;UMo#Tp=$)osX zlFcx{conCLMNITKi1CnWFc1Mpg8ZHRl;heWsebXfLM9ruqdR4e@WqN~&=3Jy0wI_y z%S5uM!WB}(fP{YiF(*AV2!1CMwn<#(xoWdef{bAUwFB1>3R-dm309$yHVzsO>O{k> zPLHg}1|!+f7Qh{5Gu{Bkvz!tGV2SdhWEkaoI*XdcFwnPK&qpO49G0R~e-=emTp9{njCCFY7GH-%BeWI3pafOraK zAst8vi!sL2;4Iov-pLq*#O3?$Z_l^&rD9w>S?gA>vmlTyXe24&XuZokhFfTQ+ z^jtTfT5o4ejrCDznE{tD-2G_@cmo4qfDN^&y3u>I+$#XiPuwyRM=={Yu%D@jg)cNf zATV={&RN2((jMg;O!{t=6icBI1MK}T!J;R7Ni#BpoyovURp4khcKDRmzSjnF@LKTIwCOgrNhFkq2 zY|5x&9-hb8kO>|{BLXk`^w1#D02Tql8`pp#Tn(kuL)w@a#*BfD!IX>v3?_`hW+|ue zkO@~}^wgLEGZzXGcPQcAfD=9mgY^(o$ONHAot_#-nnFL}<`h@{j@K1h!w#=0nQNLY zF-tR&xV3tV7SfHIvr4Lr%!~AFb^&paCWRyNveto0TaUbmu(jyN|NXQVINJr>M*ffD zDeEEJR)kSVRlTeUyDGqMNDupA*UrEQ5EUq117y?4@CF9c(7uKY8V}(I05D@kcmND% z?^v2`na9G~9nLWT;~A;G6qhQ-05q(i1yM!eYB`P=0E8yeoKF6ZjDGHSyo~mT5=}vj zb^++MD20zA|J$u9F68gA4(r z@#khtBVDCC{+Bpr$Q{vG*~6GoYteQD#t>}_Sbb72(Iq`H1W~+1A?~HbU{eyRSfw*= zk7G?Yo(%{v8(g*Z=!f2vuS~dUTXz;Umtpy66}Rab@VA_$NsjNBcadV!00yiRwWpe@ zM7C+@9JQt=l#h~)9=AtVH*u_`mS1^VVAr);Ew+)fHgV*STbwHrZN)Al z_FSs~Bz6K(G(|KL?G2Z%PmMVouo-`ITLjd;O;!>G9C=3mIPl_Zz5jI@1dAlq7xYSE zNDE`oRpT1h;CcwokQQ2k3OqO%U?jT$3wI~)y&z;g(NWAFv0wnAmLrpJYq_xM%38>z z90(zh&LO(^e@G9>$N#902t}KYVQmlvhaLudW5uG63ijCPDAf;t6`B`7kr5UICEDsy zOlDimSv|HtVOOWpp;VQy$j7~c5dB7Rf={Arxgh1G)VTHNP)vy%g8_R;1QHP#nRgRJOO}xp&DlZwUYJHoQ@?dNJN@7Miuz z!LtL*ES4C#3crquF;vkYT!J&=Rwsp{%JdZKIb6M^4KPgkY@(`1s7J$Un09gNO0)Da zL#YA}6hWG5hAXAy>elH(Mrd;`#sB9E%2Om}n9}oUh-g6d%{QW3?r}CsvBFwXqjC`` zu2bpAfBkhD^{&zlP$1GL(br)6!zlsA(t(rmWRMARgIlCw7eF;I10G4_qd(e-Uf{|t zE+TWHV|KVzj4Cu9pdZZW}$ z2*wEM$|P=yR3-)_KytAqT>djV1{hh!H%tX}bQ-YEYPuc@Ju<*tVlb(lCAD>~Y7aSo z?EyK1i*QQzemv(|I$e9}+JKFl-EQX2l%oxU%^JQ{5pqN-8F>(DUgz?vp^29P-u-Ee zPGi`a`{vKvG0gai9fMQ&8uBpcagg*!=dI$a@V}iLh<1 zt>IxPw};RMkr6k6k|5QmemnBT|8u^zHQS?MM!|y0VfHUkaC?7-8F-)*7*Kbl?K-do zl>}f6>j1Noi8fhD#&p=8J;FJb<&>LC6_m#Rb0nkIa<%{@ww^mv4ak9S=$wFCDGn}&$%i6vK$a9-QJ;n@B<(i-cR~Q{0rkw1k?easD zThr6ubiqm7uA-A3+V;9HE-UA+?H;$ZiRoFrnD*hLac~+l_?8V*cvO7}zCy4~t7XY@ z)z+h5778_ms{yUJi_u=XZA>u{0W$F!ds0%r>t+}|0xsi9Re1tW$Erb>g0d;ts*J== zIQ$fO&KU-bt&-+^VS}(c+n_j5H}aH{C$oRZUxJjIXoJM&3@j0<8yhHU)he)3Y881v}tfn zv2^$scFBcm$&xZ6%W@6#Z2_t&*Unft${9JK+4wS#COE6_G%!hiWnWdQQ}*DQz}D$P zL9OTiGcVM0hOsC&>EsJ>z_6+Dhz+&|F9MW2BwGM8nBC8^)gZ%&p8Lrg#m(L-iE^Pr z!-mh`opo1uc-jd;?u?hsL!7UtoipuqB0aJe`9K0F#_~){Owt?4)ub zo-!*hvRt~m4qeyK2@eTuByt+(gtrxt^#mt_FQ-25&r3DWJGeG@wPY5x+^o2+J8R8y zX>Q`7D*Xne?Hbor`79wy!YHZ&t_tMH&Mvu%Sr zS)!B96fy|~5#s@sC2-Y21yDN@_wx}OfjVL^Fq0!D5pmFy)Cp9?cHC8iNUr5nXd8jNv=^w>*$4!Gwg7>ZHB!stljv#GZx{(tP4BAblo$~9SdzF+TD^&B?pjZpFURiwyj1Yq=Czrdk%!k+ z`O)@fMGJ|QV9K(X%ZrKt+Hxw(%0yDC4kOt{!$xyD$Nr7))2~q+Oy30Gtw-{uxMbOK zFkoGEI{Q&3IadG@Q(=G}NB2_)WBoW2hM7$#I4ROS;&zaW!FbJg2Fre1z`bVIGgWD6 z{J^8WR`d*m2A^%PVf>!ZrpyHSx`wjCm?=YuRP}gfv2rx(a zpAEzRAqoODj1SL(Hq4JV3}!P#NxIYnId>2gXb~9GiNoz>CKhToL(W((`0SY_tRg7} z1CLoni5`VB{Ez%0wzCTOvF*%RsN--~ zk+1X$`|P|L^LF47u{+34(`A{MODLI_0tpp!@DqISkOf9c$B5hMIpmxT^Gu4@Mq^64 zyeEgecll)ZXB-G2D@fpk0V6%#T<7VjhVirX7^blrJnePBsrI;2)xN%IYEUDK@Ro+29{K`6yr%`c!~y5 z8MdSuNQTGe_|X=?FRE-Mz$1pZ7qy;Jc&{t5uP&St3fP8oW_SM4W@PMym%I@$mG9mN z?$%zw>kP2VNEQP`Mghi_YE#24dmv$$e-e6_)4}BR8bJc&+PlL8Gc;sPKv*bim6$6$ zh!4Z`;|H@47Z(_8JVY@byb1isJ|uv8{6nV=Vnz7I<^azmQq{^p)g+XV`*1yJ^Dq%bQAZR z#_po6x^=2_A|verGGfJ5OqW4=6vZf)YY34AGMqn+urUzbxRw9cRnl2$_llKB+6YuAANw?PZL<}-xxz)y>^?*Oz(9ul zfdmW~Ah2bV!G{Sw)e}@)&7J8-HR!Yij2p` zqs29#3ymG0q`RtAEMNc(JhcVj?L<534y9!$kW7@)V7hWfEE6T|b`YwnbjoK7pwN^` zK*MbS5O9zXd9jsuS+Lx057@sf%L|c5s}D*~0rGr*062QxOl-^w6-zVV8WO-@Ep4;< zX2m==}f8(oAN)kXCfok4a7m66!SD>Rh?`bDyST`)Z z!BiE2MidB<3vpnrN37)(gB^7^D4yuW>wsunkzwL|<1H#sB55BHQrcueaS62$S&^{B zx?%_e78QJeDdUH!Jkt}{yX}xL*E7>+On8p@*su|X z9hHVPYbxRnjXz`UJj!hA3YzGxkd7^-RkX#~QJ1cIU|NPq@vsd63ZHgYq};0IEwjPKiv)n$Pt zPWvK&_7%ulDau4Y`{!LaP6i%xxs1%InwU)O7a#pA=iBUT941PHkaEAncH}?jt^lCc zB*++Rox;E*bki7&!4D0{6PBu0Z7!$NuyvwaR+(Z8r9WjL-nyqC;>oO^8jc++mN0=c^G%F3cKuWMAVp2n!)rHF}N&>2| zPc9yb#$b~D(k*Lz=M;ZA$XPgy{1qw3*CLWQxPq=ZR0vo6kK_@4klyhBXd9jvRq?b| z{BI%BQ_D$oyMQdng@m%O6thc*%B)66)eqWjgmCXTw_S=O-b|{O4%%8u0*b*1vZcVET?L8Qe|mL zZ`Uvj|LdWjox}i!>7j%w*xQJ?7P6ug5C%}C(|AClfg?gK=I6;D2HKawK(b`YRXYUU zJM7(3bKqn@L^(>ypy0?FuhFl<>5vA8aKd*{5-~|c{t!q^6a>LH%K%dxVCG0O{J(zu zp>wKUR4o)5b;7(of&_k5?5VKFQPRhNc7c)z+Z#j;wC+P=#XmDvfy0sMU&mj?ysM8l z@+u0AVT>%V$Oq;^I<ZNdAu(WTxslJqX^~G#9BMrkANJN1s~WX~NJT)!6(!e>So(z}%~vTX zOA|n{3QJ5O{9+hZls?Nv+7gOMEFEDo$rN)pAld7?_)1AtmeXTm^ea|FzbRxeAhoTq zfiWP#eQYeVMB7>hFvb*)GiIn8dl1$#OjNVhn2m_}y0l?A!bmQ_Bmx8*G=2&h(LR8! z`!d_iW$G=bpHh2w`x)8!gkd5nGJ+;t;87_lPoa2##S+??8+H z+X7r6Sr1D0DCP%yqBcXI%o1%qpzig-c+!?(){JZ;kVNK{eW;sS*nn!i4Pb}BTgTL% zk%x`L!P9d%SdU1O!$&jgRO4{UwR?^(L7UR3(Drq(yC^z6N6T}RT*ZtTylJ$kd?`t# zt>`LksRuKnq55=s)E1CQ^2;isK^Pg;uz6*h4rve=VgW4X2PZ&s1tb`QYRYMrnivCs zN%e>~0``kv{NfkB=!M_)g75O*wQDW%uSP64zQ;&hW~90Rbv3fDnB67jNB$ZkT*!WI z!vC-z%B5CJMj}tuVNCofs_~c=#YYf?sM7OjD6wdV*iG&>w^C`CT$Bh2MGIEMjaDs|)+1_JBD3rdAvwW(2g4zY{2 z;Jd~DhvlG$+TI9gun@znC>@p-(p!R7%E-X%e51jK*YmSBPw!;<;oNKYY^<7F3I%OQ zRmRB`!+749S>mu^qE#SY)~Y^99E_aI;ME1I6bOX7YO_4!^tw3)$F3r)4I3fFcBkr%$e z1~8P<3>G>`m$)_&OeIYsjEEdx%aoWC#2YnHB_PF|ZCqxmEDU&NiKwaISagK(v7ZR9 z>}Qoz1bg_>$6#{-m=a49R`F4%V73LAbxPrV>lZ`&nk|*V;w)uiB@ql}x%5Hu?0v#6 z{(3wTTNxknNBf{VynV>?!5-Sp68Z2M|A+bc@j;C_7g<7eNRy;6Obp==8gGf)6=t_= z({?DgoOQPb94>wBp7SPc)Se&g>1O=V+cQdxk2>%zaQc;BdHqvQJ@vAe?cNR) z=1YF$hrjRpUi_jL{f!sC@Zxpgin~B0Ff3#hHX{>8vJli)(Zeb(aKsp*trOJeIMk<9 zg`hxGfeJDu8mE~%B1VdgNEQ=g66?lk`UP3^1e41+Tsp2^K_$@?6LX3}OK^utvvc*% zRe@WVRR&*$|1pnY6E2zyj+juwVD-)hyJ~N0eMQH{0-hi-)FgMnMwKjcwt!HQ??p*F zMjC?b+(Z&u8Eb(QeVk1e+K|h`O9}A1#+r?&OF+{BlvZi z3*=L?YolGj05F4R0hAZ!u|cSXag{Sfbd^V|s%c+k;+>C~EwnG>^zIzasKf>J=|gfs-PwVB`OYsKYbB^j+QG*4Ka~_(V#; zW+F7w^U;rfoWhTP{9~W|_^$E(_kBQB{`#-I>0dwfOF#FsFH;E0;roB!`>~2ILf`$u z@Alt*3wYko1?q9_KXtUS5Qwthiq?%G*`P6ppNz43F6S)s_+`vyBWnv#J{4CSB^tRi zk(sb)&@WbvX%#*?j*9V26L4MimR0F&0*#UF}nhWWUvA(|8nWuIwKIqaMmv z{%3hRi=0}BYs`*^snxnDKldnP{*|yX{zBh_#H-nG`gOf}ad_ z^rief`FARAb+c?(3>fC8xfNSW%6Oy@jJKV^%vD(W)EKB^8zthvjE(5@=#25HrNl_a zh%oS%@z|A-6LtX?3hx5&!$I!M;lJ|lqE#ess%4uRY+}CN=T4);+TpJ+dQN zvkRzGTe(_@>LE(Q?a1_F5-0*Eg$Y;d765GIkpGc?VheyDkOMX&6*veHN_O(}=l|&Q zfAsX{KKrRp|G@`7_@TGI^BuqT8@qov!WW?*`@28(gFp0x%Eybqi(a%VqVM^h@A+%r z^#cF-KPBVsfOr}ad1d&UKk!4HqkjJ9|HVp`%4CoF3)q9P0*PdB1u!EGQb2ghNX1fd zRRXp!MLEx8Q(0*Ah>vtrm1wsY z9CnKKDjaO*vf?c%8Vpb_OL!r+f(*3MAq8P<$e%BqD)k2NNFtbheseiR`}M=5)$z7~ z6a)%K^oWl~#(*eO&uH@$)Qx11DaF=w4f@+h8bGbcfR;!`-GS5bhL1Xj{DWTs5n)e_ zsSse>T(_=zz=@I(Y(Jt?+ZcmIPg=_kG|IJ@lW8zaR6B261>u_#Fy$(;nRSP^S6T56 z$J~j9ce3>1y0qaF36d#^>s>(AC{nlq093%HuGKhnIZMC^7IJdH zNcewvNx$j?PO}u|t~@{c**|>R-A>6ffBeid&wNqib5H-_$3OAWx4-=zZ+^>LSoqSH zzSJ%N{D1$)fBbL%$lvisppL%xd%yQZFH#CSaqFq7@yV#FQGGA{XaD@EUwVq=7~YCm zwZfRG*5U=fhLdMoG?9-C;}i~5Ac;2obJkq;n{L>YSbJqXIuSKJf@yORklT7ho|{5PzidkGsq-_=lzj{d=j<;&!~8pJ?S&;) zu_yzGRdmY{Qw15FqFh)y&(9m`j;>8K-6mB{iGv`FxTT+MyujhN+yX2?EoTSVyi4@x zCzSA4WI&f+V%ymUM8jv^34&ca97>0H>hUN%D@L=3S=z{-MDlvzhuRTS^tj5PFt$5e zedr>h=o;GPg71tJ7I;2np;J8r{_~Af)34WmeyzLp^m?|LbteX#T9nQevGRo|4h3-~ zNRmjds>CV~1zG?$uLE<+0u_kDPVEA{LPD4Rkck;g1V~rys?|FH{{Qlqzx0)_e#L)J zKmD}+_kG~~@BY2tee;{&Y!|RDBY*m*e@3m@3zUF;!Rbi5Bd8xAd&IAoz5L~VtjttY zMu~byVhmtX!aQJx_R6^Ld{@7 zAk>oDtg?iJa-=O_vyYs*WdqqU{$8}(9a>l70E25B5jR05#a8rkpUVQWPth(%ZVfIY zGD~DO@`oj&Ms!Mn_|PC+LgXrvCX!KWU7C}^E6#;FFz}jr>n-}igJ_Z}-&Trl?Ue)Bip^p-ch_I0me6?yHeU+w3}zxu0h^2iugu}4ub0KBnf zqOAwv!~lHZ_25%OC}`79Pd+koU6=2ks%wQ$46dQ4em&wwEmahfN#bE5rpFk#HEZX~ z{+G3^zKhT0&zFm^5OE5luA3U>=a*>X0RyDNT*fei&Q_m=)`mySYh7M&*@~)O5@(6g zENGE{D?+f49-?iEfQyoKC-{`u_xC8c_}UP|o46yCy{v$d7mFI>39s4DHv79Xa0Ixr zC0?{O;8hWm5#x&w+ZY2d9AU|T&8@J+W|5>ZtQBhR(_H8HbAkBA#3L}x-RPg~bQ7ELIh;PV=mWN@toaVEQZ*vlzc)_>-@0=RZC z7L&@SdaO1pL+cuII8o1;h3@sEqxNh%@5F|Us>9n=`DI$Rf9{iZaS>sHRissN0Xvd} z6B!RG;IU#dC_>IaBIb-O+ehB>-uHa!Qy1IEv(G;JXMeu?Q1Hbse(^J(`z)kU2wH#o zCx7}C^3|_=?dxCv#-DxT*=N7z|NrDaf9Z3dd)nMje)9J}_K8pU&(D;tWeONmvc8X8 z?f@4*jDS^j!2rGlkD|eUw*#c?bR{9GJ<$MCKx)_TT7Pj|BYYVD=`qZB6D`3c@lyo5S>Un-VjfWN;DYH7>^8Sm|5&JGNOkSM590%HW=_WfvCM-+6XLhbQfR@lcbDt zI<3f~;Xv&Xt1!$MBab?=I(5Z%uK+eIxucew)t!ZMt<`g|^5G_FfT!{TJaSPIZ{0?FbZY?7h51~FW8_3ECI$9 za@Itcm`KV#Wv};iM|Yq7>=&Q;&wu)rucG%q|JJu`1l|b1_{(4Z(%1jXvtA0m@n_%s z*0=v0!2a?t{}Ma>@4bMWww}NEi~nZg*S_`@;4}-!BNp(+{JunuxP^QGRuMqLe)fdJ z;!`woGlrb2P7;xJt*3xodbZmaHp9|Cab6Rl(^GQ=GX`cDFL;U=@n@pV)8WtPj;BUO zKCasO6{*NqeN%cuE#QfEvZl|{5+PZ*f)Wdir`UQ>jWxFq^!yU zOS4G%?W&U=%B^lWCSd@!Nu_X!18tP2U-~9ThxJl@&2?&LZFp+p)XoHfn^xxw19Vy! z9xN9gT5I%7F;35YYs}K88Z0^W=z;VXnZhoN!+R^StgKSH^{k0DvAL$d@>Q>V?Q34| z?*e?}gCCYMZ2#<6zJ}^;0saHX$RFyy^3|_7{D1SC-$M0B19}m~1v&2j&=W&$;Eh#= z{59Ods*x%MI9bRx9&JK>1_MRD0XYI!q#)#JJ#*zL+55e_gz5>VM`kGsSVb3VXIL?V zS7P)ucvsH6Sa*S{UZ+x}YOTHsP%RK`C8?;bXbe%^ip3OFLw{v1!n1+)gNANBrB?1U}jqR;#q!1B}Si(e)M1%1bHQijh0MfSC^j*kjA8q>rlV~&8bRG@=YqNxC z2#BjCcq-s*po-9K-vNqyTxfT`+nGzID4`~x;>7YDjww9QmlIm!!AZ?=G zL`r0ha_O)lzkrG`l}8M)v}Cm$kE~J+R)Du8(uUoi>n)9W-~-k;Onr$bDJkVeYSwH{ z24~E^@e0>hzUo!4dF`urwfVd6_WM6y*q1Zf|K>M#y8skD^Mx<`(dWP5_l5ju*iVZ4 zNx`?i{cVVyLx{#9|F6U{l!Z}&Hnb}i>w*yD`L)J&b+dNP&UO6F(~1R{35<=@Go6F; z2}sk8X9)~fViE6V+p0(f1geMg6>|I&?47Zb@UI*;EQjcbicska(^INO+}2|vwNxFA z;l*$F?tjHg;S0XOQ3tN57>6rpFrZ_hg$!c=PX*sv%=R?)XtR?YgHw3OoDRUK5ATVa zg(#sjqEr6V3Zr0pDpQj<$ ztDR)s1txdWSNm13{8#?-8=L?3m;cSLzTu5;{f%FL$2)evvG$3N_hY7~zwr6b`(2<9 zfAk|h@BhK4J|)Y3SnS6E-}?49eF6GE|9AH-8kx&`+kGIH@d0Wq8voaZ4GaS)~cU<=lJ?BxbUAlF#yYYfA@Ck}41sYdDP^)-k3^8~hJxF#$iOpEPVcjuXKg&65 zj4Q|8R>B^2DpQXf?5b2}TND$)Nz^0vV}O*Tb_&*0m1`Bssiln#vxoM}z1@0bX{uB= z=FDGpja175%_*nTn5y0Y4Ywv*B7?J;HYSxFv66-LxrflX4@a$wFaR!*nJg9CHm8Og=_#%@P3qRNLOLcxA948|H_MVo-| z*DND}Dx}HUh}@MvJu)b#k}i+NLy;^qAR8zl%wQg!G|PoWEwoBu^vLQx%_`oJF-#)z zlum0|ni8+jTr{A}yt4VA7(14yE_Mhol6^h#` zL;FHHl>&z&QQVN^pleTquYdjPU+WXl>)!A>zrEu(|4XjI@z=q;5%}q_zbot~yr22Z zrxm;N|DL@{-4b-d8vNP-7Q9)S~&7)%wQ5*Q<(OR{IKb$V);DTN|1d!!sPdyZIxnWf(&@;$=TO$w>p7`DoaFSuG;H{4x)o+FlgiY6N}s!k7zqp-#_&rJMs*#T{Ti;yo%H#Y zPV|oC0Tlth^|yZet#8%*?f>}pw|ND4_q%`hz3+Sf2jBmpk9_E(pZ(14FN=YJUkduN z9}qnIHJ^t3i~wT6!@fY(+unBZeUA;6lVXWB02)_{i>w9=m95p8%Kinec8w~cx_<6E>_s!YKwyyKJzxN;CNa;L)Ah$lT=>sO9Y zf!ZWS8YT!r0VD>K#Y`3?zceik5-R zL*8IB<74K4&8fugd5ObU_p6a~u4?I_6QWibwv2Lxbofy5Du)rbLveu$uA~xmL)u3_ z_EEp*@85qw3;r!2obOhrPe6|Se!bIYe_w%2`Qjfxs{}B z%bVZy)KgFW?9cw(Prqze@66_xe$w-Pnaad<*I>5lR=hGr@>dn>bmdx)M58Db6aAhN z0WnL^#8xgK4Kh&~LUZOvZUnzM;z}`wmpF4-m@lrj06qF=Iy`LZH-xP9Vxjf|yF3`k z_2iT)_OO;=yqL2Dug7;ek}?C#RU?)|_)h!GCjHd3uthK%fC8M_)9CuLAArP zRN~Jee+`VPA7YI(OROsPY+$G5WC12qaH z^g6gL)J2$6L|e=uSqetnlF7w7h6cIYh|bDkrli?KvR~(Ue+3vef(Kwow2ElFtM<@f zh41QDeIoze-`o1wM?d`GkNEFnAN!bNKa6?wnNNS#e}4Y^!4H1$z3+YByWY9`$&|n6 ztI(YG)!L8#=#ReSZ@r{{EEMcf#2{br<&^zaZ)vs-^H^PbtObTc8F)wLTu5^K)Kz4J ztC(9|gUtrhAM(fjF(5pv1yvCF<5B|21a8Cg$~?0X48n~uvcZiXeqI|MC3SB2f3(G@ zMy7Mr>KSe3PCK23RkM+Xx?UMZ{i^!5fKB`bR-o_(oDcI$wo31+PHFDUgS!+$xeGkZ=8+{1Q=msbPvzI5Fxl6tyG!Y}tIeiU z#GHsa4vDR>Kr+lrK~!Hl+^!Nc3vaXxlagpWl&T1sf^d+gO^D(R%5jl^3ua%vT($Lx z>hPZUh^>h_3m6^G{8ugevZHT!>b7wU!>@(JiHsbDi;e=$v>84)C`- zYYzhtQ^{Q{Bzm$*G>mVsVdAig9#iNs%a}x4&qxX>p=#Ae&wzx5+Ilj89(KB#`@Z+T z=bi6($J>7AcYOBu-#g#+c0C{d& zyNrD=#;>)YWVps7(H3(t9Qmq)8+@pG%x*D{ygueDNQ6i*O{V(0T{wyH~bE z+Z!BFs-D`03=^M9QaLb#TKdHnRDw-cnH5sy5M8r}Z4BsSl?!ZUn5{wHjU*bi&826> z1~ejnPpw7g2xRg!@4}%{mHq0Msci(;*b7X_(@-==XkKh6MN|p!tP-)*(*Wkxn86y< zQYaL-x5SB6JS?rU>}jIiFhOh2-AC)tP#nYHq(}-T zfthwIesO9X@e4n1c;g#i=il*p^=n@J>Q`%Ed;hl2zyA-v>ED8W<6CyW5d^yAC;#bB z`gfr<{@y?MaRA#h|6lj7{~s+J1&A>W13%a^OFH16C7F>8LOLRnBXt&M1`n(6UAg#H zMw|R5K$2L+T9t!!2l=Z3g@PH>iV{mI1mz|ppc{L;CSZ(Ok<5nw0T5ME2ujIVIA42JVLMTj;^7u6wu=9$6_qTv=7Aw4^YU4X>uv;jkfP*KpM(*W9B zwe@(^Q?qCQPE-awJe`u4&2=LH4DdJnlFgp}p`Eb$+xb7f`Ug1w`VPm{K-)#C|M%&(Edd3b48E~mSrV{l}))6e@i9% zR?d1oJo}XNX&=7!YN@iASIII8;hq?grxa85q%f$3?>L|VM$o~EXq@EZY}$H2XMmAr zS;T6HDs2l*gE+SZW&+dMIbX{jvT|N;d}@pV%px|WHkOsVHgX&vmH_cWo)40OvN>gL z-^0>t?0s!NPXpTqjaU=3hS)hq|i z2W!$s!s0YX|G~@P32Fo;R`LRQFvsAWDQCHdO9ar-7(=)+WMI~08ajQYV9Ws#H~pAn zas0HeTF@@mA)9p7amP~IK_g8_5J1H3gbQewb|%j0VVEgau#{yZZE0x7sB2#y<{lh` zSve5YYC1Cm4rbO`R>WvPiH3?0n~N?0Eh2nd69EVZ^`H$3pOBnaLARo3E@Z3;_Q52n zTm=&#=;UzILsVJKxhI1sxjg?c9PzBj*UaB`Or-Yy^V3iMssH}5|L^}sNPq5m|JQz< z{*5qq7~&x+;^FQ1aFAm39-}r)6uHMGvskfMBr63ho7sY4_=)ICh3ZwmuckEDQWg}o zP4NUt93{YqnaJsw4*E}W(_Tv3!HxbqzJpODt2s?6;M_eOF4|ku=|_MXwJm7b6n=e9 z=iGR2G%5;~;#m2M`N%A%uyM#!PRXW(8VHU98bKY-@bT&hFv>`CaTrSS1yD>-7B6jm zLQd%hOsOXUQ}Pd=x4+I5!?JGyn_M1Nzv6_|90I<%HBm!`F7=Q3zKP`eh{ppCE zg;QpfP1cxB@o?ZQ@TZ5iQ(&f0LIcusPi>vXR01T(rDJlu`OotEaev_hq>D2iYL`{o&rWMIxh$h zGrOGNiKLjk7#$vsl`pednI7d6)99`gYl~e!XlP zZ&_a13wf|NWkw!J;mM@Nm`*Hpa~Q#iQ3ytVXsPkI2Om5Xi!~Xnyh^UQsu^aT_&FMW z*|19+U4FXkG17uop7fEhLKC1cC-w;$;JhLimcl4UJcs_x4IHz(^qTv|%IZUUV)$Ae zCKqOkuU50>OQNt&%y+o3f*6*f>rfrMaT|?CAv^IT9T}K5cA1_WYUt4)C9J&4U`iN~ zXelB|2m5wA@@oBeDSi9jI2qPT6vhZc7Yqpni#l+Wi%S3`i( zgd0U?FiMY|qkMbRS;&Ts>0w39E6!jn`i(4W>*0?vJQ@9uz)_bod6M#@ai&npHG2tM zo?6Of;BX%vlBAX|zdOD+VPgf)znRt-jeAqWIMOamuPG;0<|@+l&SdTA%! zf49r8*LuvbGPmv30m%``0(PJcRvKO%f#c&XwQ;Ou^BHHo3;+nBbXiqX*cX5urmK3FY7fZVORo zUNOX1r0TbW105mNsFYk*0iTRywm{lLIk1|2MPbcY?ODSVDZpE~utq1qViYeycK^3^ z8h$P>Zx1Uo5it$DZDg;^t4^QF0@1lO`N{0)lVzp6U(lj9MQC8eQoFxv$-lMra3gpX zBi>xif5Fc6Ks$|j`3 zdF;yO_peW7LG<>NM=;^PC?LZ$4AYPHYJ`k-SnM8w(*dbt3Xar8`N=uQ- z`C?c3g1wp7gYmXnfUeA|k`x=WSUg1g|V$A!Adx zS<154+4mJ+UUu963g@0*Q{FkFH4*U2K_K?9#WBU1g#A4;e*PbMu8h()%v@($YG5Yz zI$1o_>8k~k{rNTVD)CnZl0myjQpA=WWRw1QYU`=GiK1{kyW>e`9vZ;g@(UCirQT$s zPMJR9UxM5t<1?m&n%8?8c9D9@jeYITB{@*UEvsz%Jvk)DE zkts3=b`c3g6l);bI@?s>_BFUaGtT*{1#p8BtfC*6Ebhcd;ZL&u{(orDDYNLLLr36o zScCt1usxfI1cLBP!vJ&bB|)4BXUMGLm2r{@ht<|^z?cy9_yk5rKh=D6Nys`)x3YTS zLd9XSz&#GgK|b&k;QGbOlQK?FOyHnUCFO`kEHx|d#;XwMjGUlj#Q_X-5Lkg5PA8r0 zq^P$}L}D5a(Y>evQvw{T)bKU&mrWg|95Ks+MvnfkRe)}@k+NqRWY89T!+Z{46kg$y zppcEjIZ)AQFt2!C&5~Sk&lGc64Y0T-Nly@U^M646?@{~9F$5}!kVJNuM+8C2ixGx{ zn}*QD$YCBjP(tKyT4>*-@RE>og8T6;Ef;jSjYu6avj5m_j3iCK8j>W|ZW{ zcAxqL0q&hj%Y{*6ZqpVHR0X;xfENwu61R~Vq_}Zu@!Uue3C9XTu;vZS$C(69D*YuF4rp|-(a*`iZ=$y2U>3=9=OytWz!PY2 zj1k*xF!QS4fYo#w0N!gMM+{{mc%3_PhHW7XAA}4;&IsHvrh&#Lnr>4|ed^rz;5!j; zb`G)28=Y|w`0R`@B=Td6!$Lo0+VRN_rmU z5ST-oCvn45TlL2l2$LWl;s#X30@D6EMEV5V6`IsMneQnr$I{rj#PYNIYAT2M#z5&% z1^C88OyH_;J~SyHO^^iIUHa2xx)}_i8k5}t8B#?r&f)S%cxjt zW15U8uTS;+{P%OOQz^(V!`0Q|?JCI6w^b9%l6uO+y)H=Fm*U@EvZj0?P$J^6z$M*5 z`~{v;p=%Vy)zvUIyX+hpuW?QDXV|(+kZ=4hwBso8bY3p$i{3jh2p(o@n zIsL`#evCYpm7#Q-duk=eNE5WzQ=T>gR0}H2bZMYQFg^^Ygve<$hmYJkRKC1 z^BQ#>&11~mvp$6Y1`-N1j(e#Ms-%0)%fUG;=J@ajqf`f1BiH+`&GN!{6Akv%mMpF= z26Q2G$7U2D!{L4f40T7!o@`7C$QOIrR65+KHI$Pl{NZQ!rAhg@sK7zg;-XQR_HAnz zG}!1*+78Sb^Hep;i&f_3ua4tVv291DVC85Wt0~YH5z{acpB;x!bF9wG7Q7`^=04`|>VK6;?A)+2 zNNo)n;@@#Y&k+iW=-rjaTmQ(7;0& zA|!;t4-?9>DvY^Ej=)aDn22a7Y zc`Zv4$)o5*ZBqsGRO8=GG2%QC>mc~XoV!<@2mL47&*(o*i+lV5EIffpLSe`&4X<#< zTXej1 z>y2m1uOGKpB)h#}5k{?UTXr0_3;WQ4-MJAMD#nuoRlMTA(m?HHgna30p+|ol(~v1- zLDtA7H3FHLlw=Z$B$6gq6yiVx(r095BW|}ff4(OE>qW>S6h>0?_kRkbQK6Z|&6*Wz zlvCz%hD#)iZ?Z`O(lmnHpMsP3k!bonMqaXdnq{KF&6Um+Y3hgugF~7R4b!P6>E_uHRNu}BC+@7tX|m~L#V9ByUM9NAS%r*O0`z2pg)q1b zFcLA`y)g=xh~({kFTcjj^uIfN`fq((GYtoEL;vlI%=6o!!mUy(pu7?$Vjt4s(v539 zCZ44KY}Xdizv@2>`Ha9g8FleIs^bG<;0X)^5YFNiofLE8qTn+$s{7Y=yyorh-w515 z0E^`Uu40#`ww~db23e3z=vR%P5AJo!fxi)9ru6LRxvcNTNDasWs?)u+8qW_BeRy4! zKh2jWEakUa>Mij#x`O(;3hBCF%Gu?a@OCfdmAPa&F{k7iT}@SdeZS|v{g3OCwUlif zILpsTf2Jr7o7MI)RxFFa!%##}G#;FA!U5 zFl{|Zg+d}SjGxAHTXOMVbQTdHK(6iep#!^fBk(E&@ErZB5vb_;#HbKv;wP3$QW7B_ zM;W>+A~rEhtEt+0-L0)N=_BSN_!QeLc|m)vuqw7R8JRUq2CY?KU9%q!#-#k#8S(E9 z&qGE}tnZTnM4nXz%*sapebU1#rs1_Un`juH-Qvjg)Fz>&<(Gl4%0IF9Ga+&CBn}p| z7x(xHTOdOl_+O#_*g|2fOddO272o-0uAt2B)qMh0bs$!mSDlzZV~w=JGct>EX}J3a zCA0-$>?fxJq(Rkf=c|n_tBmQ0O6m>B;p9|A(7PP}*-Qacc4HzW`Cvy5@W1R(D;=d< z2iAFNE1jxaMbk*onIg0JX*v+BBb*x>?N1wl??E8WV)s>fl{F~ zV$)buCy%5!eLLNI{`K?!OFoICoGB`y>uN1ENPR**cT3kxcO$g;yyw3M}=)qFL~ri`~{tya(IJXhIT7qqz{z^-=Os49*Azu)Np>%V<9jOSdn zxUKWkGiS#0B!c3BmpDA5tM~B4DR;iahuLnd>Oa+iGpquk@!0<@^_ok3u)Dpiy#DGW zl9;APzpus^dAUf1EOK&;8O;CZ#s6}z4|~99FAmtc>`)vP0;!>v$qr9#`Qlg$$6!#K zB_d{p4_Dru8-d>l0%^q*f|LQ_X#z?kb~hh|fQY5E=^Jqyebc}G4S_Nn&-@&A*^?)53lai|Vn zSz9X#^Alj|5rxmDHdXsn3iU$aFkSd|?@qfqb`JOLf2~R-h#tiw5tQxwPv1djNfRHK zb3avxck`{eg{WwIF+Dk~6CA)oQ-lZmx^x zJL3nB9Bc7)M{Z=6YJDnQb*O%=Rc!rLq6R4wRf>K@XzQGxGpe4_qTE=Jw|3!!D}un~AI0(9>&8#g|jK3|`2v_6TRvNc6vEjss}8-b0$Mqneb5!eW91U3R2fsMdMU?Z>* z*a&O{HUb-gjlf1=Bd`(J2y6s40vmyiz(!yruo2h@Yy>s}8-b0$Mqneb5!eW91U3R2 zfsMdMU?Z>**a&O{HUb-gjlf1=Bd`(J2y6s40vmyiz(!yruo2h@Yy>s}8-b0$Mqneb z5!eW91U3R2fsMdMU?Z>**a&O{HUb-gjlf1=Bd`(J2y6s40vmyiz(!yruo2h@Yy>s} a8-b0$Mqneb5!eW91U3R2fsMdt5%>>egxa(K literal 146996 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 Y5@;mQNT88GBY{Q&jRYDA+<*lB17|A$>i_@% diff --git a/main.lua b/main.lua index dbf65ef..c8a34d0 100644 --- a/main.lua +++ b/main.lua @@ -20,6 +20,10 @@ function love.directorydropped( path ) return map.load( path ) end +function love.filedropped( path ) + +end + function love.update( dt ) local tx, ty = 0, 0 local moveCamera = false diff --git a/map/blur.lua b/map/blur.lua new file mode 100644 index 0000000..08d2247 --- /dev/null +++ b/map/blur.lua @@ -0,0 +1,113 @@ +local love = assert( love ) +local lg = love.graphics +local lt = love.timer +local coroutine = assert( coroutine ) +local bmp = require 'map.bmp' + +local scale = 1 +local w, h = scale * 512, scale * 285 + +local dilateShader = require 'shaders.dilate' +local finalCanvas = lg.newCanvas( w, h ) +local canvas = lg.newCanvas( w, h ) +local identityTransform = love.math.newTransform() + +local tiles = {} +do + local sideLength = 4 + local i = 1 + for x = 1, sideLength do + for y = 1, sideLength do + local width = math.floor( w / sideLength ) + local height = math.floor( h / sideLength ) + tiles[i] = function() return + (x - 1) * width, (y - 1) * height, + width, height + end + i = i + 1 + end + end +end + +--the coroutine library doesn't reset all the global graphics state for us +--so this yield function does +local function y( s, currentTile ) + lg.pop( "all" ) + coroutine.yield( s ) + lg.push( "all" ) + lg.setCanvas( canvas ) + lg.setShader( dilateShader ) + lg.setScissor( currentTile() ) + lg.setBlendMode( "add" ) +end + +local function renderRadar( map, filename ) + local statusString = "%s: rendering %s radius\n %s\n %d/%d" + --we need this first push to the stack to keep y() simple + lg.push( "all" ) + y( filename, tiles[1] ) + --then we clear the whole canvas to opaque black, pause, and select the first tile + lg.setScissor() + lg.clear( 0, 0, 0, 1 ) + dilateShader:send( "sailable", map.sailable.img ) + for tile = 1, #tiles do + + --dilate placeable land area by 30 degrees (radar radius) + dilateShader:send( "radius", math.floor( 512 * 30 / 360 ) ) + + for name, terr in pairs( map.territory ) do + y( statusString:format( filename, "radar", name, tile, #tiles ), tiles[tile] ) + lg.setColor( + 0.9 + terr.colour[1], + 0.9 + terr.colour[2], + 0.9 + terr.colour[3], + 1 / 6 ) + lg.draw( terr.img, 0, 0, 0, scale, scale ) + end + + --dilate placeable land area by 45 degrees (sub launch radius) + dilateShader:send( "radius", math.floor( 512 * 45 / 360 ) ) + for name, terr in pairs( map.territory ) do + y( statusString:format( filename, "sub", name, tile, #tiles ), tiles[tile] ) + lg.setColor( + 0.9 + terr.colour[1], + 0.9 + terr.colour[2], + 0.9 + terr.colour[3], + 1 / 12 ) + lg.draw( terr.img, 0, 0, 0, scale, scale ) + end + end + + lg.setCanvas( finalCanvas ) + lg.setScissor() + lg.setShader() + lg.clear( 0, 0, 0, 1 ) + lg.setColor( 1, 1, 1, 1 ) + lg.draw( canvas ) + lg.pop( "all" ) + + coroutine.yield( ("%s: encoding image data"):format( filename )) + + return bmp.blur( finalCanvas:newImageData() ) +end + + + +local t = {} + +function t:save( ) + return renderRadar( self.map, self.filename ) +end + +function t.load( filename, map ) + t.filename = filename + t.map = map + return t +end + +function t.draw() + lg.setScissor() + return lg.draw( canvas ) +end + +return t \ No newline at end of file diff --git a/map/bmp.lua b/map/bmp.lua index 0db1ba7..4b712d2 100644 --- a/map/bmp.lua +++ b/map/bmp.lua @@ -16,6 +16,7 @@ function test.load( filename ) print( "LOADING BITMAP: ", filename, imgd:getSize(), imgd:getFormat(), imgd:getDimensions() ) local img = love.graphics.newImage( imgd ) img:setFilter( "nearest", "nearest" ) + img:setWrap( "repeat", "clampzero" ) return img, imgd end @@ -103,6 +104,16 @@ local formats = { w = 512, h = 285, }, + ["blur"] = { + header = getHeader( "data/graphics/blur.bmp" ), + w = 512, + h = 285, + }, + ["screenshot"] = { + header = getHeader( "screenshot.bmp" ), + w = 256, + h = 128, + }, } function formats.ai:test( ) @@ -316,11 +327,24 @@ function formats.africa:encode( data ) return table.concat( bytes ) end +function formats.screenshot:encode( data ) + return formats.territory.encode( self, data ) +end + +--this one was 8-bit grayscale in the original game +--but we're going to increase the bit depth to 24 because +--the game can render colours in blur.bmp just fine +--and we want to render tinted radar ranges into that file +function formats.blur:encode( data ) + return formats.territory.encode( self, data ) +end + function t.load( filename ) local imgd = love.image.newImageData( filename ) print( "LOADING BITMAP: ", filename, imgd:getSize(), imgd:getFormat(), imgd:getDimensions() ) local img = love.graphics.newImage( imgd ) img:setFilter( "nearest", "nearest" ) + img:setWrap( "repeat", "clampzero" ) return img, imgd end diff --git a/map/map.lua b/map/map.lua index 81c8d6c..f398cdf 100644 --- a/map/map.lua +++ b/map/map.lua @@ -1,5 +1,6 @@ local love = assert( love ) local io = io +local coroutine = coroutine local mkdir = assert( require 'lib.mkdir' ) local lg = love.graphics local AI = require 'map.ai' @@ -8,6 +9,7 @@ local Lines = require 'map.lines' local Nodes = require 'map.travelNodes' local Camera = require 'ui.camera' local Territory = require 'map.territory' +local Blur = require 'map.blur' --flat list of editable layers for convenience local layers = { @@ -24,6 +26,7 @@ local layers = { sailable = false, ainodes = false, cities = false, + blur = false, } local map = { @@ -50,9 +53,28 @@ local map = { travelnodes = false, sailable = false, ainodes = false, - cities = false + cities = false, + blur = false, } + + +function map.reloadLayer( path ) + --Shouldn't call this before the map loads, but just in case + if not map.loaded then return end + for name, layer in pairs( layers ) do + if layer.filename and + (layer.filename:gsub( ".+[\\/]", "") == path.filename:gsub( ".+[\\/]", "" )) then + local newLayer = layer:load( path ) + newLayer.filename = layer.filename --we don't store the full path in there + map[ name ] = newLayer + layers[ name ] = newLayer + return layer.filename + end + end + return +end + function map.load( path ) map.background = lg.newImage( "/data/graphics/blur.bmp" ) map.cities = Cities.load( "/data/earth/cities.dat" ) @@ -62,6 +84,7 @@ function map.load( path ) map.sailable = Territory.load( "/data/earth/sailable.bmp", "sailable" ) map.travelnodes = Nodes.load( "/data/earth/travel_nodes.bmp", map.sailable.isSailable ) --travel node adjacency matrix depends on sailable bitmap map.ainodes = AI.load( "/data/earth/ai_markers.bmp" ) + map.blur = Blur.load( "/data/graphics/blur.bmp", map ) for k, v in pairs(map.territory) do map.territory[k] = Territory.load( "/data/earth/"..k..".bmp", k ) end @@ -85,31 +108,31 @@ function map.draw() lg.setBlendMode( "add" ) lg.setColor( 1, 1, 1, 0.2 ) - lg.draw( map.background ) + --lg.draw( map.background ) lg.setColor( 1, 1, 1, 0.5 ) + local sh = require 'shaders.sailable' + lg.setShader( sh ) + sh:send( "lowBorder", 60 ) + sh:send( "highBorder", 130 ) for k, v in pairs(map.territory) do if v.visible then + v:draw() - lg.setLineWidth( 1 / Camera.zoom ) + --[[lg.setLineWidth( 1 / Camera.zoom ) v:drawBorder( "land" ) lg.setLineWidth( 3 / Camera.zoom ) - v:drawBorder( "sea" ) + v:drawBorder( "sea" )]] end end if map.sailable.visible then + sh:send( "lowBorder", 20 ) + sh:send( "highBorder", 60 ) + lg.setShader( require 'shaders.sailable' ) map.sailable:draw() - lg.setLineJoin( "none" ) - lg.setLineWidth( 1 / Camera.zoom ) - - lg.setColor( 1, 1, 1, 0.5) - map.sailable:drawBorder( "sailable" ) - - lg.setLineWidth( 3 / Camera.zoom ) - map.sailable:drawBorder( "placeable" ) end + lg.setShader() lg.setBlendMode( "alpha" ) - lg.setColor( 1, 1, 1, 1 ) end @@ -182,33 +205,42 @@ function map.draw() end -local function write( filename, string ) - print( "Writing", string:len(), "bytes to", filename ) - local file = assert( io.open( filename, "wb" ) ) - assert( file:write( string ) ) - assert( file:flush() ) --your toilet is set to stun, not kill - file:close() -end - -function map.save() - --should be cross platform-ish. - --race condition, unfortunately. - --maybe we should do this on part on load, then keep a lockfile open in each of these folders - for _, folder in ipairs{ "/data/", "/data/earth/", "/data/graphics/" } do - assert( mkdir.exists( map.path ), map.path ) - local path = map.path..folder - if not mkdir.exists( path ) then mkdir.mkdir( path ) end +do + local function write( filename, string ) + local file = assert( io.open( filename, "wb" ) ) + assert( file:write( string ) ) + assert( file:flush() ) --your toilet is set to stun, not kill + file:close() end - local files = {} - --Write everything to strings first, in case there are errors we don't want to half-write the map - for k, layer in pairs( layers ) do - files[ map.path..tostring( layer.filename ) ] = assert( layer:save() ) - end - for filename, str in pairs( files ) do - write( filename, str ) + local function save() + --should be cross platform-ish. + --race condition, unfortunately. + --maybe we should do this on part on load, then keep a lockfile open in each of these folders + for _, folder in ipairs{ "/data/", "/data/earth/", "/data/graphics/" } do + coroutine.yield( "Creating folder ".. folder ) + assert( mkdir.exists( map.path ), map.path ) + local path = map.path..folder + if not mkdir.exists( path ) then mkdir.mkdir( path ) end + end + + local files = {} + --Write everything to strings first, in case there are errors we don't want to half-write the map + for k, layer in pairs( layers ) do + coroutine.yield( "Exporting layer ".. k ) + files[ map.path..tostring( layer.filename ) ] = assert( layer:save() ) + end + for filename, str in pairs( files ) do + coroutine.yield( "Writing ".. filename ) + write( filename, str ) + end + + coroutine.yield() --yield nothing to indicate we're done + return save() --save again end + map.save = coroutine.wrap( save ) + end function map.hover(x, y) diff --git a/map/saveoptions.lua b/map/saveoptions.lua new file mode 100644 index 0000000..3c5c2ce --- /dev/null +++ b/map/saveoptions.lua @@ -0,0 +1,19 @@ +local t = {} +t.options = { + Name = "New DEFCON Mod", + Version = "0.1", + Author = "DeFacto", + Website = "https://wan-may.art/dev/", + Comment = "DEFCON map made with dcEarth", + radarExport = true, + screenGenerator = true, + highDetail = true, +} + +--parse and load metadata from mod.txt +function t.load( filename ) + +end + + +return t \ No newline at end of file diff --git a/map/territory.lua b/map/territory.lua index 58786e6..c58523d 100644 --- a/map/territory.lua +++ b/map/territory.lua @@ -144,7 +144,6 @@ end function t.save( territory ) local fmt = (territory.name == "sailable") and "sailable" or "territory" - print( "saving bitmap: ", territory.name, fmt ) return bmp[fmt]( territory.imgd ) end diff --git a/map/travelNodes.lua b/map/travelNodes.lua index 63d0aaa..9b6d541 100644 --- a/map/travelNodes.lua +++ b/map/travelNodes.lua @@ -57,7 +57,7 @@ end function t.load( filename, sailable ) - isSailable = sailable + isSailable = sailable or isSailable local img, imgd = bmp.load( filename ) local nodes = { filename = filename, visible = true, nodes = {}, points = {}, connections = {}, img = img } t.nodes = nodes diff --git a/mod.txt b/mod.txt new file mode 100644 index 0000000..7acc703 --- /dev/null +++ b/mod.txt @@ -0,0 +1,5 @@ +Name New DEFCON Mod +Version 0.1 +Author DeFacto +Website https://wan-may.art/dev/ +Comment DEFCON map made with dcEarth \ No newline at end of file diff --git a/screenshot.bmp b/screenshot.bmp new file mode 100644 index 0000000000000000000000000000000000000000..40d96dea8621692fbd5f9eedf0351df527858f17 GIT binary patch literal 98358 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 literal 0 HcmV?d00001 diff --git a/shaders/dilate.lua b/shaders/dilate.lua new file mode 100644 index 0000000..f751b96 --- /dev/null +++ b/shaders/dilate.lua @@ -0,0 +1,46 @@ +return love.graphics.newShader[[ + #pragma language glsl3 + uniform int radius; + uniform Image sailable; + + bool own( float x ) + { + if( x * 255.0 > 130.0 ){ + return true; + } + else { + return false; + } + } + + bool land( float x ) + { + if( x * 255.0 <= 60.0 ){ + return true; + } + else { + return false; + } + } + + bool placeable( Image tex, vec2 uv ) + { + return own(Texel(tex, uv).r) && land(Texel(sailable, uv).r); + } + + vec4 effect( vec4 color, Image tex, vec2 texture_coords, vec2 screen_coords ) + { + for(int i = -radius; i <= radius; ++i) { + for(int j = -radius; j <= radius; ++j) { + vec2 offset = vec2( ivec2( i, j ) ) / vec2( textureSize(tex, 0) ); + int r = ((i * i) + (j * j)); + if ( (r < (radius * radius) ) + && placeable( tex, texture_coords + offset )){ + return color; + } + } + } + + return vec4( 0.0, 0.0, 0.0, 0.0 ); + } +]] \ No newline at end of file diff --git a/shaders/sailable.lua b/shaders/sailable.lua new file mode 100644 index 0000000..13654ad --- /dev/null +++ b/shaders/sailable.lua @@ -0,0 +1,36 @@ +return love.graphics.newShader[[ + #pragma language glsl3 + + uniform float highBorder; + uniform float lowBorder; + + #define p(x) ((x) * 255.0 > highBorder) + #define t(x) ((x) * 255.0 > lowBorder) + + vec4 effect( vec4 color, Image tex, vec2 texture_coords, vec2 screen_coords ) + { + vec2 s = vec2( 1.0, 1.0 ) / vec2( textureSize(tex, 0) ); + float c = Texel( tex, texture_coords ).r; + vec4 g = vec4( + Texel( tex, texture_coords + s * vec2(1.0, 0.0)).r, + Texel( tex, texture_coords + s * vec2(0.0, 1.0)).r, + Texel( tex, texture_coords + s * vec2(-1.0, 0.0)).r, + Texel( tex, texture_coords + s * vec2(0.0, -1.0)).r + ); + bvec4 place = bvec4( p(g.r), p(g.g), p(g.b), p(g.a) ); + bvec4 traverse = bvec4( t(g.r), t(g.g), t(g.b), t(g.a) ); + float a; + if ( p(c) ){ + if( all( place ) ) { a = 1.0; } + else { a = 2.0; } + } + else if( t(c) ){ + if( all( traverse ) ) { a = 0.5; } + else { a = 0.75; } + } + else{ + a = 0.0; + } + return vec4( color.rgb, a * color.a ); + } +]] \ No newline at end of file diff --git a/shaders/territory.lua b/shaders/territory.lua new file mode 100644 index 0000000..ed5fccb --- /dev/null +++ b/shaders/territory.lua @@ -0,0 +1,54 @@ +--[[ + 0 + 20 -- once sailable.bmp is brighter than this, the area is traversable by ships + 60 -- once sailable.bmp and territory.bmp are brighter than this, ships can be placed here + 130 -- if territory.bmp is brighter than this and sailable is darker than 60, structures are placeable. + + SO: + SAILABLE: 0 (not), 21 (traverse not place), 61 ( traverse and place ) + TERRITORY: 131 ( place land if sailable <= 60 ), 61 ( place sea ), 0 +]] + +return love.graphics.newShader[[ + #pragma language glsl3 + uniform int radius; + uniform Image sailable; + + bool seaPlace( float x, float y ) + { + return ( x * 255.0 > 60.0 ) && ( y * 255.0 > 60.0 ); + } + + bool own( float x ) + { + if( x * 255.0 > 130.0 ){ + return true; + } + else { + return false; + } + } + + bool land( float x ) + { + if( x * 255.0 <= 60.0 ){ + return true; + } + else { + return false; + } + } + + bool placeable( Image tex, vec2 uv ) + { + return own(Texel(tex, uv).r) && land(Texel(sailable, uv).r); + } + + vec4 effect( vec4 color, Image tex, vec2 texture_coords, vec2 screen_coords ) + { + if (placeable( tex, texture_coords + offset )){ + return color; + } + return vec4( 0.0, 0.0, 0.0, 0.0 ); + } +]] \ No newline at end of file diff --git a/ui/loadmodal.lua b/ui/loadmodal.lua index be75b8b..aae1dc1 100644 --- a/ui/loadmodal.lua +++ b/ui/loadmodal.lua @@ -57,5 +57,9 @@ function t.directorydropped( path ) return love.filesystem.mount( path, "" ) end +function t.filedropped( path ) + return map.reloadLayer( path ) +end + return modal.new( t ) \ No newline at end of file diff --git a/ui/menu/cities.lua b/ui/menu/cities.lua index d8023cb..f14676d 100644 --- a/ui/menu/cities.lua +++ b/ui/menu/cities.lua @@ -138,17 +138,6 @@ function editModal.draw() return button:draw() end -function editModal.resize( w, h ) - local i = 0 - local high = h / 6 - for key, b in pairs( editButtons ) do - b.x = w / 2 - button.w / 2 - b.y = ( high + 4 ) * i - b.h = high - i = i + 1 - end -end - function moveModal.update( dt ) local x, y = love.mouse.getPosition() if y > t.menuHeight and love.mouse.isDown( 1 ) then diff --git a/ui/modal.lua b/ui/modal.lua index 18ea5b9..c5e485e 100644 --- a/ui/modal.lua +++ b/ui/modal.lua @@ -6,6 +6,7 @@ t.__index = t local i = 0 function t.start( self ) print( "starting modal:", i + 1) + love.graphics.push( "all" ) love.graphics.setScissor( self.x or 0, self.y or 0, @@ -55,7 +56,7 @@ function t.stop( self ) i = i - 1 t.previous = t[i - 1] - love.graphics.setScissor(0, 0, love.graphics.getDimensions()) + love.graphics.pop( "all" ) end function t.exitAll() diff --git a/ui/savemodal.lua b/ui/savemodal.lua index 780676d..751c9dd 100644 --- a/ui/savemodal.lua +++ b/ui/savemodal.lua @@ -1,8 +1,10 @@ +--Modal for setting save options. local love = assert( love ) local modal = require( "ui.modal" ) local button = require( "ui.button" ) local map = require( "map.map" ) -local t = {} +local save = require( "ui.saveprogress" ) +local t = { w = love.graphics.getWidth(), h = 200 } local saveLocation = false local floppy = love.graphics.newImage( "icons/save.png" ) @@ -10,40 +12,40 @@ floppy:setFilter( "nearest", "nearest" ) local saveButton = button.new{ group = t, name = "save", - callback = function() map.save(); return t:stop() end, + align = "left", + callback = function() save:start() end, visible = false, icon = floppy, - x = love.graphics.getWidth() / 2 - 300, - y = love.graphics.getHeight() / 2 - 150, - w = 600, - h = 100, + w = 400 - button.x, + h = 64, + y = 0, } local xIcon = love.graphics.newImage( "icons/x.png" ) xIcon:setFilter( "nearest", "nearest" ) local cancelButton = button.new{ group = t, - name = "cancel", + name = " cancel", + align = "left", visible = false, icon = xIcon, callback = function() return t:stop() end, - x = love.graphics.getWidth() / 2 - 300, - y = love.graphics.getHeight() / 2, - w = 600, - h = 100 + y = 68, + w = 400 - button.x, + h = 64, } function t.start() modal.start( t ) saveLocation = saveLocation or map.path button.selected = saveButton - saveButton.name = "save to "..saveLocation + saveButton.name = " save to "..saveLocation button.displayGroup( t, false, true ) end function t.draw() love.graphics.clear( 0,0,0,1 ) - love.graphics.setColor( 1, 0, 0, 0.4 ) + love.graphics.setColor( 1, 1, 1, 0.9 ) button:draw() end @@ -51,7 +53,7 @@ end function t.directorydropped( path ) saveLocation = path map.path = path - saveButton.name = "save to "..map.path + saveButton.name = " save to "..map.path return love.filesystem.mount( path, "" ) end diff --git a/ui/saveprogress.lua b/ui/saveprogress.lua new file mode 100644 index 0000000..3f6f60d --- /dev/null +++ b/ui/saveprogress.lua @@ -0,0 +1,36 @@ +--What to display when saving is in progress. +local love = assert( love ) +local modal = require( "ui.modal" ) +local button = require( "ui.button" ) +local map = require( "map.map" ) +local timer = love.timer +local time = 0 + +local t = { w = 400, h = 200 } +local progressMessage = "" + +function t.start() + time = timer.getTime() + progressMessage = "" + return modal.start( t ) +end + +function t.update( dt ) + local msg = map.save() + if not msg then return t:stop() end + progressMessage = msg +end + +function t.draw() + love.graphics.push( "all" ) + love.graphics.setCanvas() + love.graphics.setShader() + love.graphics.setScissor( 0, 0, t.w, t.h ) + love.graphics.clear() + love.graphics.setColor( 1, 1, 1, 1 ) + love.graphics.print( timer.getTime() - time ) + love.graphics.printf( progressMessage, 0, love.graphics.getFont():getHeight(), t.w, "left") + love.graphics.pop( "all" ) +end + +return modal.new( t ) \ No newline at end of file