From cc88dc9f9ed672d5cfc2443363023a5dabcf34ba Mon Sep 17 00:00:00 2001 From: Feufochmar Date: Sun, 19 Dec 2021 18:02:05 +0100 Subject: [PATCH] Initial import --- .gitignore | 1 + LibertinusSans-Regular.otf | Bin 0 -> 256824 bytes default_env.tres | 7 + entity/chest.tscn | 48 +++++++ entity/entrance.tscn | 15 +++ entity/exit.tscn | 15 +++ entity/ground.tscn | 29 +++++ entity/player.gd | 85 ++++++++++++ entity/player.tscn | 39 ++++++ entity/wall.tscn | 26 ++++ export_presets.cfg | 133 +++++++++++++++++++ hud/button-down.svg | 84 ++++++++++++ hud/button-down.svg.import | 35 +++++ hud/button-left.svg | 84 ++++++++++++ hud/button-left.svg.import | 35 +++++ hud/button-right.svg | 84 ++++++++++++ hud/button-right.svg.import | 35 +++++ hud/button-up.svg | 84 ++++++++++++ hud/button-up.svg.import | 35 +++++ hud/joypad.svg | 141 ++++++++++++++++++++ hud/joypad.svg.import | 35 +++++ hud/map_viewer.gd | 101 ++++++++++++++ hud/map_viewer.tscn | 13 ++ icon.png | Bin 0 -> 3305 bytes icon.png.import | 35 +++++ main.gd | 69 ++++++++++ main.tscn | 6 + project.godot | 150 +++++++++++++++++++++ screen/abstract_screen.gd | 5 + screen/end_screen.gd | 25 ++++ screen/end_screen.tscn | 64 +++++++++ screen/exploration_screen.gd | 101 ++++++++++++++ screen/exploration_screen.tscn | 95 ++++++++++++++ screen/map_screen.gd | 23 ++++ screen/map_screen.tscn | 119 +++++++++++++++++ screen/start_screen.gd | 8 ++ screen/start_screen.tscn | 231 +++++++++++++++++++++++++++++++++ tools/cell.gd | 98 ++++++++++++++ tools/direction.gd | 105 +++++++++++++++ tools/generator.gd | 118 +++++++++++++++++ tools/maze.gd | 154 ++++++++++++++++++++++ tools/maze_player.gd | 40 ++++++ 42 files changed, 2610 insertions(+) create mode 100644 .gitignore create mode 100644 LibertinusSans-Regular.otf create mode 100644 default_env.tres create mode 100644 entity/chest.tscn create mode 100644 entity/entrance.tscn create mode 100644 entity/exit.tscn create mode 100644 entity/ground.tscn create mode 100644 entity/player.gd create mode 100644 entity/player.tscn create mode 100644 entity/wall.tscn create mode 100644 export_presets.cfg create mode 100644 hud/button-down.svg create mode 100644 hud/button-down.svg.import create mode 100644 hud/button-left.svg create mode 100644 hud/button-left.svg.import create mode 100644 hud/button-right.svg create mode 100644 hud/button-right.svg.import create mode 100644 hud/button-up.svg create mode 100644 hud/button-up.svg.import create mode 100644 hud/joypad.svg create mode 100644 hud/joypad.svg.import create mode 100644 hud/map_viewer.gd create mode 100644 hud/map_viewer.tscn create mode 100644 icon.png create mode 100644 icon.png.import create mode 100644 main.gd create mode 100644 main.tscn create mode 100644 project.godot create mode 100644 screen/abstract_screen.gd create mode 100644 screen/end_screen.gd create mode 100644 screen/end_screen.tscn create mode 100644 screen/exploration_screen.gd create mode 100644 screen/exploration_screen.tscn create mode 100644 screen/map_screen.gd create mode 100644 screen/map_screen.tscn create mode 100644 screen/start_screen.gd create mode 100644 screen/start_screen.tscn create mode 100644 tools/cell.gd create mode 100644 tools/direction.gd create mode 100644 tools/generator.gd create mode 100644 tools/maze.gd create mode 100644 tools/maze_player.gd diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a96203 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.import/ diff --git a/LibertinusSans-Regular.otf b/LibertinusSans-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..e3cc0e835547fec5d43bacde8309815a0a18301f GIT binary patch literal 256824 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 Lc_>E7n?yc^l3?VMk6~T;RDJd-| zC#&r_sYQ%QVMv!s5>+WV@O$!d^0Udb%tBi(qbSdBIV^D%8?Y;{Gq*n7PM4>|6@`%p zBNWLAj7C%9%PWOxA(djd_-lC0|BTCs(wOj~K$0E*+AHiNhC}%92h`j8!2$>Xuwuxm z9alT!My$Z+D93x0>v8=tV?SMEEG?-g4>#2x9*pe{j*-D@Dv@?pT9p}cf5oOO#bfsy zTmlHU{>x(-34BK&v$u-WpOM7BpbrZ-ms*}cAB1DVFXG`z6tO>ae?kDcd;bvhrWtpe zjt$nyg6kMUdMxQ0%!5j;T$?1#)aQ+x-1$0qk||QX9%4X^AzqiH$?$+tqa(!a^^Gm< zF%2=1@v%`cwXvOyYi?G4PHv8eQOVPtHZ}on!>_8=YU}`2!8AT;_BX7AoxET&EIkwc zJ{!9c_-V10zYNFk#L+qZLb)bVn;}ma=^Cl37;UOSt8p(3(?@QVB!ib;&$pTjt@i^S zvF?+nEMlkaDB0N_2(OiWj}`E|1r7;*fp<*shXhZ8BZ7ZRZ!?`A8LwH{5lSwKf`H+~ zRP4@v@g*B8Y~mB&+@T2W&a|ak1Ltqqxb+60G(y_Md1i7vS2v5oE+-r_28dyXa{Zsp zE+JI%^i)_0bSkx0vV~CJ-pO5g?T(sTAvRM#mp}Y~b0R}n@fvpjc6NsFacAM}|6=8N znkb7;C`%%@?B3*=3BHIA`vN$R>z@oia0;k9Ke;{l>6N?0kdTAGeks3N(@ORYgsjL> zDYF^k?Dga+ukA=!#4O_z>aSLDzxqx1#c&ZJcDTTD_XH>89+43A8aj;4v{7SF)5HqR zs@y%`#K8KhNl${6n{Ydh#V}?2t-N`X2)+3d)@;JB3ODnKe_=&DqQGb@U@8R~Jv36O zshFt}nA99#4d|#!snrq}FhdauRkHf}s;YY8rozf0uWp|JgvwrH4+us;(ve#P1iPpB z+{o%q8?**3ox{bnE4WtEF$R;yt|M+4ZUDwj6l?XlbdttjE9EdKhzIK6hU%X9%UIO< z$%cobM-aYaF#x8%gdHOB2iObJr8( zi>%XY>;yvI;F#CobevG-m>Gz$i9}OQ-4IcrEz;VEiU$;|rqOprAr6216(!m-jS}ri zpmqsXXuWbLQ=-Phlqh6{#w(B8UkLl7*bk9CoI*h${$Y>k-VzD|@skjU-@_}O;7aPl z_>cn}bq9VE)+hWo*gIL@fBKB%TG*%T7CP*p+M7Jgz9;^Q4?i7yX64+qi96ZJYvSzf zj3d&e-D3NQhHDQ1xVM~gbsl!d?qUspGCq3%&&YUNn5LHM($eB}(Bmr(v@YtN9x&CH zML~06abQV&c`sg<-3cE`ANdg8O5p|gp9Ac;W2{Fn>*O)KlTv5t6pA<<1mEGT_$4-e z6}v=8d_XysIU=3$R6I|tZ#=B8C!1Qd+9sy?^_q32Oks(kL|0OBgbQ?VD24A*cu60I zUKmC>)jE0{J1AG(MJ_V=3uqC=jiPnk@!+M_edBcE>swztWA$(&M~1L_*f4Q?wX~t3 zy1Jo3S`!~HO^&DWvgiNDIajrK#jjhwUV@)_fZcBY(03M=#Y9*Z!NyJYnUfU$CX2Rx zvGvpVA$a5jU3xkg+~R)r92>x%;aQAzI*S!-+~i}Qow|SW&bbArRt(Ms5ThQ@G%#4G z96r#&Ty7#&=+@cn(B$z(JaOW5%R;@V_; zx_soLyV)^3jY_N3Nb(Am=0X$vM}K;kS70)jiy*ELQ*ICLio71+4)GL$$hL|Sh2du& z!$&^}J{WO6V6ck3bQ$XKu#8fU#@Mq8B8R<>KgH+zy*+(pF@YhB=eF!^{*wKIJe#_x z$YwOt1A;npovofOF1M7`mJ0_vE)0Aq`C`+>DXX>wNE2was%*VY%RAC===fQZ7!7Kn zC$}n=Qz9P)ppxubh>-~Ki4V@;SwDuHNUUMX(xm1j(sT0?_PI%iU%kti98Za@7FE8P zsY;FrdeYA9F{!Z@Kgua zd|~Mc>1me4zQO{X-UxxOQ74xq$s%`T(RunDlZx&sXeuwS7M4|+Yw9FjN!>xTYc>07 zB|FOw1J7=()YWdigdVO?VQ`iK-!<6Zwxubm!Q~Jlq8B5OOfsXYW#Dwl&wHz5DRQu`|boC4ybY zy^p{CAX}@*RcD`C+Ox0QUr1aN@0rB|U{IX{z?HJVRA?%((sw`66!Xf{Q(?JLtF&4T zM@OtWv zpk;}LG42INj$5n93SD3*!|K6935E{wYxQD?F!rrp|3VxV-2SBT^RF2~4bZj~Ky2%7 z>J*;(7M^qkPXiD;1wd?A8K(<;G@iez7!r!Vwp z402H=dp7aYV z9^OO|kC(cp$H*xmc+b?JF9uHnhOvK!Pl8vvDaGB`+*V{GOLTECj28&Jv|*|c7{$|Lz=dF45-4t&ODX%y@%8S)5{B=&t!wx zb&F=Oe0Chm{}J!PA-~-IJM@wOs)}>)%AYuRV#iOEkl3${a7?C(7E#JhO$)TOCVi<2 z+WH(n`7uhs(`V@A*%Ihqql8BZAXtAZ{(&qo!rTuI+hzzN%k_^&(YWdNI6(X_?*xb7 zKY4}-U1)%WBfJT*wYZ`LIvNncLHwM*a9OdfwBA~*D$ZuuRDM>bG(D#fU^&F#*dw}9c03}H?EsDo!J(^u8?s*jzN z;6C^Rvj-2aAPk*-4;N9Df&!IMMaT04<)wu94VK{LW~x;RNuD_$XgQPJPGbRfQd@a7 zN%8u8Qkk#Ssu^PVH7Zb^o}EY%;?&o8$(PRN93t_wj*l<9`wX7aj>nwEQ`(3iJd0;lXPZ;Wq>Qw5B2AU9Vj|dAcv^wl zkX>Rl=}m-5Z`D`YinXS3lN;aZ`}{O^5fb94+N9Rj+S=CEq}r&cq@*aCNU7w71^K3V zlT&GKGqyfZrGXZ=g0W^CGA)**<9w; z9!LkaAC{elDc&U%3xGu;{*yT(3SQ-DIDp1xDES}b=A3{K_-aB_v5!%hda~TEkd^>x zXznwV8LcL>2Xy3uoD5?MxeJIcs=iL122j>ocK#Z6?n-u^u-H(mD=I46O<50DpR2zl ze8M2M8M@mfzl0CX1tdR1mX&MFu`;d-%yX3XxxqMcS>FHEEu!cSPhD57EhlSh^oDAN zXr$USmQ0wYyhe#_ZZ_oT?n>7yosK!K>vfHjeo7 zDb+j`KRh@xH-ucd<0>AD$DF@k?s8_j7jn$uLA6HI*hN%Ke77^|j6RZQm@dCOLB zjei-UkhXXC-&uVLZ@*)?N#rGHAOb9i*N5zv01(e%U*PfRmE$JMK@%MpmefW77h!;2 zVv<;MYlz%>o=TCc%_Xxl^@aINc5z<)0HGcBpok+)9eu~hu8T^R2jHGs%e*WFeaK_Q z2FJA(8S3?AW$oHh@b+po2BUl4Va*3X++93*zNU*jSuI-v<9z{s9tPEGL_)R0os!C6 ztph?+Z_qQMI2FNUYLga2T%6uY=u5el;NmL6P{`PUtKmW}oPgWJ-6!;|WOc1hTf-3L z(i*r0eB}rZ`z(_SeI%X&TT(!=jAWmmITzv*CRZbS)1=}liR5Gsw^RdPn$v{`fF){j zBW!BkK<&wcMbTTI@pg(PZBPF zFg^~3@5;{FrKxCVTm{>-0eSvh=haya1RD39T zN;RWa617!kTLnWLr2)Lu5u@Q^y{sxB0d6}HZaa~q{Rk(VbJ7|26FiN}$4#p%RhNSPrB* z2}?-;Rq!bV=m7Mf>1sOdlJuVR3!!MwkoJ4^rF^5&9YiMofwb({rDR>m^mo&5%C8H1 zmGsAvgFce(myGBTLvR4t5fnsB@jv48_4oXg`xsZWmH#Z)$E|Sp!Z`ALdF4i zMWLTlqOB10?&X4Be3+8prv%3a&$e`uJx$5$8Fq|76#B$La9pH@8lIfwKKp~|Htd5JvopKWitY@Gf{?@8u|+%( zToP}lMF$l-DzsLOMOdIM$Sa`Xr@DyTwUVH^gkxE>$Wsv=oO&R8zgF+gZovWa@|;?2 zvqvT$E=x*K#KlRXY|-^GbZaL$0A!TD3|g0WSvpm>>Cd z^(}3Ts8(@l`lXAKhT>zb;5k{@9(!7`)R5rOW-$=AO1*n3gdw5mjC6dbN9yEkw_c&w|dvX*Qr&&#M{N{r24C<}S!c$G1Z zT(-?~vp=(Co^s(Fjqp=}XaV31^ZtcjPo(g{KK#_p>{-@Lo+tzYN4#f*Z}{<{Xxe|aMGS>MbzI{ag7gOu z?59N2Mltw}3n-E5@x8;OrPJxO686(SuJJUz+WsRFkQ$0+!sAW**W+cK2U%j1?ALGH zlwT|F>b@2ox{q&(S(Cu4E%NN)-Xq=Bw6vU;m?BGyC1q-R3xf*;ZJNtET68mCp00vF z<{Yor=L4q66CH}B9ytOy*g-V-e*-)Kj{>42;88&OAv(T{5*;I0|K?k5=l^0uvF0s| zN<=?6oTnY3YTvqV`mp8FEsy_N_5L^9DCW4)A4a%Qj!Iqr4Ul(%`E>AHz?>ZlY7TyZ zDwp&MjvdD;eAL0E3PJ=VCSc@=`z?|8g#>&vf4Fz9+=v`7EzrOxzVs zn~1kjqMZ}*8EDsu9Gwl3|Hg@&*b+~Gw=offV{8cfCr{I+>lgqro@nMo?g!H*uBJp& zPZJX<$9F)UyZ!hOfAUZi<+uc>^dF1(cp|4jU7=o=yMt2+iP|}7N+(DB=^@lOt+@fA zh6bFGpTHR@Hk(X#5?2n-rf?7?@^ySbiK29=>TnvcLJ*$ff7B(_>SWlx(G6#J|IjV^ z5@!$liG!OWyRzw**@#(e$P708W2)>@>%Fc|gboq)zYs%-KG^pi`z*dW2geD!EDdel z5>Bo_i@xL(3k+WVhbKrj*yusWqF#K4qtP9~Ka0M?1MG6~h9x~82Qbkpm6tk3;XeX< z{}zH>vCnM~Yi&Aio;}vm*;Rmzi{;qOg-`K>=bXuda9^e)6MTeTos~cO$ znoiXkm4+inc4qQ6$pa$}O7^!&kJ6$e9rmK8cE-dPrDW^P@vUT)y{Nv5$+iJFtIE&G z$szO9<`Tx|E3xQ^`b}Q0TBTIcnQ1AC6f!owqO!?ab*z+e&1rX>Xm{(y>6GXz$0VEv zVxcLkwl3e<>U}PPsZ#JnpCzQo(i4(}0ig+gL6RvS?fDgtzy8e!=OYJpbG@qW*?&s&PFJv_%8jp4l&)NsI8GGnz2+WNK`2*4|K2Yh$$*%vEg zqAGZs4&`;XN(S3|FM{Ak&lhvrTyhrBIZjFFI~0B#rnk zZ>ZoWP_;2%n^3cgN@`OzIu~t(UVA!YK z4YHmH&b>?M!+##lo5d}tiJyuRVKohf)ig4JVygsiYF2T$ai61;5+w$C%hv2?G`qy7 zYc3q^CEw}X%<>i|y)ZHTpy^N;D0ogKN*z=CaEZ+A`suIRWGrXCGUK{`NI+bFjx z2O+wICma!rY!*s%sgM#i>oBhv3k)=y#XiF8DLfX=r%^C)-7XKSMgDmA@C>o2I*j$( z#Wn}ATZLAmMOR`i(pkq%wm<5?iS>9Uph+Ts$Iq0g8dq{xI>z7_N)&)!$DfErYoXtG z{u>xxTSbX>WWbLL(zLKb?2d_g;{ZcAz7?OnxOb_ad`Ij-W;rW>u-|EqH{efNrBae! zkXD#O-!&XDet4%%a~n8dtJYQ`Dc6^q%4p@52=!z#Sf}wWx?bb@J4) z>wg#a4fVWxN%HgB>+HCfHtmW`pzGeWY3*%=^^G+io@B3S-|Nl9*On) z2PI~KsYs_RWJJ|{2TKwLwg@fyD!tWGt1aYo#ruyZHf_7^QCENJLSKj0;I7FE)uoXl z|G1z7dlOQG`MFAU9{EUc)X)w+!=y2&==A*bVF2UBmE{GNQYObMIV?<;qDaV#QtM^z zS5DU)>0>&3%i$NFOY04htPtRhLqq^0C0B}n4TQhORLt!Ps8kY}!lb9DgG z(b<_9%5*YWUR;^SD6JZMwWQuuS!|=N=HfytSzeN#SpyIQ{I5cTp@cKj@SBqX`8ggyZ#M z&Ceu$0dKvGwRj7N172o#F&jhF8_C0eTomJj-}SzPa|E581;=sJ6?O^xGV8|*0@)W{ zQWUk(0Clw7k zIITI?C&86h51*i2PhzS?@&wp{sa5Rbia$EVVN>E?N_gBWc?6He~K16`b? zHS*r;cSVohV`n>jDRGEkrzSuZkEc*Jy}i_?we6!+jhaJeB)C;zQ5NLnevG4k*r$-$EFx;R=|)tY^XY^pD^S2K8>3p-7q$N&`~>66fP{Yq7PUtLv3 zY&qllMCLzJC^?g~Jj589{yaxJ?5r)xpr?bOSoo{=M& zBA$O!+YJQvkYQX?bpz`o;Y6&}; z4c+^iFgsP9oh`|zRd&%h0RJRrhd3J3*>OoNUV{0aKQ6!?Utsd%-wt0ADnQw)P=Jk_ zyn9+==tA}>&mY!*8*@>Z3L=cOG%yIsqS(7^JbRmGHCE}YC6(Mnd-}WcU!Q$=dB*uA zr=|%jK$Kfi0mhL|LwL2*5H5Ab?+mZ|iTZ(JJwbIS@_Fp2wQ>wi6eY5cN`geb*>#lb z@K#vC-~JU}0ojgSU(E^0z&WV}m^mWEE7xBlFUc(LF<&@RPY2bTJ$uPgyS1Xv#}eMn z7%M73+uqS>Zn5N5#YLn?%Jwscmh!$vNuAu9nwpg=jjxO|1<@4;QrpAH#GLeu=(fD$ z_EN3d2DuKf;1r&Q6=%cg|5|b&c_xvUq)N-np>y-HRT*SPR&k|*$>M8OAV^Ntq-(M@ zD!s;CT~MN_AkTE$8Y-Cbx}u&_5-W>Ka&qfl5D8U`X3_NgsZZ8 zoQAIB86P?;C|66ly}Y`jui4#RVk@zf2pgJh?cI_`TTZc0g@xs&htQe%nR%J88s>v@ znU&+NR#mJ8Nl{Z}O=X!!b$z3yiEM39BvmujNtW1fNnmo&fgn06P8zLBZL#IrVuu}Z|{(E@t5$ty7R19X=rT$wJBjf3kFMDpEI(g>wrKmHKDqM(sHP04a?^OXIa?4&}si7UP!Fp{G zN0#ilkkz^SvPVQ;N~IqcA~)L1L#>B|HRaXCrDR2wE~6YmWFTUC4tF0r^`XY1C{pN` zzUJ+-(?^&kIO}s_--ipVdTWuvviHM~wp<7`PRexVrtV`4l_7ZWxv-Cm_bKJWewR_mX}er({pnGvmG#l z1srBTI97@OrHB||_*hD?RlO=&;@KZ{w7<>L*iVn`Sz5cDoz9BLRl6E*BrnjA|QXGzE$6~}Tp0wwndOJAJxxR`$Eh_hi4R=2Jh9sN;u=N$cZ#>!4M^{%KuInPN z*2}&7n1)i`>7d;$>&eyI;sS%1u<)dHzLNPhUWb4P=pB+>Ca=ELa=Mp^FXed!M5L`J z_bzY5bHD``KlV_TZvHr^i)oArw+20NP1sfMvD2`GDHtC6*!gIWZJEbT{ty3TS{B~= z^@tC`xEjMp!yQiNYPFYW&HJeQc6CRW1TVf$MG1;BGEG@zXmn0WA`_J;hqw>=ROev% z8M5P8=7C10BDOGKyM(RhEAsLc3lB}g?mz!@4^KO%I2+!_917oFzn)yRF=THrgZtP$ z;uq6AlOxF>zwTSbrUJ-TERSpSFOG!erczf?2?K}g*>Nqg{jmcc(vHNAq*mdv+C%+U zB_H@6VxOVC_Nil|IGK}%!_u+87&i*A&^%zU(*+>pq}L=ZKDaR6420F;cgqTxjCC!>%9@t-RPGhc&;w9Aq)z3~kZYz3U0ugLWc55wkd}P{vwh%M zIAbFxhVG07G4xkdS=8PVZ=6N3%!jXH*NcNyC;J%uHKa#C;L^6Xdu~7En*a-}1{OFS zSYQobb}W$-u!;PK_fYKY;hRof_`EYD2ULkKe)$7ldjdZ%w5W0o+2jV6W}VpCE9OT8 zySE45nvdb&DocA57aJ@l#v4CB4X@q$rP}1~dK}UaxrEy%e58Dok9v;P zICc_1m|_57?g0oxWFL2U^nE7lfQ8Es{y9u`|=K?O;Gmo|#2b&kT0zL2FW^7|KX=J=;WPB}ZS;HSi? z<-EYSH#SZrS^7;FE37 z7t@&Y>4(#OBzuCQ_v|~^-Wy93089J-2P|F9!P5T!0ZUhpz|#Mnis}jgxSbMxJB7MN zIP$1=ia68oF10JpCzJ{GNr_)3i54U$=?s}5T&QU0gbV+X=K@|L@kGK^`y}CuI6~E5 z|Z-X!DI>bwL-ncpc@8>yjA;uh(BSs@#d;7ck(c(_X&5xq{A=^6o9rE!nT(5+i0L zyx~chVPNMuCQ>=(Tsp6)SY;)x7L&P%0hYPgDzU08d1ksOH`}Bj6*;QhTyQK|sURRC zNa{yM#n~E@nfSKMBj+TY1uYg(G}V+;l-X?7vZ9Itp~+Tiu#>&5vLIkqN4ot(L0(Ox zx|777Z)3rO_kDk2H#6}I|1FJ;@D`-y%F{Aw$kfS~lZjcCJ$goe)^N?xtq021z{}ER z0@joPqs=K<&{Erm?&9*f|L?Oo~Cz(B(yv%>%Ss75mO6!6pngI#~P&Ucu4pzHFkB_*FRRK*{%u9 zW}V*5e1vC<7e`0GL2try`E@0Q@1JZ--9ZzTfVotY_0_7}a;8RMO-q!d=BH<7&?#vN z*%4$QU#)V8DGj6oWESLEfY~#oUNa3=9691KI9T)6+Y(GIZSFP<(v+V(8uUOvEhktQs<7sdozF$Agy0cX z0Es(&_KawTNXg8}&r>PY9ywV`PJ3RGTAxX0SJo*T$$`G&icY4lx~id7a^_&uLYlZ) zl$V<%Z+>-PZ9aKIdVmYhY=>LbH)}L|H<#F94#WiiG%H*QlQZOk$oDt zRwHn&pu8{|8H2$9l18mwFWHQzLWZX)-{fIXDnWilu!J~UfazttoU$TyAqhH>LbIBa zuDtX!Pp?&i)+#0`DHYP-AG3iWr=RF$Pd~}OB+}~Y(;LXTE4JTSnY2Qlcd`#KHOcYi zWeJSP3;V!5i*=_9PfGG3h4j0q!d=C*)D&8%Y!T|ba&}4rIwOzg(x-FlvmiOl1y8^e zy0PHzOj-qR%kpJASuc{^HTUeLwM<$nkL7)ip9{h>NLNQMC**7a#iFgIq|VwP4CXJG zvB`UVqA*GDUc$o_7gr1W_*o5Eb(uAwGP&Am`J!L)MQY`ms4!iRlGYtmu9qBWjUUp` z$2Bb}5t9AcL1FRqXt@H&gB}oMG<4^7k)UDv0l)C;=AT#>hB%jTEUueA8h)U57nzcw zR^~urk15XxnFk)`K#P`FU1GPEll2uKU>c@y)AR7%^~tNOAJE)|SBalFg;!yZ>5teM z@!K?7ZxG*1q}H?J#TTrHPhK+bTD3(Q8Ri>z=r)Yh4#&IVS$spEvCG&eg03;1;^dsw#WQhNifKu{lzC2CO5usS!?#;DLg_ zwqjJluW95t9#KTR5#%FgKjYRFk{1P1_)93#G@&d}mYqh%$_j0nOolzLp+`bg*VdF< zna=1wAOC$Rfsu4{VBEUga1bD4VY<(Q>EuDbl$a!jIC=bR#k*!9+rVBB_x1MaYseq% zGkw@G0ipZ$ywQo*T6E=l3#T1jC@^I~5e70ZPov6aME>kzfv8$lQlu#&%|(Vn2>is` zC-L$XYV`%GpwMJ1p+Eh*#=@&iO~H|rh9Uk9cUANX_<;w6`GbC&Xe(KqjS+iLR}olo8-NkB`)AfN=}_-O$8KskVa%k$?Z6MklLR$^8>^s*$vAKu9Uk48f4)2Pn4{DZWx_1V5`!)N*?^&v7IUmQ!waF`tYF=`~ z;rP4c11vd@-9OxNcDb1;5IhkpNq!WR>PoaF^yy=L=3bCeO?O-eo>D#>FTT^uj#2X2 z*Z;Ac{TudUUAL8oU2cK+KEJmDBIQ-B8$aJp+bz6xH{{*7B=1)qxqOY5TY1ZU4lG{{ z$hKE*WltKcj~V+Q=UHCflzxgl^GWx^lY!mdCdMQn(&ec!DgFuicvC_F6dd^6-Ck=c zEdZB*Q{C)P@(9*0UhE*Krbg=`D(|Sa`=W#pHA4p8XaWK#s^y@l9-(e9gdzO9C3{y| z8DK8k_y%JMp1`vxixUiVxH10>9wQ<6A)yg_BG4h1C0M5>GZ@Nhw|? z`Aq&JtEHFS;1l8|ey{md&2jSdU~*6q)5L#Ix&81;a>K@htMj3g=X7KgMwx|KX@t}}W5duMv-ug*mL zVfjbK>0F*+c$&D}R$c^NQdL@bIb(%nTHx=&r7`>K{dY(f|ED}lt$;EP)mU&CD*qDFffuh>kysA2Zx~k5q6HF{zN+z=q^!RWVc&s zv&CX6CQD0HxfZ5CZ@UB~bqK-aLwi3uH`Mm_37RVsC5g+EMx`pVa_JO-O0PB11AL1? zmBkRQOi>XE^$Z$oE9Fsk+QKh63n7LzCB7hvj3Mw4)`;18dok)60Hk{$C#PI(he^y3A*qUOTZYRSduir~GTP^tk| zN;Z55uX&t41smXHC$UgV z$)<<`h1>E?^A_)J*?jf$LHyJ^4AER+zwz$P6sSQa*cmb-A;4$`dF*NY%>^ec8NkmB zIO8+-#C~PoXNcz$szBK(17)YHUZ9hM5;2SGLt37w+aS{u;>8EEz4xbCK!ZNBT>%YEfb1wRT$Yj!5{x2?#ZX?{#SobR>f!BFrYE2#lc*`+;1L{0 zVCk|}KIRBaz!4Awc-f8Gqj9pqLAOT(cpc>Y8NJ6%R%>}WV;raaPuJ0|!}%26au@y= z9Vf&?XZjD@vTf-ZX_=|Al*EK!Lflf75EYve8x@t()YMYh096je3wCXv|N4bJcR#vt z;qHUoLkk&VQ}p0VWRy>KG5~~rrk~#bnk0h5eA9N3;l8$kSSGb8|Im4;xuDHU&_`vb zav`b8T&@Ce={|*X1(yuQ?tLIJUPNIDmtXEq>GtZwgSTmQG-N&EmGBG!vP*+p>f`(S zDuUnGx$uq6UHgab4`7$eP|JkV+r=t^a#kx0iSCD0JfcBuFsd5Vt=cXRZIhPs#Rl+( z@&~f&58MJy;LXqs19%POQm&M_d7Z%D!7<-%!r9c6G^j%3@Nf)?wV)RxQ$lnNJ0XQN zHas<&^owa}JyP9q2PDzp>x`ZwzQ1#^zmu%4$biWyF*k~N{O?RklR(PoULSsnDZhd) zFDFH^`zYXxp9G2fp$RN`jgx<;#p?9gC$gHi+swYphHJ`IF@r6)}>eN9{ zo;t=ssh;RQl?()qja*9Rx3eh6k%vTOsBiIha+i-R$e-Eop9BTs=ExqxGlAY{@WGW6 zBgc66jgdntccs4o2Jh6oC6#)n0H3;(1H1tKI`#mR>FWI$ue!7BL%j7q!H&7^ee?YX zcg`Q8iEsgA(ToagxC$*__2I=gir_sdwV66;l3WLkN$Aeu{b%w1b570gaqv-RM=4CI zP}ACbLRSOi zV7{;)qOeVIf$P$k+T4*O04U6dJs@W~s~cbL{!WJ9?BJ4-UpN#fb36YLk=>2A)F<@f z8Qp{mQe!gn^Kzl&pzctT)Ui$m%rj9elZ9s|Xz461QBhFcP?v6xDrAUu^0;>iK0m}tz1=E2=fR!NR zq=sz+m;$T@tQ^j1pbU2g?AyQ+!4kmo;XHSp2`mMy608iY4lEt46RZuc>xOLySQnTU ztOu+gtQYR*C~ObI)(+c2u#;fN;F?pgJptAXW&k?}HUytL58Dbb3)p3_OYqsNuzefs z3RnTyHL&Yo@4)A8!S)7hn_&9^*j=#OaLq@s{Sd4QtO)EO*gg2%C$Oyr`xKr{kLI94 z*q%VHNDt@Cuzv;ijj&$~`*#t6PQ(7ku>U0zqYJS82XaOi;oN5kjd4P5P^uh_dCqAH z%7k;!uFgx)(U-WLE-dB48L>$Doq$0456 z3gj%1qMfJ_&c8ioxf2>2=?ss7;G<|8LI)A|w7(;#x6zoTXw1*Z*%>*%j+~Q`b3Ssm zAm?7>Jb;|vMb2L%=U^_8?IR z5)~nl4T+8+(K|?V7l|Gq(HBVcJrZH`974}A=(*|Wxw+`MCFr?>=(!N|ToZb(7d>|Z zJ$Dv~`A9q;iNlaM28mOUI0uRKNIZbVr_l4Sq31tF&;NqPk458Wpz&+a_;55n28~Zd z<5SRh1sbnL;~UWUQ)v7LX#5YzU4-1{BllCt{TJlnf;_~?V>a?wj68NCk9y?Mf;_Gu zkMEI0f+QP}Bo#>>BFV3ato3!UQy76`HUKP1ubl?@Xu=&d;US^~ zh4avEMKdL6<|H(87n*58GjF4r575j$I{S&P> zp!GkZ4fD~4MQB4i@|=J??P%jHv@s8D{0MDIM4LWCn|?=|NwoO@+MI+om!Qp;(Ux&& z%L=q51#KxuTh61cW6@S0v^5-Utw&os(AH~c>ut34TeS5zw9Nx;Q=o14(RMeqJp^rk zAMJP*?Fd3Uj-ef=(2kGM&c$eF3fftPc7B3(d7xc7w0kbvy&vt4N4srk4~6#3M0*yZ zJ)6*;187ee+Ea`6^rJmD(cbZB?@F|HGuoSm_Wp#tqLG&jd1WK7V&ruMd5=flYmoO= zHB8szgi+BXI5Q=olcAYXUn>xq1KBVPsb zy?}gwLi;_@{&=*%0`0$q_Wy+ZCLq6!$S(x>JwOM1(Sa0n;1u#tM+aX<2alnEH7K9~ z1xirhEEKp21%{!(0uA#+-A`SrBs$C>Q{hARt*l7(mH6OO%|E zq<|94IcLQjc8zOXtJ!9E@7Lg--ShwF-g6&)n3?XXud2GMtG`t58%N?DN&FL%uz)1^ zkc2BFaU@AxLlTdYJ>QT$UCEv(lGKwVog+yfNwN+}UPzLck>n7PyoV$gkmT1SWdupd zCMg9Zm)&Gf4Vkl5R%Q9ZC9bk{(RbuaLci$zDn_WF$jHGB%NnEhHn9WE7E% z-$kV+Q-@@#N#+oeIf-O0Bbl2>raj5jlFS^Ed5&Z@k<3>lt3SzFLbA+A)((;tNV3k5 ztn(zh1Ig|}vip+kF(i8@$v#T5zmS~XB*&cOY$rKBBPf{~=a zffSUHf@`F35Gh9;CRL zlq@AB{-h+Hl-wt!x}=7xKlk!4Rp&%8zNku)W>`N*GNtK*brIG#1$^Ke$U>Z3PPpYM)dIYI9A=TSRbtS33 zM{0(UnvtYt7O62JHET$XHL1~(nlw^VNor1$nkG{7p49v*>bkY@TTKqKn?z z>Y_+p0jaAXb#f?(r8B-Pm#tZa(E3ne2E-cLynY_ zqbtc#GjjA#a;zgc=0=WvCdW<4@lE9Tdvd~!oLo#!T9T8A@ zj^wl>IlZ5p=|Ijjkh2ElY&bdln4B9=&Rrtsmy`3i$puq#p^03Sk&Dsf;tO)Igtxq6CRy+W>8k!!Z(nj^WE zM6Mkt*Ef>u>Ey=uB!WCSN}lSHr<2LkNb*ddJWD6f^2oCz zw^A}@`}70NZtjLcj@F^K6%$b-d!W_9*}pxk@t(p z`)u;Qg?yMwKDdw%7s!VXPkKh zCZA@LPpio%Yx2pRdxwj_aLA9lFtLl=Ue3S3-YTW`Sk?(vWk4!M7|s# zUw$VvlF%=N-$nSJNb?lZ97BFHAitd?!gM0sCoTTucOCM(n*9C~`C}0I!;t)8LH&-l7%3N z1F00G3XqNgsSQZeKzbCU6l9%2wg_ZZAZq~GDUdw?T?y!R1>I?&yApI=K(`EZ&x7t$ zXs-+H2SEEx(0&)RuYvYW(4GR@9oYH6dIDPx?61(_d+0C@IygXwMCi~69iBl)4mwVT zj(+e>d-!Gte6t6>IRW2L&>ISRUZ9r;dKW?OF?9L{I`xB2%b?R%=;RBXa-q{D`1Tw4 zwhw$e8opfy-)@F)BjDR4`1TWgw+z0EgYW(X{lTDb1^Nk~e;f1#;BAU_A4`$A_U=PK4!X{TuI|va0J@%mt~@9dpqK)RHK2$D#ePsc0p<6goC`{C zP*#HSE&ON-KU%_%O`z%rDlbsggX%h{K7;B{PF z2AVsdc?;dzLAQa>Z3=WVgl@Z`TOoA24c$9J_X*H_9d!4G?y1oI6!ho?J=Q~yV(3Yr zXE^lIhhDv)*KFuz2E8(&*D2`r7J7Yw-fHMQ9eRgC?`zO!81ylKK3eFL1AXp8-|wLB zBIxT5eUC!lX6QE!`k6q#Q0SKc{Ys(VJ?Ib6e+Km52K^JDe=YPs1^r*cfHg269R~aY z14qEXnJ~}>2Ij!PhcM_{7&I9M8N(n47!(hKs$tN581x$qR>R=QFxUbHXT#uEFr*s{ z*#tu(VMr1T$$}xLV8~?{Duba0Ff<;9{t3hS!LSuDY!?hGf?>bF@V+p71Pq@D!wq2g zVi+C`!!N^#Auz%LMwG*dCor-dj2sRl=fg+~7#Rp7pTa09jG7CWy*k<+MmNHkZZPIF zjCF*up)j@x#`T18BVb%1jH`ul&td%cFuos*p8(@mz<5g-zYE4E!uVPke-|cv%0{n zu`p{D%<_X-r7-I=%;sSB2$+2mX1@Z14qz}947Pzm3>egc0S|`5z_1YvAA#W?FsB>L znF4b*fYEngbOMYXfYBE)`V;2r!rbp*t`g>sgt_xz?mC#e4d%MQTrJE^gSmAuw+ZG+ zU|uhnHwWfzfq5Y??bERt?LZ!Ez3kpN18Buwo#r$b}WhVZ{Sj(E=+quyPKpTn8(+!OESmG7MJM zz{-=b@(!&08CEf{YAmdp2CHVnsztCW2v%KyRZn0Qh1GIcJrY*0gViChdM~VQhBaMb z%`8}B4QuRS%>h{R8yNQl<7r^*3&sgxd=!jdz}habb}+1+0c$tHT3=ZE1=i`ox*4#} z0oDb;xVDcGE$AIY!FkJ(twqP0srkP+` z0j5=8S`DVPU|I*JjbM5dOizI6DKI??rWe5UGMHWg)2m>54NR|t=?yTw3#JcYy$-Bb z!1^Jueg>@H1nYfaeKM>shV=(w{aM)14>rt)4cV~aC2X7t8=t@?9oVFRP5ofgMA)1q8z6C1{ zSPcZLV6fT?R+V7=9as+qYZI_`1nV%c&H(F1u)YY^55a~5o84fO1ltH~bAWB7u<5DV3)t=e4#U7P2%Pf3={-27flDs9x`EpuaBF}a-C>6}xOV_| zTkz-r9v8vW3wBCjr#0-P;FSU1-+=dF&_;t#XYg?W-}T@p0Y69Zdkwp`!!8%tErH!D zVD}o>Z34SD!S2nl`x*GZfPg*_un__RAfOZi-audvgp7i~cM#Mcg3=(U1%h`%a0~?J zL2v^E--i$uLZ(898HD6QC_tzNLWe=@|ezKzJVr-v!}C5PlrO z-$29^h^U8%YY=e@B0fRnRES&vkxL+Q1w>;pcEbQ3P`m<)&7pWF6qiBqeJGg)B{!h71C$m) z>1`H8oIc0JWFk;7&Nm!=V^B^aSdLKwUM|Plx(_P|rg{ z2WZ#?4Tqpn0*%(tNa64>I2;UzAHWfFIMM`1jo@fG9An{FAsp`j$2Y_AmvCYvoHzw1 zd&9{UaIywYO@~v@;j{`)o5LA>I5Q8jLN6!MR>=ZXKN40q1q$ye*v1 zfb*B&LJzp$1{WgXLJ3^#3>V|!(ki$-9xgwIE8F496Sx`-*ZRS=LvZafTwe>eJ@4&5|aO*7G9tF2^;Pwl+{RQrHggZUq&K$U70(W-8omjY24R#-Ag?kL#>kju;!@Y2L91Bl&!80%TX&C%; z5`MOV7aib5IJ_JJFXP}91FvG?)irp%3SL*h8&i1m0^Xj4U!vii0^UW!`vLGi3qF{_ zhZgvF2|g`=&r$1(c;jQ$Bm{}sbcVz|A`_sf{?-I(uFnC~w$^3{yIkm;<;bneb{p3HQ%WIAUs zotu~+^qC)wm>9uo0RFci|H1`bPH#?y=J<9$8_(^bXPLnhcVqpGu^|O9)p=4 zu}qIWOpi3CM;_DTI@8mT>DkEiyvy_=OfMGdnq`$wjCAEx&(ruSN= zcPP_4lIi`5>HUf6-NN)4#`Fnf`eZSEl}z76rf(+Gx0vbsl<7Bs={J(;SHtwX!SwIK z^mk_Z`!fUZe=jX7=wr0JI0_pV=#s>n8z4wU<{lYgJ8xW zoiV6l49+kH4;X__jG-=LsA3F9Fou&DLj%TeF=J@V7@9MNI~c=o#xRR9tYHi`)o<_u@%7%+3zGIQ*iIlGxTNz9ym%$(!QoI5rl_58~Qz`wofbwb+lfz1nB z0;NsA|0u`3n9+2K5G`quBFKyQO%Q)kcN*P#PSO%76V}m2xiE!BN$3lNo-5H4jy2C# zAuCOaihH!Ig}=)RtB^hs&OWYutn-YY!jERDeyBVb0oRJ@_+&-0Z_4&$AiO@k>fIqfKZSluIsqae38>ySn z9?R@nC3)R?w6wJZZQokH?Z+!=Od}St>@2X-G}<0>&ZK%qzEyl#d5G(0%!9dfq3q8; zf6|hDZhw+qVnXY4Eh+nx%-52;^WwO=Y1G|Uekh_YxwJsHvLwCXpyJEm1C#UATy3`m zYE$D~V7b?{Yg}k}aa3+>URQB*e$C+!o01XH>d40uFHc0f)%Z`8ObQ&faG+wyEt6Z; zYVP1PFClnoj7gbeeOKS$04u+3yX-_9B5W+A&is9VI$)$EE-f@7MuSDuXtTW0rFQ!i zg~7_LO9Ir~ooPGhW4T$HanT9IvGV<=)uB>7+TW`Xu?R1yeh~35-nHUi{Q2MTFTR3b zywmoeaZE4ju8q3;@k~h?#;$qi-uwwWbIT+09 zp)1U#edO^jHv~97O?Qs5!So*`~XpN^ZxVzFjT0QC^e=^V9_yQJ6xcT}o{WQCB7khN;- zE$Yl2658Rz3&hvKn*I4p7l9g`)uG1xIew)ofSM!Nmn*MO(KzbD>IvrpKLh=tLg&K= zxvi65*C60+S3ZYJ!|BDjdwo|^d4@lcc4SC zgii&{s-T_~`iPB*c=s0hbg0TGkeaMP(gdtoaYw94`^mYoDM7BgSJN0aC6@lCIuV5P zQH0;fjE`-D--wnLhhC1XMfeR*gx?s8@Ei84Mu_kmS|5dH8~g@OsGZ8FnPutKrwGqw z>O&dUh}Tio^53ZVUUU^}l;FZ=JdAVIKTChdmE|p;K>-2h-Qy(qOCQUQRT*jj!f46k ze_>D2kF0PmvMrGgka$(+G;L{Mg@$(jcBRho?b!9#=|iaF6*>t1eo{UjijXukWfmWK0p`_8jYY@vs$j)WqBfuD5ir-t*YpmLOQiT|6~(YT&I&S z(b;#ohg!brhCDhN*97$`8t)mo(#zjblH+5UVx{aZaEN8xQ^PfC%`(QmD?O5bqZ$*Y zBv{GMVV9Gq!Xw%tpW0qQ@Es{#Bn+iJ1Z%-rSRhQtPfN^NoP?c~oGPt7rS?jdY*?|t zX^c{cpGs}$0L&kp^pOt2J@m8sA`bq9dFy%y`G&=5c2a+&7Fq3OqsB&O*cdO}s+{jx zedtWexrPQ!VZnje6eYI4FW?HPC)8NMiA6b2zIZS~UEzY|*$3ynPXPYe!f#aRy~PIZC($FD5jgHE&R{o|E3Q;=PPpsY zrWdQ{K@lK}QW~J5i_Wlmbn`kECFfzi`~&nrD>kX;8_x6Z%5_wN&D6IQVH1Cb)~PPj0V+L*bF5x$ zY7vW1fNL8TB=)P!RwZ%3L&eym(d8<=cV8)!@FMbhtR6p(4pQmW(_mFYC9C(-OPotn zgys3ow+r+sbIFiebB`z^ESKYaw$7Jwj|6qRZ_*P5Pi5TYCvizs6{jwc;bCih#ricb zbcJ|Yq;slyq1;$X-GBFz)ZuXySkQbsUw$>E2#maC`+9ym3e@nWbS%8a&8^g+dC^?eni1?= zmV4hHXa7)a_H_u+qMsr@sqj&^1_&*vZPXAEUc7>mA2#OO8gAPPcN*KmCD~>Ij5y8SM@IfYPuDVw4qTT zG9LY-J1Zp6#jIT_)l+e{D_HKpE4->jsju-a;IFb&yc7Afk&U6dRC+djSp*~p!ZIH^1-l%KT}GA3K9bdoGEjX5fK5RF zSeuC~mog4#J|e!R48!f~A|Z^Jp_tB3;OuW=wOXup6i2(PfYncLp2Dq8MufNw6}LK1 zr8ku>XC3HBY)r;a#=p_R)-3&)>v`8_U%}gNz}LzBKORgekB^E9N!T5wJKP9~FC#Qj zh^)89amDmqYG2>bT`_()d~?6?G~osnk#hnKW6nFx8k(cS#MVVFhUbU`$yd0 zRB4#kH9~eVZGV2iGhIF5234u<)gf4i;3@xYjPW01WY~k|DOvhIU73x2;4Z&fB9H8~ z&fP-0dv}O;)NbA97b>YFK(m|9m(*t+xe=|7jSY_Wi zW7K$|lS1fnWhB+nss*MT<5@?;tM`^4a^2fSMBBFVwNM7|I?{^Z65CwU#LzBT50J?y z*?LvNYUM|nMN5c$#oo*0a%`jKFto4RtuBpLXZ)V|*U9`~vyyi2WCE9VNc($@o^PVw z=HcM(qHy2iot~ARkgeuC6QcK&tGT+Dq4VD;uN)~qmZNcvmsr@X_On)Up0gs5R!+HF zy04__R4Dykm+DI6laN_3OBNA?tlok`s%JyLKSYlnfR$`u_NM!%QWR_)0v*EBAv zs$N_#$t_K)s!<&Btgz&T|t8V@$%Jp$T+v% zVvqEMyMjscpK$Mx4)QpRmai55I3#WUvt8?_-dbT=WwURke*N+7m+8FA+mCb4=y&`; z`6e67wF?ncg6b`}XQk#|G`Qs3tW&JDuw1u%%i(%k_0Ayo8OZGAlzYJJvhv;8TNlc_ z%dJZ^-1Ys1#fMHSkQY$z%!Fd~>brdg0!5 z9MK^D5?jw-?a6+~EP9hqqcYzWLP_DfGxTMl4v$J9>g#g1B#DRC&T_TVaO?5wZyU2K zk7wGMq-fG3cHWWLh9u2aj+{Mn?4*mcpB+6=T$qjvtQS8k%Cu)57IP=-!sN_56B#(TVyrHcq8kj@d7>C}h!gh599hbjHEwN2#iiYdkFW zLn>WFkYGv@8_-&=E%JKcliaY-Gd~%f^nmS!o8Krw<;_> zwMu+lgh`TRxPihiRJ}7y;ujhaov64bi_F6<;~MVa;X@N8wkcV=)0GJcVUY=%fE15F zk4SA=*R}U0*m_}HZgz!YdFR!3ySAyVA4*e`qO(hq-4RPyQ1Cg`aFP}ymK;LvCB~Pt zNH`JL#t$4W5>5yy{FFS}GY?9NY1d+%5H*v)pF~S!hHwGUimIyKMTEMd3^NN(3f(int_n zX7jS4s7P44P^TKxgZz)K1+Mx>ZW=hdgFxe~{CiM`gx(@VKMB=eRc*^=1RRtoOie2;aj6`RT(lht}x1@C=U#m$YS z`lznnt4IA~5UQ&7i^HZVg)U1*O%fFM(S}Tl2@Q+Y2v_hqn-+xl#=dOGx$u&b^KCEs z2Q0r`b{louka>Yy)thF?b5r6oGgEijsDF2q+3eWmgfJ0_f&!s5n7~AJ?hi-Q+V*uDJ2C z=G>)=Th8?#y=v7MH4+oFlh+q-oH%p6hy9}MC+m)69jZr4cX4tziIdw5X?UAiDvv4U zi_?J`oS~^_b@=WvbR|ni@z3Qg>woXL-;XzK?kN#|qp>PFsYO>#e?Wfk3F7_)`WP$C zIYSR$)8Ub9=qyWh`RQgV;Sm-^_Nus2nv_QsS(LcuBUbYQoD($oEcc1;9Ve$m>KwE^ zU|TDzQzEiDwGrIp1m)x?3Z&u4l@*~0j|zbMzOusbuJ!xA zvYRJFrVX?>w+Kt+OE=b^KbW3hS*AIEGVbI7MXfB_E8GwHQg*4=%N&ut(n0O(?&IO) zuDi~1@%l-MVP_Y8xPE$ndX_po!sDV>sKj*pCSwG_e}9#~im&^>Ehu3iU*V?u`?nci z^UaXrII4NP8c~q4qg!$hKK`tLaAcMzk7wMRe07JW7{{=G;iO5>cZ*v)r43 zsw=2Wd=+%>-w>$Yhyw5Z8v@mvufzzgB5GbkYwm4Dro*-OrrzQ{Vu=q};^QzZ zjc;k)p6nWW6z~5qdW`K&Z?bx59QWgU%oUAfbH2w=cJd5t9yiuflV{v76IHAE_F~gt zu<2h0i6>Eh$x|nkZ~lyHo~Yu!Aco12o~)2%uEM?ioIM)LWvkH=G-A{FIS5w&zmGrU z=L~HvPv;yCF+$4{s}y4u8zc5A;?-koPS~2wptds7SNf4JeVZa)w%OrW&dG@7+{e(L zd$L=6s?eCBV_f&TQe9X5lIJuKF*i%7xxD9XK`JsBQH*3xR&&45K1Nh$_%rp6)Hmmy zi@ML+nztouYg$(~X9@Qp%RR?!uXD0Tmmae+tSMYCGbvn~v9fEN!}f^n%JIUFON8kf zYAei^&sy3*IQLUL;f)Zu;3GZ zrwVnV&Y~2&C*@Cf;ynp|%3bY^^8raXXZBzb-O1Ephz5JYYg{*e}y%3s9P5;F$AgK6Tb5;LO&%t8;)=(BpP!Y=)k?IrB zxv&MD3km34$V2Bs!Z6iX1mDJKkc`tHVNh#X*(-EK*x(55nz$6L=#J2e{s^t;kkE=A z3GFZ>q9MXg-lb=&qk$GtKl%R$)tEQy@s_QiLW78Vk9W`JHRnagTFXVKr92U8N%z;+ zwEyREzYH)iHMVingceIEK~GB~pUxUgRkXy*xQ6M$GetyTFLze-!~E3la7JBzsj~Wl zrO;=T!_e;TmSI(v8a)R~mdaiM?SiAwF=0Q^9zDf3=hN!1F3vK3<#6!<{-qk9Y#yK6 z&-mQ(!`LtM*>LtPy~v8I$m!$HUGa1ap8gF_w+v$ij$g7#^;WQ}rZcm5iG%4 z(C!!P#YN{XzeE@;=k8&{`_qf|m20@W*#$g$mF{4d?=^R2rCeRKQ=&(TukMD;n@v}L zm3{ZCY$dNJZyu)ldw;#2==eQI$NV>ar8mD_l`1|qVtMouTdR7vVt(R!R`wMARK9)g-h%Rxfa--5!MXs3Cjx6SCCP{-5ZW1g?<(wz-d-SF_w%kt?OJl`BQf zHB69#i=Sf z*;^TDP&Y$58svs87%sjPeyN7mH-^qcRXI%^&SK%3Ml5W?4^>eY{#}F$3!TBa`>$fc z628MGQR#d53Copy`ZtxYp@hFPS(J+xx8&*Z5Br~?U?j)9-JOjVoGR$tlgp0LJzu^4 zr%&NUcq2IRda4+Si>oWGVe1;N-Hg<550ZnEaQ8owt>O4)Aw4qox}lX(fNqd3vNBt; zRZ= z2|~`k#69szUH_tN74_UZ{O;xA7|tC2d(aGZ!&@vy9)!`&v#eFt^$5C&%is}~yRkTp zT}po!*S(vIaXQ{ujPr5fOSZHTr{ldqRrzD91g@5RLGw?092W-dG1SKhm7yj^EShIW zh_X%`|0lg2cXKatmY2&f+ZQ<{sSARN1F8a$M~u6>H=V_EndqwCfH%B)ST+8%PY{ol zvfQmNQEB2ufyHJ2Vc!?b-6x(kQ9GVABX0iP*AHKF< z|Dg=|^|+gnwJdixQfw|#Y;LjGTocLwg11HORv(Y8D>$WSbS$w@ z>tT_KXcUEJkZmh;m?H`Ao+Mj}*x-khmbz?Pl>P8B7>elKs zb}V(3mnLT?r}$)rTQWCS zU_AOiMwKvF_M5fp{~B(fQr;C+?^UQs->62SOH2Br{)guyACG=YU*QM0eHvZPACPmF z(?ZL_OCs`u@mAVQLvB`z-FBK5u`S#xbc-%mF>Rsc8EL3Uzj2d+mFzJRR|r( zd1?_oa66(0ZqUWz^UcpmJwiO(6~Yl2#rOI_Erw&LOis~ilkw2bv^4KD<^G(4Q}G(-D9J`|FCSNBYkxlT44O`~ zYIs{i-&KpvxS>v4gUz@Zu^0+HCQpbfXOWq8dmA%rxF5nQiDNm}sGpd3_VLBM|1cVE zJvE{&5v>~Z^W)ErROhldPZV2+Vm*!6)%-}gqqk&CV$GVfO3v%Z@w&(H8pj0565oy1 z>(KkX*1YU68c2eV;9Nn?T$;NMQU#x?dCcAWS#WM!D&1T>w<)(c=N8q~U%81$d%=+* z2m}(|_p}j$S?_Mt!nYOyIORUV7uKT)H3R!Ie`8H4sr&9+$3~l0myCOKtOB+NA zM@*Y=LD9BfMPI!crHT4W^seJU2X7(K7wyIxu^7!lTKg61`PQ2j87o#)*c?%FEpg3f zF`|Z-=KUxAH=hRlr`yb}+eM#EZoS(7!{X38j^O+VGyPdb9UpV0{P0)wDl44n+&T#E zCc^g8F|3#sQ;K2RNd5t<--Ml~h98DE;Uwc1&iUb2jK%euZ4_Ls#J4*wJ}JGr$w(*h!(w0eYNOy3jKY?MpaBI z4QFZliqpu7nZmZQVh%*B=m1(sZTM&$a%6K`qFG_Ruzh1|z5(4{CqE!9C@Cr`&-YC4 zV&P%!wt2f%wq=@miic~LeRieW3O4JC=IK+^JVgs<8w%Ho(zR%Otzgp0W zO=z(VTY77}N;GV@T+@GAy`{A(nzq}}wB+d0+Cji%fstZgqP(SUWdx)Hn-l* zYV^tRGew6SW-oOZE?V8F^!^pgN7tKXIC=p`vL%gJ@KT`ar`Dp~=&}gWsy`{JzJC?& zPJ>aeYIPnWAie>O6iZMG*KAjj*eUd>Xzp`w=qS4N11`buRPRC&t$tnwBqVUwk%vqD2O!a_j@ zsW0XTb7)6YxE2R%Le7O%skzc_W%6EqAD|E4>f!k}no??B=@@M@LV1N5^5Jg3IbIJ;)M&vJ{cn|3T$E*n)t`)g>1G(I{i{-MPyq07<*)=M^N z4%%%#&_^lg^qL|JLn~D1bZZFZUX>R&l&V*koU*#7ymq>*v0U@JjE<0BE`Rx``qnz+ zE$D7ww{F;$*HlMMpViB`>Q5;*VltKcYMiF|2KeJ!?J_376w@vLZIx=xZ@5Z-9?D)8 z*Q?;ut&E|aDsH^y8V{+shZQQW5tC*fUQ|W@-VIl-S&vx#Cr!9+ZSrCN#XZOSs2XVt z%gx@<(tcxW>W%r+|Bok56xRC4J!wLZ56UytBAMMh@p;SAri;%%^4OVaUBwfTbn18& z=JQlG=i*wd#3T_)SR}}yWB4honCKJJoQ8gGC3=JO@eFqlPYp%?J=zLyY)vdSY%xpU z*`++UD7&n@WJ|F_h3(!wT|`fzgJ6k~pNrM}b=RzF{VVrqr!$!^mc(&yNg%odwY$;B zppDoUR}xzwK45Q2D5h(YV4)}Pi;W3pSogHZ^{jv7>W4Es?{dG@zn8m@m2fSt$BynQ zSDFvOlq`;=v)Swm67Dz3B;;PN$1oPsHK_T)Y#RZC*n9itfy-Nm)oT2<4eb-(YrHB} zSdDGmDPq0PaChn6p>h6 zZH2DX6P5{^QP4TeV97ayeup_e@>XIQ4fn=7+eYgY>=4nF{)&}F${98Hz#F4r|BuwE z92$xJT}G#}bj>yWS53cGb8f+?&!GpyEfQ0MP_fPEp^C+K&ix9y{g^&=#niL+^uC;K#|1rHX&DM_W6AMVDLALR@bbfox0q^+j(Ut{ zAp7-~BisS>(%(dd;=rV@p9@(*ht{J;T#6d;0Z}6^{kN#Yfxn^-QG7p)v7xL_qJ=NY zszX`#P*xqvYW?&M!bq97)={;PR{j;=4U%fLUsw$8irzf^YVqZ=p@~Zyi8>8B=h9Gz zFGbf}+Avi*zZ6$Tlz&!q3So@d8rXChdc<*zq;gxOl9WL_XMbe6k zeA{LE4{lE``68c;YkmT*`J;t-)i{R=SUUUy{ox4rfX@&((Un(~R#;M|d0$ibiFQ@c z0W$6v9MA*2)stjGJ9oq&oh(cWp_7lODRQ~Bo^adRdkQ_Wh}4V9MZ{dmEbFy%Rw?k< z@`~+8)NN^q!i470Xzwn=Az~Z=^T;q|Y$c|QmxsDdvr1gxjQ_6-+{!^LW-+?) zDb^~{w~Fp$SN%MGC3o9|r76@(to+rl*RWM}^OZiG`O^7u{7deI53YN{2;QP6iy4q~ zbaON=x?)-y?bs}p|9|<6e+oImmmrhx+fVv5`V)7WevhecRKs$ogFGe$*eHeLQfI!H z_4HBrAn2o?FPlJ7Z-{-Tj0{I6Moo*PrJPT|6yA%?)@aDckX@Dj@IjxB`@o%VC0I>C zzPt1O>k!sb*dTRv2@UhqpgA7u73%NHzhm*L7XOn5FO}uayQ}i}y6)nDUNrxJtCuMA z@nKBP>%bjv6&Z^nk4LGv?2oL-){1qGyJI7b{JQa|WMguq#i>@ql}_R3$#YuS=AtgE zR*7^s)QJ@)%eb1aer~r`KewJeuTkACp?yTNM9jTxpedNf*IOD|7giNs+eQsw8?ioY zjqVJ~8&dBOZ*K+X^&H(ryQ30<;*{|T2`O>ux(@lZjt7(1s(Pay4OqLuYqO<> z%0I|@w;0K3f~>M4JFQB2`p6pLJK@{Svj^F1&dGK~9`tX5@@-4#(F*EQYM-kgdG+}{ z>UPWaIp<0u`DnRolKbA|w748Kw~xdGMFmHzgJOcBV-@>K^Y$l2?%bws36^aO@!YJo zkp=_>1ZXhe=pqZb99C0v=T65SZ@=84aMbph@Ga7BxRS=4%KD> z%QVzqn1zJiQmjbj1%sCwn2#6wZL<%Ju+i`r+J$H4gcd5X>aA-|{Y+d8gzq(zqa8Pidf^%ser4r_7mQoiwU3#d@ zV??$lC)|s6leDaoa<)#gK#|C}0KN9bQU05;^Y<_%@P(9WN=DBRWYf&M+uMalZqw)) z`;_<~sc$viTwz(Ff8!>#zRi`=rOmVC6P5+|t;LFA4w3*-R#7-Yo9E zrfp?KV_3ZMbmQ#af^_YeK{hUt;ti|%Yw&iicM#XIb?{zqkQJS4Xz3!eZX13;aIiRh zFLC%rnq{=WUb=1jdZ)F%x|XuCU4_ZgX|_ z`5-yx*)mOL9_$h1h-rf9IG{aAF$rBA3JSHYlkQpTfbNbmHggvTbir9>V!px4Y8SRv ztve_U>oP?EO83<@j1v}YyjRHd27>rx0QR z)BDjug7wf*wiD-QLcPPB!+oOzyWF{YD(8igaxVmxFbwTC`SkI_XY51vZ|`7a|91b% z{{4Cl)kB3_3`Fd?ik?t@WCB;yJh<6IzID##$>^La-ea~fdA3rFN!-JjM98j)ossI8 zvZMLR%-o1V4Of%kmu08cvuKTc__-duibe%@n_tJ9%J(Mj*}KOt!&1ZLn=i1R<*4CK zM>;!%J76HB4Xr*g6xlp8?+1nZMrtFxBD!YArKIPir1>Uex_oQ)M2Psz@wZFt^7O;5 zQt3Uu<4>IJbv{bYrNsot1jeX?VuNC06bI^3$_k=9ZPYCRGV7f?EpT23AV0WaNjwGsLb!mG7HV`&sT&(6cXV-G=MHfn>_Uccn@J&8z1y9$>9J{akJ z!|SQ_En!A0y|4b7zvz7nTbF@LU!SS{4{1^pdVaRzLsb@yP`sG`6B-(>LG?!#GCSB* zEo_sTZjOwx(d-lk=LAZg<&-5KQqoC+%POg0BuLEh)^vJ1mxAVUW!RPKE0}ndB?}J@ z4GhIG*lLrCG!to#oO2OQ%64ya4BW2lKDCOQ|1n*-0Q;B}bUAn0;_BJLYC5FkL6;g7JDipN+F8%`b#C!5S1#t>+Q0muMS;eoOuj8! zvb@^zdV_+Fy_em9>7Ot53(N#TI@5TLqb9~fqL&}?)yM^2?=fyyz}(q3_B$jZ>vxis zg!+ZHzEJ&xcd8GoXpXcr<)6sL=(M~Ub}8ogC>9wNEOF11)CFI`zJB<^L{1{APCy2= zXva{2aYxPrfi;PYT&xKUl!W<)`uHk*k>tQvjSM8wmwydEgwtI@U$HyAOX%?mnoy!& z{@C~`_nscYU?BIRhag)iNQU1wE6{4V_l9m$mk2~5^rk;reQc`9i9M!Hp}n?+qf5wf zths@5vQahdc)sA~7tI?frne`??~c`K3{f=^WVVm$ADpgg`XzJT#8gdTq#Nxi;oe8C zcFvxq)N>Gw3whrXjOpRCM!#vIbMnzAU_zVFMv|7qd)h{7qHGYwKP(_hnTb3il7Pa1 z!V*PsWJP#p8|1OG_{;?aH!CqjOf8W!D<(^g+YN7~t~SWfXsS^VIa_y9!9{vt1uXvT5d3TVm z(CAGNJj?h871S?Z-;-Y^q~5}dbXT0^FP1ErBlL6A*amnyZc%QL?lzY^ka`Oei7?kK zL8u<9bcs$&*riF_?Gxj!M4B?s9jO+_Xvb7)#`mnzgr!J+l}1)bdPw(B9m%grc^Rq7 ztk|s{;TpGyB+O1tPe@6}OP{~JVj`}U7&2;GDwVAfqvk2%VmWuqR4-gC6E`f{Ggrxn zvl_lPa*yn%uT)E>DJZ%C3)`YfnC|a_yCbs`GjbwyL&L&D!XsmXqra}Db!}_uW5M-6 z^MO2|%MYEtj%2QX(^VN4!4?QudvFrJaV<<+_`k`J3G#(F{TqIDNRg^tx{sGRak3=SWBHM zE!i97xhu%eA2X2FwEQHG+ZeLVS>fVuY`4QFIyZUm<$@X<`#kT1Tk?5wkeU`I$LT-4 zNsVvP_4_#2r~D~-i#I=r&CFLG%W$8l5yr^4eM3WQR(?`8J-kEb(T=uP4D5Hh?XW5E zPYBlJ`xn^{RPIw0Iv&AHNk=y2Wb zeUyJCHu?M}clo*4n7wRPu3c@-zKrS$HL^asZuj)tuC(7>a7M!~N2bnyNVwc8!3WLf zCndB%+*d_&`F8TLw=wYtZ5f+h?36Kt9NKToZ@>TZ{U1LBTbj9T?%aFsIq&-(>Sn7fN(h$yhu8ti z4R7N7=-Km@lVKsri5oX&in8Sr4fiV!=7l24@5L?PWw_i9V*+23BPnQ?ms5 zK16hlxxMQwEbkUGtCC~WShR$ios?eYO(P+{p^KI0$cK&0)89FKn7|Gk-8FQ!c1Sj- z2d}6ot7-}BSWNn_Hh9s(TJ)wDDI1xQzYi^-2{ax1+f_=ZxsE5`60W_PXv+8X&0h1=p zLY%t{PM5mczUq41&bAeF@U&)@ag{zIW*u}ur)NP96pPkISlKnUyga2=mXkxSS{k}B zHJ^)mIDcsz>MOKq6c$2cb7j=v<)tOHjUn!E68qaz5mP2Zh=}o?A8JKE`rO+t^c8

Lnu?rV21`(0lM$#fT(QwOuhE`dGv2lO$#m<>f`?T||a-lz8|1#j$a&MWTsza+3*pB$>&e~{c@ z@7eMRer!+2;11Hl*3DpHKa{Zx3oSM$=`AU>e(KcJ2Wlm9$o(Nz+4hoDBnJ{-br4l- zo3(=nndpskm_j2sYeP4rMdIOc^+!o+83*e8?KSTkBB{R#$KK&cjWV;0SiO3qI1CSu zuRRJ@;~VsnM)a;|l-)4lZa?*6|HQjj`AdxSqD6{)Ymttq(nzav@w{|hytp}O0Nrm! zPea;Y^gXB5Tv}M*RAiPD=)18+PN^%u%n(#!FRCP|77k>a>4KHVYNd|x<`^QPXT!|U z7+_{-96BaB;8s^`3OV*LM`Dy{RJjcuNd)~JwTMMO#)kQm#nISxw!!KZax>wdN6WlP zjc6nD&rjPe;(!~>s)9A3x8Ptn`n<42U#MIopv{~lr7})SNc5~-!b9e*-3Q+gV(VZg z>&zM-xggG_ba(|wL;aOEwvv;iP{nJ2;emR1ShK|U2JSa^_8j$1el2iTBxY8EMd9=c zs70J>;^Wgp*X0H;Aavm4icmTHVUzSa|%rDz(3EVKZe9@0C`=^^G`raz?XlQe#ZM9n6MpDeVMHR?SDbv zo<+fDuydnNP{IqV{Fo~U``Z>nI z{OttxDSfP(KRhUj?j}LGAT1#(HypAi(0*Watc14S_vhQt=2u6fg?;FHi>VbJLHju* zI*a_zLLooWukf*NsIR1)%*e<&c;Z}BX%ZA(njFti2L0cfLI?h77yU;xY43T+PeNjU zK?gX6l{MBPyrtc^i5$yiU z@lx4aq^?F1rE%1r3LPNnKHh=;aOD$_tfCjCF45~&lh~bAI+ic7ijhOJ^bs>R3Bc?x zttu_4a_9^64nhZq3WuO~XIZ<6s3_1x0;K0c6W?ChXRpMMpGgDqvfql0&!%Be=+4*7$|wWPBeOdYe3%x zq&$xGe>M6CzBVLpjcRS9Ch%xw!{s~p(Z0~dZ#);dSxU}K{8KpnkYMtq7ZHc}x~#kg z$0St_O*wAfVc%YKE)n7e{V$8xFMI`mZ&}}k8$aqb3ddE z5ZKl>uf<*mm<_Yt21%!E4x=7?)CbUE9xb9{yrXmL5m_H#?!J3={QyRpsjvAfy0;uH z@i^>GB0p2RDOE7W=S(raJGhY$dAekfCbzY|+M87%%g)P@<&!c^zD$P8atkYzq@qmO zgdP@9dJdWt-aU88`luxYtWLp?#iYfCZ%%J%Z}YVE_PZnFVFXqv!5P;#;nv9EhKaBT zOy+yf^k26d!8Jt|+2F@6uMNB*dghXS+dB46PnP3+pCQWeoLwludJ@W`xC6!Rfiw<%aB)`a)9YFxcQV+ELI! z9Amc^Lt3J-ywUrFZCzKhcq#0N99I)bDX2?AW3~v|DVFa>-+)OEM$Nh4vv3N015nIg zvWrlh5csE$u+J1Uba&xCi-P>07R9$uM?C+mfz)xbHEWjW!IcBYyaYrDkI;MAjCr`N z`xo<2{IhxJ-vvjVQCIf_Z#~-R>k4vGhxlWMIP@#uY&qC^!Zlo*W0NN5rO0)JT(8Yd z#@EI*p(jXcKeX8ZZ62G&78%P6$P}w~ZT@O`NKm7OHB#j&-i=>ocQD=cNAID0p??8d z06PFKZ>0|I3;4+oXRL-hrzyE8$OA%>t;){AOofF1Z1GH4o510{VFf zXrlFK%~$9-6ht5#VsV^pf)ZC@3xQqSS(UfiO4hN}klJq^duoCNJS>+M-laM8vq0ti z5K18E$KL$`Jx$!cjffFJXJ!oqx$nHdR?|FI9UHr}r=Z%(96BGAw^KJ7L@fc=E>KSl zVCS!)6h6K5`%UQ4Z_u(`=n{eTqZhZJAo{-8IkJ#cx4O8=-dboP$}PqA3jCIXP7S3K zXdca?|42V3{vP?0fO`FmnhCwW52nl2hRn7A;{oIv*@qT@zdDEdkbj;26N`?bl6k-k zgw31TiBrd?1T5U(jeZ`rvYN|FiW_k^+io%2$SOD^vW)K-RI<0h#Lyd9Vjv)b@!80( zvgs5WoeG8x7H0Wu^a!ZWprBbH`5}3Db;4Rwk zAnAXL&fZO(@g6ub!AYTs)a&Ta{38wBH=FUoV!g&nDvQdsC6HFDvZ^M>vvNVmO!~nP z()c``Axi|dGIFxC;CF)Km#d)BR$#Fa6&wiU8|UcPCvJj9QWBm@ugsSdi_>CeNO7gw zUZf-o^OXfsJSS6?7~Q3)JlTHvR3kZpR(*xyjRJr0?<0FFGJ}ghpqFZbm*7zd6d(l) z&1t1yV8f`si_EO5hN4mmC=RdFN*4WIERb~Rg|z3tNQ8{a;RwYs?m?4U5eeD6pccka ze~od}-$gI6?zXo^eOK= z9o;cn)jeU`^@-FHW(h!Su{u8w&eesvB$`Fk`Zg;*CejQUwr{RbPL><>|Mu8i;cPxl3tDe%0g!L8H4u?>&7}upa?BxY0_h} z({TSc=qxWf+J#hI6Fg@pq7&3?KAp|Z%Gav$t;zx!i5{orESjfWIPWRJ3+JChlWrXB zZZ69!6=me8p~eh(az;45_SFHzyK?N%XBCxtO*KhRM;$EmG`q1;KC^6P$Ki44FeeT%~6n zE_T`>QS}FG`b9dCWvgyDZ!U3cF(X9{(sV(LLavx&plz9zoT}34!doz_26y+mC39Az-1_Dw7F}m zg37AA_6Gddyi3}AZN4U-O9#iIXW1XjcQxpONnK9?D)HRO`z2Y)GdAN!M)vGjv1N8>>olshnQ37jxz%9-8&i7r@m8C5GL zXH3bNReK?OA~tXawwHyR;BBH)@x(~1F)2*2c1dy!cr2r0E1XI)wNAC&P@Q4`N|>E~ znq_u4Og0?rwc8A^ajI)OwXOJe#PZ%532T3=5j3h+RpnN73$}mFalnR!^}_1#5_`EA z4nptcMl3fF%%%iaF`JUV0;Cm2S-oIie|{F3FJb3DM`!qBt2uGXtV9)&tCQXnv z4F$Ec{>lLu{rw07A)My~rxHf!M^-P2Td@diKdj$!jRglI?ELuA2uyYU>DrakY0l(H z^pu$-bsuN{nND{Xz(wzX980Kp!s)Jw=zb-CG&JJxp#Tlg{ru^n-+qpsdhF*5);UFJ zXX~j}R4opuMN=cXBG60N_oxq@<3l8qdx{Nza9bh48qG!35p?xvoNx~ONAK)HJAK~) zxqJ^)^0F8>+V@QaO|%tbe*@gyXu7^{GZV=S?}I_O`vo=Od(3%+hbt^1rn(a zxTI$@6HFXpzyZu91;cR7mk^JdBnLQT7+mOMve+GNjRc z3~96wNTZ`EV?zKn^`~A0EGU{KYGCki^TcP-^yj|Qfyl%CAXn9go?@yfJq~xb9EZCP z9*4V2kHg*RV^2Y4rB{5Fq4d#5cxs@uRg0ORun)2KBXeixaX{_W90%+}<8eR{oj4At zz0TwJPju-eV=l414&6Nzr=rBM5f6pR{M!Wv^WZeKJ z*77QR;22=_{dw3IFTRfCfGG80oyS#i>QDu69DMM$^h+xlpxiyq%ed@K219aTIHyTW zK>&)lKKyU-9FJ0eVlIvpwqKu)f;TbqZ|M5v>)pGs`e49vd=d=4zWQLma@_lEF>e+6 zW-d4wg7bm2k|-pwzTjGMRT^Lxg3}=DDv31>qxT>4ebYNU{!P=c?;9V6g>!2fdKaqs zg=$vzB)~o5p9Gjm*^>ZlXnqoa4P{ThEG(n;K{XDy=578S9)Xp*_cMQ`iZWA4tSA`0 z^BD7KSulKB6zu!dhpuVA{%Z#sq5TJ;`Hj$e-~R!@aUb;#6~!=XL+BYO_P^%6g^fPL zU-IMup7s-AfiE%rU%rOK^i>kENrP*dHH>7Kam(r1{1P7sr~P_%`L7LWVNfwg7*tFP zgNnKL8?+`3_48ZUp2pe+Z=Iq%FflhhCn+PXI<+jZRF)mskXE1SiQ{5ziZ_!XsHO0Y zX`6x>Q)WCNN~NG|_qtHM9grFS>zHB{;4J|JK{wme)70J2CM^z3Oi#&3j7@1y^~BfZ z$O9W<8@G6XD^NO2`^|giUSEFg$-f%XX6iZWGNAlu-beozBTBz8`ZC|7)0nh)N|rQV zO&XLpo@dEiHjRx*{B5-x3bX*ehEXNnhe3S@eaA5Q>aG{`1)yhcpoKTEJ5zZblmzC; z+2x^B2P0W^73S7^Ft>g~&izUOo5okcK#KcH@iLIwL*e?93hON2oVule*>h4cKBvz3 z!JJBUi|Xp!Zh$m=?FZkT@f)96Q1gwuQ=n$=UF@r=K**;br_3lB0DefQ<>zgJz)P{S zyciNXgCvJ_6W`ItnhC-jSqimJm;;*j<99ZuU0vUGG3>od(5Q>hrb|FQq*g%)CrG8FFWFHV+65ZfptI<^e z7gO_jsEL{e0I-*-&j2(#nkdAUxY0(6;A7El$^#%|cktRz|4PEA6s*w=ZYmAX$zha~ zcLTM+ZHvMG_ZVz>&!X*Oug?i6xcb@`GyWV~46}9gA+(7PQ`gjKX|lC3oR~I0UqNg0e0&OFm-MRxAERF@E518Uot0i;P}zT z-hD^vHq0gH$T1$@?yYNVEaNuzTS{>3cG&hNLry(eD|Kd=Gq~C){wDFfjQ8>7%gTpj zaHjRq$ik@e{{1zP72+quGT zJTSWAZ5|_Rmqb1O-+|dEmV6+}i-x*B7o*UI0B}%_jG(j*OinpLp9tIe(!r3sBR739 z!^G3$F~cT}(?CGXFcD&giy>wh0Wm{rDdiT@(ewz4{>7Dv$pL1SEX!sb!#-ywIw))+ zkqwP-{2kQSO&NpAqJYmYAp3PJ6hvbB_}CjqEbV|X3>^&^#ATr`oujt7)26>s*eQJ^_PAt0TWAE5t}gpQMkB{u>gOgF`=VYoq#># z5F-(T*gGenH98@q<`M-wvj%pTeP{I`K0J^aQAjqhPiU6)zK?&jVDsF3l3}Hz=l3%7 z@A=I3;bX4%H?($d$J_U7U_;Pqbq4ZJA{Mn8XzefazD0xRJx2c}jJgbs0fH=wg~t4< zI5CUjLqmQ%#E^r3WbndaKq3yKDH&z~d%G*^r3{*AWAlhh&TaM>Z> zxeEP}>9I#A{N&#N^6AUS052X>1s!snD%7Wjl|dnsB;y zF;tU5V44g7(d6@Ac_xDoa3TI>g4*Q9I#wsq^621;JRXqh^?eye7RNsf-m zHw#x&6C07ZHQ@6q%?Nt@(~N7_X%q;tn2MTm4_TlobqU&PYKKb+#BTZg^BV%hUU`i6 z139>xUe~9+X9PE@YGuY{CfZDApgPQGn2h{AX+F3yi zmVdeJN5Q9IdxFcM+6w2ct@{PX-|B#BW92DO?E`M6+PbF0cvpY=vJLA$en&>8am>X< z<{}(By?sRS?83On^%C;!_~pUTg5+v-5x|80H6J~WvG0JojW&41xSQ+SF&4gBOsFy6g`3O_G(vMFIN zZ0@%%pxP0vnX0AU=ikzU1DXh(ANT5uL;(kD@L__m=JBn*8@75`xQ>g(o6}i3iyk1! zdVnO$J|@84W*~uMse~1LnpPfc&`tH(FQ;Ryo}0|3g}TV$TnCD4)8>Lm$*& z>BH2k)CeET9R3YzDQg&DOY{qzn&?dyF~|b_aV0(bnIm9I|8bzRss&);-NVlCdPS2; z9G@L8iLF%ye)1j5V0Rj<_@%Skt~O^?Zwy)eREm_87IruJrKnDv97Q-VBo~c z3#jWkP`>RHOmpBj<_X&pk_wOg_IFsI(|I(XhHk^$hv91UO{m7Ch zAua_%UEiQNN4~lYy0U&dK5T@*X|WXv_8_icIPyFC4I+(m?7*`3NV;<@fPd<<-NS7J z)^#QF#^zT9YsGWuAh>=LeP7L8(tn}6ZuH@4!mWol979q2qd&!3&^4-_|Mq*!)LOzw zV;7IX$*R=cxwVB5)v{uxD?qpqFcxc^x!GhF< z&l3KBHuh6{yC+Zs`zE3l)OUR3WRFc6JHpD()2Z_XYKsb(X%Di`bc<)@DATht$SM`9 z&D-QXDCkW2WGX>lWK)k(y(~cEl{y6lItzprgV^gVMbu4Rb@|Xa+&|dZh37@s9n@hrv|VHmK}N+yT`^ zd`{utV`p9vV%K+ohF*@;=>jO{(b8-Q0$r5rR3T7v>3Ai-u#dHP+>v30BPjJmA78bJ zwV&-Os&LwM;Ot;b8b&Csr4MYHJClXS(0kLttpQxPI}8`@((kx%ckXfFhAzRNL2FLl z1tSHKchOSDN?D9%@sn%P8yaeA8XD4Tl9SWZ0b>v4`_z9I^DZb3&b{mTNdTWdr3j^1C~F=_{iT6_7bFxCa=MY$7PHY#5)d=8q1Z4bTqEa|QEtn4CS6>56@2{Xn@j_akN`#)Pr&621zP@=Deb4|P zbl!LT`s}u_H4z^#Paty2mCeTlR7VB}6KxVN*N6HU)X($Og8a1u84@pl3DEv;_E$C4mVz1k<0KQ9+&sUdKDt{Qa#%2QEU&m z@sr<2up#`^tMCI1*%>sa30pM`X%_nU^hX?Q#_)oziC!tO?sZ=cm~(iPwig7hY1RUPaOtPLfI* zOGp5W^eHU%hkS@0Mi@DF9F7S^fLQ~C(4t|`A2jhV3{=-O;GXha(WaFV5fY|jaCDe1 z@5}M^CAKTz+Sz6M(7Xn0;P+^Vm)KbEGGA~hXUqI?yhHXl-l2uPaBISEIyV4)tCe~ev6`MBEwTn_#yN!gIx zgMR9ZVRow2^H|9+x(VRhf3q!>!L}4y!ErjBt=i?i_#O1XCG-aJe|==e+D#&c z^s`S@#_9bRdBB9FhZR;%E!^did(RNPfz+gcU5VRO_ z%$k>A`zjeuNOSo(T8Us4pw+FheTd!`(*`l7aUfgDXTTAprqeU{Xf`Lewh4e$HxUbh z>OX#X>xG16%6S_};0o^H6zfYBN|izhiq?k}@-$XsT$pPu19E$g4t!}B9RMJ=W=0pE zUI;{WMZAsyBT~`4aU@}bfc}6w$nR-Q+fYveX_0PZplmOaP}JStlOqInN`bl*{A2y^ z)A!9tnetS2G$Yf7be!Sp9U$N4k7ialAethEv+{m1Xtdp)h(1ITeyOR&)M%p9=`RC! zuu%s3lGVA(psyhZ>Bl|q6l8MCE#M6WeYNrjC&eD0gXYfxhW~t29~jC83s97DH1%-$ zo}gs*@6^`*+RsliMVPWoKOjS(neAR*v8g}CYQJ7IE4iXts4e18(gfYyZ zv?C$n)8c#Vpa%5uR(|}zLCIMh-4-re?H!0DQ606hK~j@a5gk+voSyxRcv+z_-L<8d z=sLm*WnWcx2J$c z4N|fOv>uI7V7BT@jUKZvqmn@-H^}kB$Pb2b0X>05{{uZN%s_K^CBQGiBrU=(P>s@_T)B=L>TZkc#cL`G zimOOxq1{;oYQ;sG0-`{pEKuWWl`daHs@3@lt&FSGYBWkbJ1?ckXiu?*?1=nB) zFd6j-Z#E!(u6Ir-`sV1!&Ce%N!IYeT^OZC7V^b%uePX+#0biD}cLl02Eg&jjHg|zHF=8;@s8y4!9sW+H(fj;TAgN3?l zIH(2i;Hn+9J;S>N$6~J1i;0-cx;1$3SQ;Pk+3=(Qtn$E3HeB~Os2%P(nK}9Oq7x%U{K6@Z+kQ33oeMPg+Xo|cfG2E4eI!ZeoES!gcAi(LBr z0&Sn&svC|uqW4ElsqnALYAG_6RF_AajtnWOB zcYP{26WThPz>cg;mTe3nwV)wtMSozq3hadigu9`&q7m=+CMIkY#l9mV{WIh}o3~S( zHikKtb$0fd-5#tL-Rj||+uVtr_^wvZ6%xzNV5jFtr)3!G4iM;6CMP73Rgn@~9D%<~ zbLY@A0NFrew_dyk=!t_v-6h53%W^(8Fn`Vgn9TT@t%HXf!$rj;?crd(Vo6L|G!B)v zQJn3YdjcGu-DhT>MOmN09yfyubyD; z&1eF36K{VCqJ=xJk#Aq4{gj zNdI@0Lun%PUM-4*)$$8e)B>6juh{sBYg-hJgOFKG=P5Th@m^D>tF?~X*;v`xFQ~|O z$qNZvp3IVkOC%blgv?Rp$fY?lnLJk^Rmt<@`3i+y^AZ@S9pOZ!$Sti^aIrzO0=>p}JLMS} zxuPTq3DSA03_M3>u_;IsP@n8hM@f+j2Dr@Sayhup(vkuf?r)%DcYzZQebdj-YrC%? z#mGCpr-sq!r^Eb@IA|iA8bqKlm5rxm6;;YfWtpbhE3jN=?d2Fc4DD?KbYM_uN-{-< z3qD4Wo{8SOy><|ULH~|w?x!a6?8?1K3}k}nXJ&-20%lTRRiMeWl8-7my6fmc-aNQ- z{5~@q)X_?K*n6XFxJcWfhZ<&~XZTRmB>5oP(1jjvozOjkHlCZf>n2~E!&=?>Nz^GE z3HN=6CZK6kZcL*C6DG}6*z=tvDr1}SjrnX_9@LH+To8|LF5y|pqlhAhoxb#?D**^bu?t5-FX2} zA}XR5^XUmdQKjFYAVZ^Cnu(_#Cm00?fc z0hrKVM!=)cjvD#&L^kGyjcj*84@9($GF?op6vEl(3pQFpOv}0RB2LinvtL!y4|;^V z+`G4uJCEC&5Sy`bCUQX3L)wKF>_Vs;y}4^b=WQfv;-N9>bv{GtmRq<58R?c3d{L+< zJe&;QEP_R1W!ajhFrqxYN>VH1O6!}{t$1CnwXl|S7nIr^g{E1WHFA+ETahbO$W*fY zTrC%}<{6ZDT$-a?LaOX}MR~%niQx8@fG$_(Q7EV@!zrMy-ZBx`EQZ^3tO zEAe)ay)D%zk)MEihNJreUTONF`;l8H`K8HlL||Gx0^o%)5C8vMsj^v#|eWGLd{v*}> zM@Tg|0qlY%lgH#D>_dQRR_fJ;1Y?d#YLY%US+BDunZ+h~kbf*K?;2%+NFWHzptrhv zhOu%K1h`y-#b`DQ6pUnuRL{bW7?gPi4UUz|vMmK-QlodLRe{|TaCtOPeYK# z429>5vvo3DlV>t1!G@BW6&78JGFBQMG?Pxu9gytI_$0_NHihr8x0Lo0u26e;f*>hh zDwF1UfXhlh4yMR7M&=N41`dA$YgIN%;A7`6A%VNeUF)t2(wcL0GK0bt1OYo!o>^`V zR9iJ7MM_RWP{=dNN`+fi9fbAIM;v{DN~_T2>GKU*Ly*ECGv=7JhQP|K%FN1?nkY}C zCjyob_>sg0W`R7EM#|O7^|{%CusYGs=31w_oG7r{92N)HQfRUl2%H?iZ-7RI!J&8P ziqxK*mb5-@9KDL4A$Qf*I-5ORWP!piFUYoug3NiagaT1LFhi-3fGoUf4~0z=f{n9f z1bXy3n#}(JX+RWF0mlq9jrR=o6mP4k*;I?(x%XkJ1(aUw8!bzM1^OvpJCb4dDnThi5Z{8R{!$Rvc^7mc zL4}&uK_zwI)I*oW0pBrln33oNU!^izRV13n2urS~AK;iY`KEk4EF*DgE@-*yi661C~yP@ z`VRV(KLafSUhGqx260mL20U}4c=Mu8(RC8g`uED)VHaNbfJua z25Yt?mcl8p8OD0_Yw?8ZO}y)rh(9JlWkM?PXS2xPM(1>*Xt09*vi&E&J4_tqRfS)H z7_|X7we%9U9rSc57XJjg0pg$v1kub91;T_P2_p`4?B`PGHV%4~2N%Pm8v&FF_>8=& z{V|MfH5U*(jIkZ=3*uQvpZtuEEqR}lXVOE4v6ZPoYyr-%GM=1TDTe3!tvU)Zf9PdROE94O_N*K+*wVJLM9XSF@D zG=oT}Y?Th;J9g9!50N2-ZK;RwhWesP@G_+iI}3}8T*X}Ifuqn_Tv`Smn^xaDc7<64 z!eID6$GR1xPoiEvUBt)**>tRu?_ERp!#@FJ!mSQQc(Lr-cqrvE^|H!y1C3Ua7BnXK9SFEc!!7h`*-ZC zZl@j=-a{ClLKlRQbEUxxU~>2*GSeV~3@i-(R*>TKS?k??08no5n*#Egem__J00$u< z-2zkHU*QxriqJ8{4Y;@sl?`B$i)cF^bP19SX$A=a-Yu~%+oTVyGPA1LWqOlYSD|+s zYJv39;SXfHJcd)90pAlgs1`f`5Q)!S#X{tAVUGxD8bXZW}xm z131JC4i=aeR*S&w1*1eS%>vCrteDOkdw?&JDN{ltO1()$LQ~GbLBWyIp~f~iskW4M z;k|Ap6Dast-iEZDkmxR;^)!mAtA}_2_#H;yMj`xf-#}Bq$Fm3s(R=`JO}eq-`jO$5 z<8{Q_-rX5H@GIZ;pf|{|6DB@-`pyM3^$3Dgq4VfJY*`As+CNrAcO93Il{*XjYXmLw z$|M5&TdGVPDYk^WSCMl>(a|9|Ht>Avg&QRH4^-B}&(bC(1QBCcpE8>jB5HaIbL_3TjD#bIxQuO50HnxO=)e!?mjzD^Ka1X$ zL(KHvPEZBt$XX71r0}aRK&OwnCy@5LK(h;ou~+Y>0ysCN{c}M!=1$c&r)S0ynYkG<2`-kHi)GXVVYx|Pf$#D*o$G`BC|Kz$Hvp|1!E9*dEk3sN=OSOe zS0w8Ec|U;NppAps{?|fDW+j<=n!0bA5Xucci?~1eJp_~dEDE{Jw>-~UUb3z}irCQF zm$4hKEU`d3PLoAz*E#iNLF#TLIMY7=XE%ZY2@PMg31Dxs?6>z52AK3WVWB@iZYr&} zEO}qBnj_JQ)e=IJ19?N`+>9KFA_Gs$wmFp0>#|~fA&#Bx?QK8R!}QztXsKH$N%&i# zSGpUNUQq`~y)u`??t<*zN#pC9<9f?IHqv4oyc_@UWt0iTVaC$2)O?f@V@eHPk8Pb5-|A-ar&9Fy_ENd_Iu z5n|l(q28$13#M_jMjZ&r4bC@4sX~H>9 z^K1-qiVJfrGOp8HZt_%?8j6`K6;4H|ydo%hFmhi^KNph@7VqDA2=XbP;SblRulXn@ zZXTI{CbKIm9UX-K3px6SkC`{umjhe4B z>a+sdkF(IYMHLzhx}xSXQj2hvM7UR*=q8S4D}tV^3gdb#b}F zRb1gLbvhZ%-Zr^jYLH}Pn-mXD(#cdgO0hIPEixlXCYI+Y72MET2vDB2^cM_3BzIu! zX?~Q%QAwg_n>Z)h;yzlFk{05NPRwmbj{y#=q{DKuaPO7Ru^%tcb4Lkb-q5~MvZ#|K z@9WVv;#4~X&Oz6gz<%^e`;t-vhyk0}(%G!}GS}*ZU^nN%YctwM4e+S2uY_Y^jB()m zjC!gM{R2Km>LZ+DXH~I72Z9Z=(OkCAtw(R3&5wz^GXd zh!AL5DJLm6Jy$HvmgUM7vOGn;5{`?qK!%&C6G#fBrAk8OD%DovZH=z_8nU^qVwdG~ zMUk_>VyZ6=%=5@J*?A&m5Iu`t$CugF4(bB0!yTB**_aoblR;1rXQEe_`p_2#f%k$4 zIM<*g6W{GN>WfKxnXRbEC-a+~09z&!a`szJH42VwZrZRpUYW8P5;Yg6H90*dCNQLR zq_0ZUg)I@#0g;^a7?Vjx>T-0-e5p+xXsYmC1V}t zHgnrPIFqel7P75<6K*x}Zc%*x*yCV`p}(QcJpT;ko@5cqhx1y9j)4lcQ93xQg;1e9 zIt>0<5wVA!z^3wi8m>vd*Sp;|%%OuGdyRv&g(farwHA+!bKWGcasZUnhW@b&IG#^4 zPt1Paxera-?>KJt^bHDaL^rC}JgeA}W=aS$rJCZx z1&cUKotr#KL~Q-G?4$T#kGr>(?A%^?@ZrNw22<6+4qUMZRH(w6C}xcV}KyH4Q$L8S=Yx(O3!2lW+C?he)Q0hm0N8aJO?Wbr`F&|^qSjaUPaw)=ZuZ+Qds{T(!$>#|fEOI)?ak_RXG(?JzX zVtN3SeGd6;FYxtfLb0c`scvhKqoky|(!1+oU>>Mh=jJL*&_8KHcAO|GJ5drZid*(| zpr|9OCAWdAfMqo+Tf*eQIZyxb9Q_CjEDU3oK}r}R4JrC;*d{7WWn~b?fsLnB-(c9v z^^c-gwWH}n=o~8J0iz#8G;Zt#yXTw7W^*EK$xiU3xvCUiydEaGhxAl9tK5Qel_OiE zREmsHg-jHUjsS(JwN?)q1w}QT{O6)j z&kuZ))}+-6qLZ?g5g)UQ>k6C&MRrG!r_$rB2ZK$ka*!6CMQhdqFvTAo;n7divU)Vf z^UZc78}E0c2T3nsw^7F&ex^IUEX|qdO0p&E613^Lk~B%0I>nk`O(;uikW@&eX zO~X~~9fgH~j+~-wM|O2#pu(eY%PYB6O+_8OR2>f#jKJA(n;C+;(C*tOsbxI15ng8E z!y3Lv=8?G5WJ|+iKUAgZGHjyK3~)N@YIL;))uolCm6gRcmPV^r(;(&g|H&<){!ZD1 z_4Zm<4MA-ZYGmL}lyVJ9gIp>Y|GH;F`=xKXC!*w0J};9nBpK56B1+GzG}IcrK?aY} z+aWLvuuF}_h9W{=s&i>w)CM8fm2OWcfWwK>vgU&25rJ0g~Oc}XaQh;vBen=)mC51^ zB14p_NWha*iri_WxJ*)=-H>Yt%=*BpEmqmI@S_WI<+;=)`P`iLw!AhRJ#=8_4;`|W zR4=J4mK95jw|E0Z71DBLIagMruB{jNzd)xBQOCL`w0|-2y72cg#L+i}FVN2mXsqH5 zh#Q7?42llnhj!Nf4B$wJiOPw@x5Sk-r;-qeJcC#QBy?SYP^1qrIAQoUHTm|$Q30cd zzm|R+lpx-w-=ZJAr-y|z`V#<%c@Qx0>k0ZWWG6$9Uw(m(pg(+f>QnUnPkqZMV10G| z8W~M*2ZH*C=p1jQ{1^(_jh;9(p?f?klP2dw5RZKdy#bzu2QENHi>G5g3R%}2eo#Wr z&CH076s)R$7rjJK`28qo&!Va8V?h$-`6t&`@9Ao-KI9@5T|If#cw?EPvNF3cc5}Q+ zoklJwjc;fde0tP&k?_y-`SbI{=z$?7A%}h>cmQE8>>{}Kv627Xxo_(&sV%DvDle%h zs>I7(O0g3x?}83S-``R&Zh6bhS$Jr;C@h}Dwr8cvleMtHU9_boSfc+QMFSeq0Uq5* zzvD)4il`-Ggnbu~S@#V;Nsa?4bNy0{E%BWx6`quLs>skLI4?F<+D+cuBIWHnpOLF)2!g-V;J%LmJU zbPC91gGB^pQW2O*?e0J+V6#4fL705>e%>tfH$H^RU>Sxm0pJ#G!XlFcoKNTvY>VA&vkO29OKT^d z1T|YG01OMXUTe@8v|M@;Tbr+k2t9c90e^%@wjs}$r}Qn^zM_1qHfU%3=T*DN2#TJU zeplBkZ02Zfu)-p4)|qr>9hZLn_jS!>n^Yzh)P)+Ad)E&oihi1qt?;9Id62+`n*Nws z*KA^0EJompnao`#3M3gmRQ$YcuTcE5i13P1EM zQ+Ug_3^t5*??FCA|X+%Rh@)a#GBlsh+r86gs($H9_- zojkEyD`t47=(|SjV+nPYu_Kus zqL+Y{DvL=x%2fUyt@yvNOMV15F6v9{hTsu;=p>r@IS8e{3+n6+_Q7ps&0ey)#@W~= z=*ab^xCy`#fKZammTk|pCl&?DLAW%}1~8dSm!hIt&{ON)QR7id-9&}Vm0OryVhXG} zp||8X#P*DWAbU!hB^?isRf?0z_>7#y2tkTn1Rm-lS*g5IS*Ueri?qj614}ecja|d7 zlow@Z3RWg0FP{0n&9RWkR8;qpmK&hDj26Lp>=3=4t)scDkh;{Jg#R4Ii}w63^kpB4 z-vyF!Kf>v?t(I?jm9h(&v-PqkIYZ`cmfkzO7-_CXs?9b8LDbNeY~B(gSitsa+(d)I z&2J0!R9ozoM0r73VX2dg#_p%ja}=Vq`~>{xhM+|pP#{zGZ`^gE0ZC!}lwugcvtJ;{ zht#d0zJ|q1;{bf7BfCgq%P?`pB3-_SlxQUR*?9^$Q>irE>_!zpnIQ1+&)_78OWXu0 z4F#ANfH+v{T3Z)MNWzj;vR~?lO8#ji#v5G)ddF>^N;sAmX_~WIRqZCOz0hPTBzM?5 zYHPMS%FLx|7dJeDFBhdNqIGe)6q~46>QFk=MHUML4eVv`Q(jPIudtPyt1M-Dry*|KO<9Sh zoAHD+tx8O$$dfXXV!3*@rPf?&E;YM?)(ig+ZSMgeMYZ=2vv=L%s;g#PBs=U3QbmeL zk&9A7QF@gYAP@+FG}3$9-Rx$2%kE}((|hj)5+IadM3i0yBLXTYMFlKpau4_M{Y`@9 zzR!Ki|MP#}kM{zZ%$zwhbIz~-zF)%d-LBMB_?#&QZzoEX5#3kuASd5rC^VE(2I!@< zNcD}pYI~WdkSfkC&aNaY3gxjL+GVm8SaYo|Z(F|2ZF7R5nU#@hi6@tAh~Bu1jt@_Z z%S;t!#A(8JOLuM-q^i{Ebdo@8h8C;Scmy5>54CHcSISpR=+s|A}&4@6U`2A-kP(9kAD zNB@!&CARn*b{oPe!!F$(Z8WG+VrB?1K5@DHB}H37Im7yvJs*?NfzlhXj9 zN@7c=8RYu!LcRVEnLdzu1+hC&*Y-5^8dhoHeFAXS=Rq*W;OhpDG1rjm4eC!kt?Z-K z=ifu6XW=ivdy64VMQA@d45Ad3%ZTylJsCvyUzYU&@!*|jn%`-j-1556YI2$Ki`@q6 z^CNTj6(1}=+Ji?9K~=K&gRy5KZwfWQE)yG{Zc;x#vhiIW;e^X!jJZHeh-P=A=59_` z71CC7(W6oc^20z$RE5Ss>UE5u8hr~ONN{9J6;zaK@o0hgX2yrW{1naNJQzf5xq=I+ zpj_bx0deME0>6=>zr=eX{PsSSFc7XkvZa*}nRhWAGV!;#xEpQ%*D?Ezjgtz%nG2P? z&-^IEz_9pd=+4O&4(2~C97MHjs`jD+hJ#*#4jIhjTLpyv{){z?@mS{AUd|UMZ=d9T z!Tct{Qv}=fp$sE(8M4oaAc5G$tG@s-clNAD%>(D5QOthu$|?-Gl%a%IWXZ8RDSMXF z;vwBGRk9Pd5||#@raW&`j>&1U7|cT~8igs9+!U&aO{P=h)xmyJJW{Yj9|{yH&`jt8 z4lB_d+ z9kktHb-JW3ZMND@IaEsM+h*-%6~tuC5HGzcVy>avBKY?|?CKsb^x~xj7a&pdB7gyy z!Jb{UWnd2z{^izUbG5-_9-=MHY&sw+iA_ zsi_J|tyF3=$TYbX`lJ9Rny{s>0P+J}Hj8~bKt(8=X3jSyGO9z zxide8iY#nS|Bx(jn=M(iS)jK9dR?Br0I0TY!gPM3LaqetY^BwyrqxbueyP-iCh{5t z`_0X^KPQy}aT7fcs+V^4PfE>BN(GYw@`$IClCOZL)MY#M12bal=+~qFsQj*)bM54{ zPr1m4aY**$@jJ~8)-uXq=4HZONKQ>LX$D4)H3w~#t`hj^gS7o$%9NE0EZw;V4_Rm6 z)fQV_1$3d?12Gtwx!Mi!-n8swYqmSTw6wmcD!0hx$}|sAL1-X7HPNJk;JRF%kQf;m zm>RFs2@lSYgr_RQ3{;E?P{Xel35rZEol7NjW!U6#Qn4KU$M0L*zX-r}nMbmx+m_wq z#q1{aXE*64q+o_|s!$F0Y@dh$a_hTHJ6ga2ls+zcrO!`dQ)il0q?Ru?sI|I`rFirZ z16#^21+aIE4$@$-JV}eiWH!@}&PI&-;b} z1M6>0Z2qm!IF*OEU-gZF)}VIg&3$O%J`S4P!37wfQpuG~hZbcd>VQDQxr1lQ$}?w? z`>I2I*F`67$;dESRJ3LXPiJ@Pa>?U8Emz??J{=)5!E1jjac)0TFY)R0J>x92fH#oQ z&NF1D=%IXPPu-#Jih=`9r$OhSiDqj%k2q(^R9e!=RqF$1!!Uk*uQhVevmFg*xX^Ym zO|s4qppT{u0?26_9d^e$8Axw^rJ?nxG*3|LDl3I_SbmPj?i3c}I}3}X6^fGhd@3(K z+7U*Egvq1Bp=`jp)nVY(7nkQ(lC^n>fwUn?5tooG3=2;U-3|VnAG$6|?~^8QenmY1 z;>&0x$oQDoDZoA0i?>~XdN2V$iT^z1S4Jzr#*w_O@H^zi+Y4tR0)7&wGizWZ3Zg|^ zbdZbO%oxc?WaMq-11NM4Z!aH!27BNqFj5OXDWJsX2c025*tQ?EoNgJw- zZKcvuW1}gb62Hb+Iyfg0l)PSMEYLcb%|NXhrvpvlqF4JizR4cwK+`#&qsdSd-?tGk zPd~?@@zwEO=el7%zlal=12X*D%nnXBs^_AUGgruPC5}L^ahlK)ZWB`}!?`#FjplTs zIo#vSJ0g6gnRy0&NpqW;CE(A!2kZBJWbCuZ06wM(y)f`A=5_YKw>Y5=iRwA%WtiT} zc&H>eDmp}?F_|<}Mi^8v07f`@q`m#n;T`Q8agTVB=Rv>SAG+Fir5DHP^(h|z3^8aZ5! z6FWGFvyXd_fezeqmP%9v2L|oqq9A4*yc|3heiXuPn2G}>ADv5_eM&in!>hF)DL7sOpG^Q+|6C9TtF)Hu8~4*1K4|2BUJ=3V3w#qbS`nvBd0 zqfw{+dhU>^^RiQ{YNIhL(;IOwATAIc`P;LMMyuUsHyWWVQw;DP8P#Y@0(#Hw1<8-f zy}ů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 literal 0 HcmV?d00001 diff --git a/default_env.tres b/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/entity/chest.tscn b/entity/chest.tscn new file mode 100644 index 0000000..1cec624 --- /dev/null +++ b/entity/chest.tscn @@ -0,0 +1,48 @@ +[gd_scene load_steps=9 format=2] + +[sub_resource type="CubeMesh" id=1] +size = Vector3( 0.2, 0.2, 0.6 ) + +[sub_resource type="OpenSimplexNoise" id=2] +period = 12.0 +persistence = 0.3 +lacunarity = 4.0 + +[sub_resource type="NoiseTexture" id=3] +height = 8 +noise = SubResource( 2 ) + +[sub_resource type="SpatialMaterial" id=4] +albedo_color = Color( 0.756863, 0.658824, 0.321569, 1 ) +albedo_texture = SubResource( 3 ) + +[sub_resource type="CylinderMesh" id=5] +top_radius = 0.1 +bottom_radius = 0.1 +height = 0.59 + +[sub_resource type="OpenSimplexNoise" id=6] +period = 12.0 +persistence = 0.3 +lacunarity = 4.0 + +[sub_resource type="NoiseTexture" id=7] +height = 8 +bump_strength = 20.0 +noise = SubResource( 6 ) + +[sub_resource type="SpatialMaterial" id=8] +albedo_color = Color( 0.756863, 0.658824, 0.321569, 1 ) +albedo_texture = SubResource( 7 ) + +[node name="Chest" type="Spatial"] + +[node name="Bottom" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1, 0 ) +mesh = SubResource( 1 ) +material/0 = SubResource( 4 ) + +[node name="Top" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.2, 0 ) +mesh = SubResource( 5 ) +material/0 = SubResource( 8 ) diff --git a/entity/entrance.tscn b/entity/entrance.tscn new file mode 100644 index 0000000..7f96f33 --- /dev/null +++ b/entity/entrance.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=3 format=2] + +[sub_resource type="CylinderMesh" id=1] +top_radius = 0.8 +bottom_radius = 0.9 +height = 0.1 + +[sub_resource type="SpatialMaterial" id=2] +albedo_color = Color( 0.913725, 0.929412, 0.341176, 1 ) + +[node name="Entrance" type="Spatial"] + +[node name="MeshInstance" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) +material/0 = SubResource( 2 ) diff --git a/entity/exit.tscn b/entity/exit.tscn new file mode 100644 index 0000000..1e69a4d --- /dev/null +++ b/entity/exit.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=3 format=2] + +[sub_resource type="CylinderMesh" id=1] +top_radius = 0.8 +bottom_radius = 0.9 +height = 0.1 + +[sub_resource type="SpatialMaterial" id=2] +albedo_color = Color( 0.870588, 0.341176, 0.929412, 1 ) + +[node name="Exit" type="Spatial"] + +[node name="MeshInstance" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) +material/0 = SubResource( 2 ) diff --git a/entity/ground.tscn b/entity/ground.tscn new file mode 100644 index 0000000..6dc3992 --- /dev/null +++ b/entity/ground.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=2] + +[sub_resource type="CubeMesh" id=5] +size = Vector3( 100, 2, 100 ) + +[sub_resource type="OpenSimplexNoise" id=2] +octaves = 8 +period = 16.0 +persistence = 0.75 +lacunarity = 3.0 + +[sub_resource type="NoiseTexture" id=3] +width = 64 +height = 64 +seamless = true +noise = SubResource( 2 ) + +[sub_resource type="SpatialMaterial" id=4] +albedo_color = Color( 0.337255, 0.631373, 0.180392, 1 ) +albedo_texture = SubResource( 3 ) +uv1_scale = Vector3( 0.25, 1, 0.25 ) +uv1_triplanar = true + +[node name="Ground" type="Spatial"] + +[node name="MeshInstance" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0 ) +mesh = SubResource( 5 ) +material/0 = SubResource( 4 ) diff --git a/entity/player.gd b/entity/player.gd new file mode 100644 index 0000000..8fdf179 --- /dev/null +++ b/entity/player.gd @@ -0,0 +1,85 @@ +class_name Player +extends Spatial + +# Parameters +var speed = 4 # m/s +var spin = PI/2 # rad/s + +# By default, not moving and not turning +var moving = false +var turning = false + +# When moving, these are not null +var moving_vel = null +var target_pos = null +var turning_ang = 0.0 +var orig_ang = 0.0 +var target_ang = 0.0 + +# Move at position +func teleport_at(v: Vector3): + transform.origin = v + Vector3(0, 0.5, 0) + +# Look at a direction +func turn_at(dir): + match dir: + Direction.NORTH: + rotation.y = 0 + Direction.SOUTH: + rotation.y = PI + Direction.EAST: + rotation.y = -PI/2 + Direction.WEST: + rotation.y = PI/2 + +# Indicate if player is moving or turning +func in_movement(): + return moving or turning + +# Move forward +func move_forward(): + if not in_movement(): + moving = true + moving_vel = Vector3.FORWARD + moving_vel *= speed + target_pos = to_global(2 * Vector3.FORWARD) + +func move_backward(): + if not in_movement(): + moving = true + moving_vel = Vector3.BACK + moving_vel *= speed + target_pos = to_global(2 * Vector3.BACK) + +func turn_left(): + if not in_movement(): + turning = true + orig_ang = rotation.y + target_ang = rotation.y + PI/2 + turning_ang = 0.0 + +func turn_right(): + if not in_movement(): + turning = true + orig_ang = rotation.y + target_ang = rotation.y - PI/2 + turning_ang = 0.0 + +# +func _physics_process(delta): + if moving: + if transform.origin.distance_to(target_pos) < 0.01: + # Move at target pos + transform.origin = target_pos + moving = false + else: + var velocity = moving_vel * delta + translate_object_local(velocity) + if turning: + if abs(rotation.y - target_ang) < 0.05: + # set angle + rotation.y = target_ang + turning = false + else: + turning_ang += spin * delta + rotation.y = lerp_angle(orig_ang, target_ang, turning_ang) diff --git a/entity/player.tscn b/entity/player.tscn new file mode 100644 index 0000000..b991664 --- /dev/null +++ b/entity/player.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://entity/player.gd" type="Script" id=1] + +[sub_resource type="ProceduralSky" id=2] +sky_top_color = Color( 0.878431, 0.92549, 0.972549, 1 ) +sky_horizon_color = Color( 0.117647, 0.219608, 0.172549, 1 ) +ground_bottom_color = Color( 0.133333, 0.270588, 0.0196078, 1 ) +ground_horizon_color = Color( 0.133333, 0.270588, 0.0196078, 1 ) +sun_color = Color( 0.811765, 0.686275, 0.109804, 1 ) +sun_latitude = 20.0 +sun_longitude = 180.0 +sun_angle_min = 2.0 + +[sub_resource type="Environment" id=1] +background_mode = 2 +background_sky = SubResource( 2 ) +background_color = Color( 0.301961, 0.458824, 0.454902, 1 ) +ambient_light_color = Color( 1, 1, 1, 1 ) + +[node name="Player" type="Spatial"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0 ) +script = ExtResource( 1 ) + +[node name="Camera" type="Camera" parent="."] +environment = SubResource( 1 ) +current = true +fov = 60.0 +size = 2.0 +far = 8192.0 + +[node name="RayCast_Center" type="RayCast" parent="."] +cast_to = Vector3( 0, 0, -8 ) + +[node name="RayCast_Left" type="RayCast" parent="."] +cast_to = Vector3( -4.25, 0, -6.75 ) + +[node name="RayCast_Right" type="RayCast" parent="."] +cast_to = Vector3( 4.25, 0, -6.75 ) diff --git a/entity/wall.tscn b/entity/wall.tscn new file mode 100644 index 0000000..091e61c --- /dev/null +++ b/entity/wall.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[sub_resource type="CubeMesh" id=1] +size = Vector3( 2, 2, 0.2 ) + +[sub_resource type="OpenSimplexNoise" id=2] +period = 12.0 +persistence = 0.3 +lacunarity = 4.0 + +[sub_resource type="NoiseTexture" id=3] +width = 64 +height = 4 +noise = SubResource( 2 ) + +[sub_resource type="SpatialMaterial" id=4] +albedo_color = Color( 0.760784, 0.501961, 0.215686, 1 ) +albedo_texture = SubResource( 3 ) +uv1_triplanar = true + +[node name="Wall" type="Spatial" groups=["map_block"]] + +[node name="Mesh" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 ) +mesh = SubResource( 1 ) +material/0 = SubResource( 4 ) diff --git a/export_presets.cfg b/export_presets.cfg new file mode 100644 index 0000000..8d0d071 --- /dev/null +++ b/export_presets.cfg @@ -0,0 +1,133 @@ +[preset.0] + +name="Windows Desktop" +platform="Windows Desktop" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../exports/Ygdra/Windows/Ygdra.exe" +script_export_mode=1 +script_encryption_key="" + +[preset.0.options] + +custom_template/debug="" +custom_template/release="" +binary_format/64_bits=true +binary_format/embed_pck=false +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true +codesign/enable=false +codesign/identity="" +codesign/password="" +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PoolStringArray( ) +application/icon="" +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="Ygdra" +application/file_description="" +application/copyright="" +application/trademarks="" + +[preset.1] + +name="Mac OSX" +platform="Mac OSX" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../exports/Ygdra/MacOS/Ygdra.zip" +script_export_mode=1 +script_encryption_key="" + +[preset.1.options] + +custom_template/debug="" +custom_template/release="" +application/name="Ygdra" +application/info="Made with Godot Engine" +application/icon="" +application/identifier="fr.feufochmar.ygdra" +application/signature="" +application/app_category="Games" +application/short_version="1.0" +application/version="1.0" +application/copyright="" +display/high_res=false +privacy/camera_usage_description="" +privacy/microphone_usage_description="" +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false + +[preset.2] + +name="Linux/X11" +platform="Linux/X11" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../exports/Ygdra/Linux/Ygdra.x86_64" +script_export_mode=1 +script_encryption_key="" + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +binary_format/64_bits=true +binary_format/embed_pck=false +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +texture_format/no_bptc_fallbacks=true + +[preset.3] + +name="HTML5" +platform="HTML5" +runnable=true +custom_features="" +export_filter="all_resources" +include_filter="" +exclude_filter="" +export_path="../exports/Ygdra/HTML/index.html" +script_export_mode=1 +script_encryption_key="" + +[preset.3.options] + +custom_template/debug="" +custom_template/release="" +variant/export_type=0 +vram_texture_compression/for_desktop=true +vram_texture_compression/for_mobile=false +html/export_icon=true +html/custom_html_shell="" +html/head_include="" +html/canvas_resize_policy=1 +html/focus_canvas_on_start=true +html/experimental_virtual_keyboard=false +progressive_web_app/enabled=false +progressive_web_app/offline_page="" +progressive_web_app/display=1 +progressive_web_app/orientation=0 +progressive_web_app/icon_144x144="" +progressive_web_app/icon_180x180="" +progressive_web_app/icon_512x512="" +progressive_web_app/background_color=Color( 0, 0, 0, 1 ) diff --git a/hud/button-down.svg b/hud/button-down.svg new file mode 100644 index 0000000..0e0eed4 --- /dev/null +++ b/hud/button-down.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/hud/button-down.svg.import b/hud/button-down.svg.import new file mode 100644 index 0000000..9f84137 --- /dev/null +++ b/hud/button-down.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button-down.svg-19035486a9e6750d8ab8f48ae9262019.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/button-down.svg" +dest_files=[ "res://.import/button-down.svg-19035486a9e6750d8ab8f48ae9262019.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/hud/button-left.svg b/hud/button-left.svg new file mode 100644 index 0000000..9348676 --- /dev/null +++ b/hud/button-left.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/hud/button-left.svg.import b/hud/button-left.svg.import new file mode 100644 index 0000000..735e443 --- /dev/null +++ b/hud/button-left.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button-left.svg-b493beadc1692f5d95f7116825ca3d31.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/button-left.svg" +dest_files=[ "res://.import/button-left.svg-b493beadc1692f5d95f7116825ca3d31.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/hud/button-right.svg b/hud/button-right.svg new file mode 100644 index 0000000..ace9771 --- /dev/null +++ b/hud/button-right.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/hud/button-right.svg.import b/hud/button-right.svg.import new file mode 100644 index 0000000..78ffe25 --- /dev/null +++ b/hud/button-right.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button-right.svg-a7ae82ec2bd2de27e96aafd5ec8a0173.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/button-right.svg" +dest_files=[ "res://.import/button-right.svg-a7ae82ec2bd2de27e96aafd5ec8a0173.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/hud/button-up.svg b/hud/button-up.svg new file mode 100644 index 0000000..e00946d --- /dev/null +++ b/hud/button-up.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + diff --git a/hud/button-up.svg.import b/hud/button-up.svg.import new file mode 100644 index 0000000..0a174c6 --- /dev/null +++ b/hud/button-up.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button-up.svg-7810841ec24551e68b863549473e8b67.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/button-up.svg" +dest_files=[ "res://.import/button-up.svg-7810841ec24551e68b863549473e8b67.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/hud/joypad.svg b/hud/joypad.svg new file mode 100644 index 0000000..66c840b --- /dev/null +++ b/hud/joypad.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hud/joypad.svg.import b/hud/joypad.svg.import new file mode 100644 index 0000000..88753b2 --- /dev/null +++ b/hud/joypad.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/joypad.svg-b01353fcdd771ea7c0728dcff1aff6a9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://hud/joypad.svg" +dest_files=[ "res://.import/joypad.svg-b01353fcdd771ea7c0728dcff1aff6a9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/hud/map_viewer.gd b/hud/map_viewer.gd new file mode 100644 index 0000000..09e8621 --- /dev/null +++ b/hud/map_viewer.gd @@ -0,0 +1,101 @@ +extends Control + +# Member variables +export var show_unvisited: bool = false +export var ground_visited: Color = Color(0x359235ff) +export var ground_unvisited: Color = Color(0x359235ce) +export var ground_unseen: Color = Color(0x80ced3ce) +export var wall_visited: Color = Color(0x000000ff) +export var wall_unvisited: Color = Color(0x000000ce) +export var player_color: Color = Color(0x2b40efff) +export var chest_color: Color = Color(0xef2b3dff) +export var entrance_color: Color = Color(0xe9ed57ff) +export var exit_color: Color = Color(0xde57edff) + +var level: Maze = null +var player: MazePlayer = null +const cell_size = 15 +const cell_dim = Vector2(cell_size, cell_size) + +func init(lvl: Maze, pl: MazePlayer): + level = lvl + player = pl + update() + +# Drawing function +func _draw(): + for j in range(level.height): + for i in range(level.width): + drawGround(level.at(i, j), i, j) + drawFeature(level.at(i, j), i, j) + for j in range(level.height): + for i in range(level.width): + drawWalls(level.at(i, j), i, j) + drawPlayer() + +func drawGround(c: Cell, i, j): + var color + if c.visited: + color = ground_visited + elif show_unvisited: + color = ground_unvisited + else: + color = ground_unseen + draw_rect( + Rect2( + cell_size * Vector2(i, j), + cell_dim), + color) + +func drawFeature(c: Cell, i, j): + if c.visited or show_unvisited: + var orig = cell_size * Vector2(i, j) + match c.feature: + Cell.Feature.ENTRANCE: + draw_rect(Rect2(orig, cell_dim), entrance_color) + Cell.Feature.EXIT: + draw_rect(Rect2(orig, cell_dim), exit_color) + Cell.Feature.CHEST: + draw_circle(orig + cell_dim * 0.5, cell_size/2, chest_color) + _: + pass + +func drawWalls(c: Cell, i, j): + drawWall(c, Direction.NORTH, i, j) + drawWall(c, Direction.WEST, i, j) + drawWall(c, Direction.SOUTH, i, j) + drawWall(c, Direction.EAST, i, j) + +func drawWall(c: Cell, dir, i, j): + var color + if c.visited: + color = wall_visited + else: + color = wall_unvisited + if (c.visited or show_unvisited) && (c.get_edge(dir) == Cell.Edge.WALL): + var orig = cell_size * Vector2(i, j) + var from = orig + cell_size * Direction.edge_from(dir) + var to = orig + cell_size * Direction.edge_to(dir) + draw_line(from, to, color, 2) + +func drawPlayer(): + var orig = cell_size * player.position + var points = [Vector2(0, 0), Vector2(0, 0), Vector2(0, 0)] + match player.forward_dir: + Direction.NORTH: + points[0] = orig + Vector2(cell_size / 2, 2) + points[1] = orig + Vector2(cell_size - 2, cell_size - 2) + points[2] = orig + Vector2(2, cell_size - 2) + Direction.SOUTH: + points[0] = orig + Vector2(cell_size / 2, cell_size - 2) + points[1] = orig + Vector2(cell_size - 2, 2) + points[2] = orig + Vector2(2, 2) + Direction.EAST: + points[0] = orig + Vector2(cell_size - 2, cell_size / 2) + points[1] = orig + Vector2(2, 2) + points[2] = orig + Vector2(2, cell_size - 2) + Direction.WEST: + points[0] = orig + Vector2(2, cell_size / 2) + points[1] = orig + Vector2(cell_size - 2, 2) + points[2] = orig + Vector2(cell_size - 2, cell_size - 2) + draw_colored_polygon(PoolVector2Array(points), player_color) diff --git a/hud/map_viewer.tscn b/hud/map_viewer.tscn new file mode 100644 index 0000000..51f6bd9 --- /dev/null +++ b/hud/map_viewer.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://hud/map_viewer.gd" type="Script" id=1] + +[node name="MapViewer" type="Control"] +rect_min_size = Vector2( 600, 600 ) +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": true +} +ground_unvisited = Color( 0.129412, 0.34902, 0.129412, 1 ) +ground_unseen = Color( 0.411765, 0.415686, 0.411765, 1 ) +player_color = Color( 0.0666667, 0.0980392, 0.352941, 1 ) diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c98fbb601c83c81ec8c22b1dba7d1d57c62b323c GIT binary patch literal 3305 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 literal 0 HcmV?d00001 diff --git a/icon.png.import b/icon.png.import new file mode 100644 index 0000000..a4c02e6 --- /dev/null +++ b/icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/main.gd b/main.gd new file mode 100644 index 0000000..3740794 --- /dev/null +++ b/main.gd @@ -0,0 +1,69 @@ +extends Node + +const ExplorationScreen = preload("res://screen/exploration_screen.tscn") +const StartScreen = preload("res://screen/start_screen.tscn") +const MapScreen = preload("res://screen/map_screen.tscn") +const EndScreen = preload("res://screen/end_screen.tscn") + +# Member variables. +var map_width = 40 +var map_height = 40 +var generator = Generator.new() +var level: Maze = null +var player: MazePlayer = MazePlayer.new() +var current_screen: AbstractScreen = null + +# Called when the node enters the scene tree for the first time. +func _ready(): + randomize() + goToStartScreen() + +func new_level(): + # Generate level + level = generator.generate_map(map_width, map_height) + # Teleport player at the entrance + player.teleport_at(level.entrance) + player.turn_at(randi() % 4) + +func on_next_screen(screen): + match screen: + 'start': + goToStartScreen() + 'exploration': + goToExplorationScreen() + 'map': + goToMapScreen() + 'end': + goToEndScreen() + +func clean_up_screen(): + if current_screen != null: + current_screen.queue_free() + +func attach_screen(): + current_screen.connect("next_screen", self, "on_next_screen") + add_child(current_screen) + +func goToStartScreen(): + clean_up_screen() + current_screen = StartScreen.instance() + new_level() + attach_screen() + +func goToExplorationScreen(): + clean_up_screen() + current_screen = ExplorationScreen.instance() + current_screen.init(level, player) + attach_screen() + +func goToMapScreen(): + clean_up_screen() + current_screen = MapScreen.instance() + current_screen.init(level, player) + attach_screen() + +func goToEndScreen(): + clean_up_screen() + current_screen = EndScreen.instance() + current_screen.init(level, player) + attach_screen() diff --git a/main.tscn b/main.tscn new file mode 100644 index 0000000..7cb0d2e --- /dev/null +++ b/main.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://main.gd" type="Script" id=1] + +[node name="Main" type="Node"] +script = ExtResource( 1 ) diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..a10a248 --- /dev/null +++ b/project.godot @@ -0,0 +1,150 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ { +"base": "Node", +"class": "AbstractScreen", +"language": "GDScript", +"path": "res://screen/abstract_screen.gd" +}, { +"base": "Reference", +"class": "Cell", +"language": "GDScript", +"path": "res://tools/cell.gd" +}, { +"base": "Object", +"class": "Direction", +"language": "GDScript", +"path": "res://tools/direction.gd" +}, { +"base": "Reference", +"class": "Generator", +"language": "GDScript", +"path": "res://tools/generator.gd" +}, { +"base": "Reference", +"class": "Maze", +"language": "GDScript", +"path": "res://tools/maze.gd" +}, { +"base": "Reference", +"class": "MazePlayer", +"language": "GDScript", +"path": "res://tools/maze_player.gd" +}, { +"base": "Spatial", +"class": "Player", +"language": "GDScript", +"path": "res://entity/player.gd" +} ] +_global_script_class_icons={ +"AbstractScreen": "", +"Cell": "", +"Direction": "", +"Generator": "", +"Maze": "", +"MazePlayer": "", +"Player": "" +} + +[application] + +config/name="Ygdra" +run/main_scene="res://main.tscn" +config/icon="res://icon.png" + +[input] + +ui_accept={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777222,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_select={ +"deadzone": 0.5, +"events": [ ] +} +ui_cancel={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777220,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777224,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_focus_next={ +"deadzone": 0.5, +"events": [ ] +} +ui_focus_prev={ +"deadzone": 0.5, +"events": [ ] +} +ui_page_up={ +"deadzone": 0.5, +"events": [ ] +} +ui_page_down={ +"deadzone": 0.5, +"events": [ ] +} +ui_home={ +"deadzone": 0.5, +"events": [ ] +} +ui_end={ +"deadzone": 0.5, +"events": [ ] +} +ui_next={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777236,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_prev={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":4,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777235,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_menu={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null) + ] +} +ui_info={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777244,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} + +[layer_names] + +3d_physics/layer_1="wall" +3d_physics/layer_2="ground" +3d_physics/layer_3="player" + +[physics] + +common/enable_pause_aware_picking=true + +[rendering] + +quality/driver/driver_name="GLES2" +vram_compression/import_etc=true +vram_compression/import_etc2=false +environment/default_environment="res://default_env.tres" diff --git a/screen/abstract_screen.gd b/screen/abstract_screen.gd new file mode 100644 index 0000000..b539fa9 --- /dev/null +++ b/screen/abstract_screen.gd @@ -0,0 +1,5 @@ +class_name AbstractScreen +extends Node + +# Abstract screen. Only for definition of signals +signal next_screen(screen_name) diff --git a/screen/end_screen.gd b/screen/end_screen.gd new file mode 100644 index 0000000..e268ebb --- /dev/null +++ b/screen/end_screen.gd @@ -0,0 +1,25 @@ +extends AbstractScreen + +# Initialization +func init(lvl: Maze, pl: MazePlayer): + var has_won = lvl.at(pl.position.x, pl.position.y).feature == Cell.Feature.EXIT + if has_won: + $EndCondition.text = "Left the labyrinth." + else: + $EndCondition.text = "Rescued after using an emergency flare." + $NbChests.text = "Found " + str(pl.nb_chests_found) + " chests." + if has_won: + $NbSteps.text = "Reached the exit in " + str(pl.nb_steps) + " steps." + else: + $NbSteps.text = "Gave up after " + str(pl.nb_steps) + " steps." + $MapViewer.init(lvl, pl) + +func _process(_delta): + if Input.is_action_just_pressed("ui_accept"): + emit_signal("next_screen", "start") + if Input.is_action_just_pressed("ui_cancel"): + emit_signal("next_screen", "start") + if Input.is_action_just_pressed("ui_menu"): + emit_signal("next_screen", "start") + if Input.is_action_just_pressed("ui_info"): + emit_signal("next_screen", "start") diff --git a/screen/end_screen.tscn b/screen/end_screen.tscn new file mode 100644 index 0000000..2dd1cd4 --- /dev/null +++ b/screen/end_screen.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://screen/end_screen.gd" type="Script" id=1] +[ext_resource path="res://hud/map_viewer.tscn" type="PackedScene" id=2] +[ext_resource path="res://LibertinusSans-Regular.otf" type="DynamicFontData" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 30 +font_data = ExtResource( 3 ) + +[node name="EndScreen" type="Node"] +script = ExtResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_right = 1024.0 +margin_bottom = 600.0 +color = Color( 0.211765, 0.294118, 0.231373, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MapViewer" parent="." instance=ExtResource( 2 )] +margin_left = 424.0 +margin_right = 1024.0 +margin_bottom = 600.0 +show_unvisited = true + +[node name="EndCondition" type="Label" parent="."] +margin_right = 384.0 +margin_bottom = 64.0 +custom_fonts/font = SubResource( 1 ) +text = "EndCondition" +align = 1 +valign = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="NbSteps" type="Label" parent="."] +margin_top = 128.0 +margin_right = 384.0 +margin_bottom = 192.0 +custom_fonts/font = SubResource( 1 ) +text = "NbSteps" +align = 1 +valign = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="NbChests" type="Label" parent="."] +margin_top = 256.0 +margin_right = 384.0 +margin_bottom = 320.0 +custom_fonts/font = SubResource( 1 ) +text = "NbChests" +align = 1 +valign = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/screen/exploration_screen.gd b/screen/exploration_screen.gd new file mode 100644 index 0000000..21689f5 --- /dev/null +++ b/screen/exploration_screen.gd @@ -0,0 +1,101 @@ +extends AbstractScreen + +const Wall = preload("res://entity/wall.tscn") +const Chest = preload("res://entity/chest.tscn") + +# Member variables +var level: Maze = null +var player: MazePlayer = null +# Dictionary of feature to their 3D representations +var features = {} + +# Initialization +func init(lvl: Maze, pl: MazePlayer): + level = lvl + player = pl + +func _ready(): + # Create walls + for j in range(level.height): + for i in range(level.width): + place_walls(level.at(i, j), i, j) + place_feature(level.at(i, j), i, j) + # Place Entrance + $Root3D/Entrance.transform.origin = map_pos_to_3D_pos(level.entrance.x, level.entrance.y) + # Place Exit + $Root3D/Exit.transform.origin = map_pos_to_3D_pos(level.exit.x, level.exit.y) + # Place player + $Root3D/Player.teleport_at(map_pos_to_3D_pos(player.position.x, player.position.y)) + $Root3D/Player.turn_at(player.forward_dir) + # Update the level state + updateLevelState() + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + if (not $Root3D/Player.in_movement()) and (level.at(player.position.x, player.position.y).feature == Cell.Feature.EXIT): + emit_signal("next_screen", "end") + if Input.is_action_just_pressed("ui_menu"): + emit_signal("next_screen", "end") + if Input.is_action_just_pressed("ui_accept"): + emit_signal("next_screen", "map") + if not $Root3D/Player.in_movement(): + if Input.is_action_pressed("ui_up") and player.can_move_forward(level): + player.move_forward() + $Root3D/Player.move_forward() + updateLevelState() + elif Input.is_action_pressed("ui_down") and player.can_move_backward(level): + player.move_backward() + $Root3D/Player.move_backward() + updateLevelState() + elif Input.is_action_pressed("ui_left"): + player.turn_left() + $Root3D/Player.turn_left() + updateLevelState() + elif Input.is_action_pressed("ui_right"): + player.turn_right() + $Root3D/Player.turn_right() + updateLevelState() + +func map_pos_to_3D_pos(i, j): + return Vector3(-(level.width - 1) + 2 * i, 0, -(level.height - 1) + 2 * j) + +func place_walls(c: Cell, i, j): + new_wall(c, Direction.NORTH, i, j) + new_wall(c, Direction.SOUTH, i, j) + new_wall(c, Direction.EAST, i, j) + new_wall(c, Direction.WEST, i, j) + +func new_wall(c: Cell, dir, i, j): + # Compute position and rotation of the element + var offset = Vector3(0.9 * Direction.offset_x(dir), 0, 0.9 * Direction.offset_y(dir)) + var wall_position = map_pos_to_3D_pos(i, j) + offset + var wall_angle = PI/2 * Direction.offset_x(dir) + if c.get_edge(dir) == Cell.Edge.WALL: + var wall = Wall.instance() + wall.translate_object_local(wall_position) + wall.rotate_object_local(Vector3.UP, wall_angle) + $Root3D/Walls.add_child(wall) + +func place_feature(c: Cell, i, j): + if c.feature == Cell.Feature.CHEST: + new_chest(c, i, j) + +func new_chest(c: Cell, i, j): + var chest = Chest.instance() + chest.translate_object_local(map_pos_to_3D_pos(i, j)) + $Root3D/Chests.add_child(chest) + features[Vector2(i, j)] = chest + +func updateHUD(): + $HUD/NbSteps.text = "Steps: " + str(player.nb_steps) + $HUD/NbChests.text = "Chests: " + str(player.nb_chests_found) + +func updateLevelState(): + level.visit(player.position) + var pos = player.position + if (level.at(pos.x, pos.y).feature == Cell.Feature.CHEST): + player.open_chest() + level.at(pos.x, pos.y).feature = Cell.Feature.NONE + features.get(pos).queue_free() + features.erase(pos) + updateHUD() diff --git a/screen/exploration_screen.tscn b/screen/exploration_screen.tscn new file mode 100644 index 0000000..7da5250 --- /dev/null +++ b/screen/exploration_screen.tscn @@ -0,0 +1,95 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://screen/exploration_screen.gd" type="Script" id=1] +[ext_resource path="res://entity/player.tscn" type="PackedScene" id=2] +[ext_resource path="res://entity/ground.tscn" type="PackedScene" id=3] +[ext_resource path="res://LibertinusSans-Regular.otf" type="DynamicFontData" id=4] +[ext_resource path="res://entity/exit.tscn" type="PackedScene" id=5] +[ext_resource path="res://entity/entrance.tscn" type="PackedScene" id=6] +[ext_resource path="res://hud/button-up.svg" type="Texture" id=7] +[ext_resource path="res://hud/button-down.svg" type="Texture" id=8] + +[sub_resource type="DynamicFont" id=1] +size = 24 +font_data = ExtResource( 4 ) + +[sub_resource type="DynamicFont" id=2] +size = 24 +font_data = ExtResource( 4 ) + +[node name="ExplorationScreen" type="Node"] +script = ExtResource( 1 ) + +[node name="Root3D" type="Spatial" parent="."] + +[node name="Player" parent="Root3D" instance=ExtResource( 2 )] + +[node name="Ground" parent="Root3D" instance=ExtResource( 3 )] + +[node name="Entrance" parent="Root3D" instance=ExtResource( 6 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 5 ) + +[node name="Exit" parent="Root3D" instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 3 ) + +[node name="Walls" type="Spatial" parent="Root3D"] + +[node name="Chests" type="Spatial" parent="Root3D"] + +[node name="HUD" type="Node" parent="."] + +[node name="NbSteps" type="Label" parent="HUD"] +margin_left = 16.0 +margin_top = 528.0 +margin_right = 97.0 +margin_bottom = 551.0 +custom_fonts/font = SubResource( 1 ) +text = "NbSteps" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="NbChests" type="Label" parent="HUD"] +margin_left = 16.0 +margin_top = 560.0 +margin_right = 97.0 +margin_bottom = 583.0 +custom_fonts/font = SubResource( 2 ) +text = "NbChests" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Help" type="Node" parent="HUD"] + +[node name="Button-Stop" type="Sprite" parent="HUD/Help"] +position = Vector2( 855.5, 568 ) +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 7 ) + +[node name="Stop" type="Label" parent="HUD/Help"] +margin_left = 887.5 +margin_top = 552.0 +margin_right = 1009.5 +margin_bottom = 580.0 +custom_fonts/font = SubResource( 2 ) +text = "Leave Game" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button-Map" type="Sprite" parent="HUD/Help"] +position = Vector2( 856, 503.5 ) +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 8 ) + +[node name="Map" type="Label" parent="HUD/Help"] +margin_left = 888.0 +margin_top = 487.5 +margin_right = 1010.0 +margin_bottom = 515.5 +custom_fonts/font = SubResource( 2 ) +text = "Show Map" +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/screen/map_screen.gd b/screen/map_screen.gd new file mode 100644 index 0000000..bd5e80a --- /dev/null +++ b/screen/map_screen.gd @@ -0,0 +1,23 @@ +extends AbstractScreen + +# Ready : set the colors of caption according to the used in MapViewer +func _ready(): + $Captions/Entrance.color = $MapViewer.entrance_color + $Captions/Exit.color = $MapViewer.exit_color + $Captions/Path.color = $MapViewer.ground_visited + $Captions/Player.color = $MapViewer.player_color + $Captions/Chest.color = $MapViewer.chest_color + +# Initialization +func init(lvl: Maze, pl: MazePlayer): + $MapViewer.init(lvl, pl) + +func _process(_delta): + if Input.is_action_just_pressed("ui_accept"): + emit_signal("next_screen", "exploration") + if Input.is_action_just_pressed("ui_cancel"): + emit_signal("next_screen", "exploration") + if Input.is_action_just_pressed("ui_menu"): + emit_signal("next_screen", "exploration") + if Input.is_action_just_pressed("ui_info"): + emit_signal("next_screen", "exploration") diff --git a/screen/map_screen.tscn b/screen/map_screen.tscn new file mode 100644 index 0000000..721aba5 --- /dev/null +++ b/screen/map_screen.tscn @@ -0,0 +1,119 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://screen/map_screen.gd" type="Script" id=1] +[ext_resource path="res://hud/map_viewer.tscn" type="PackedScene" id=2] +[ext_resource path="res://LibertinusSans-Regular.otf" type="DynamicFontData" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 24 +font_data = ExtResource( 3 ) + +[node name="MapScreen" type="Node2D"] +script = ExtResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_right = 1024.0 +margin_bottom = 600.0 +color = Color( 0.211765, 0.294118, 0.231373, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="MapViewer" parent="." instance=ExtResource( 2 )] +margin_left = 212.0 +margin_right = 812.0 +margin_bottom = 600.0 + +[node name="Captions" type="Node" parent="."] + +[node name="Entrance" type="ColorRect" parent="Captions"] +margin_left = 24.0 +margin_top = 48.0 +margin_right = 40.0 +margin_bottom = 64.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="EntranceLbl" type="Label" parent="Captions"] +margin_left = 56.0 +margin_top = 40.0 +margin_right = 178.0 +margin_bottom = 68.0 +custom_fonts/font = SubResource( 1 ) +text = "Entrance" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Exit" type="ColorRect" parent="Captions"] +margin_left = 24.0 +margin_top = 88.0 +margin_right = 40.0 +margin_bottom = 104.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ExitLbl" type="Label" parent="Captions"] +margin_left = 56.0 +margin_top = 80.0 +margin_right = 178.0 +margin_bottom = 108.0 +custom_fonts/font = SubResource( 1 ) +text = "Exit" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Path" type="ColorRect" parent="Captions"] +margin_left = 24.0 +margin_top = 128.0 +margin_right = 40.0 +margin_bottom = 144.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PathLbl" type="Label" parent="Captions"] +margin_left = 56.0 +margin_top = 120.0 +margin_right = 178.0 +margin_bottom = 148.0 +custom_fonts/font = SubResource( 1 ) +text = "Path" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Player" type="Polygon2D" parent="Captions"] +position = Vector2( 13.3333, 8.00017 ) +scale = Vector2( 0.666667, 0.999999 ) +polygon = PoolVector2Array( 16, 160, 40, 168, 16, 176 ) + +[node name="PlayerLbl" type="Label" parent="Captions"] +margin_left = 56.0 +margin_top = 160.0 +margin_right = 178.0 +margin_bottom = 188.0 +custom_fonts/font = SubResource( 1 ) +text = "Player" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Chest" type="Polygon2D" parent="Captions"] +position = Vector2( 18.6667, 74.6667 ) +scale = Vector2( 0.666667, 0.666667 ) +polygon = PoolVector2Array( 16, 200, 8, 208, 8, 216, 16, 224, 24, 224, 32, 216, 32, 208, 24, 200 ) + +[node name="ChestLbl" type="Label" parent="Captions"] +margin_left = 56.0 +margin_top = 200.0 +margin_right = 178.0 +margin_bottom = 228.0 +custom_fonts/font = SubResource( 1 ) +text = "Chest" +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/screen/start_screen.gd b/screen/start_screen.gd new file mode 100644 index 0000000..e15d955 --- /dev/null +++ b/screen/start_screen.gd @@ -0,0 +1,8 @@ +extends AbstractScreen + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + if Input.is_action_just_pressed("ui_menu"): + get_tree().notification(MainLoop.NOTIFICATION_WM_QUIT_REQUEST) + if Input.is_action_just_pressed("ui_accept"): + emit_signal("next_screen", "exploration") diff --git a/screen/start_screen.tscn b/screen/start_screen.tscn new file mode 100644 index 0000000..3d512ce --- /dev/null +++ b/screen/start_screen.tscn @@ -0,0 +1,231 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://LibertinusSans-Regular.otf" type="DynamicFontData" id=1] +[ext_resource path="res://screen/start_screen.gd" type="Script" id=2] +[ext_resource path="res://hud/joypad.svg" type="Texture" id=3] +[ext_resource path="res://hud/button-up.svg" type="Texture" id=4] +[ext_resource path="res://hud/button-down.svg" type="Texture" id=5] + +[sub_resource type="DynamicFont" id=1] +size = 80 +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=2] +size = 26 +font_data = ExtResource( 1 ) + +[node name="StartScreen" type="Node"] +script = ExtResource( 2 ) + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0.211765, 0.294118, 0.231373, 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Message" type="Label" parent="."] +anchor_right = 1.0 +margin_bottom = 92.0 +custom_fonts/font = SubResource( 1 ) +text = "Ygdra" +align = 1 +autowrap = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Controls" type="Control" parent="."] +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +margin_left = -512.0 +margin_top = -280.0 +margin_right = 512.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Joypad" type="Sprite" parent="Controls"] +position = Vector2( 512, 151 ) +texture = ExtResource( 3 ) + +[node name="Label" type="Label" parent="Controls"] +margin_left = 264.0 +margin_top = 93.0 +margin_right = 324.0 +margin_bottom = 128.0 +custom_fonts/font = SubResource( 2 ) +text = "[UP]" +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label2" type="Label" parent="Controls"] +margin_left = 240.0 +margin_top = 123.0 +margin_right = 324.0 +margin_bottom = 158.0 +custom_fonts/font = SubResource( 2 ) +text = "[LEFT]" +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label3" type="Label" parent="Controls"] +margin_left = 224.0 +margin_top = 152.0 +margin_right = 323.0 +margin_bottom = 187.0 +custom_fonts/font = SubResource( 2 ) +text = "[DOWN]" +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label4" type="Label" parent="Controls"] +margin_left = 224.0 +margin_top = 183.0 +margin_right = 323.0 +margin_bottom = 218.0 +custom_fonts/font = SubResource( 2 ) +text = "[RIGHT]" +align = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label5" type="Label" parent="Controls"] +margin_left = 696.0 +margin_top = 93.0 +margin_right = 759.0 +margin_bottom = 128.0 +custom_fonts/font = SubResource( 2 ) +text = "[ESC]" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label6" type="Label" parent="Controls"] +margin_left = 696.0 +margin_top = 123.0 +margin_right = 856.0 +margin_bottom = 158.0 +custom_fonts/font = SubResource( 2 ) +text = "[BACKSPACE]" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label7" type="Label" parent="Controls"] +margin_left = 696.0 +margin_top = 152.0 +margin_right = 795.0 +margin_bottom = 187.0 +custom_fonts/font = SubResource( 2 ) +text = "[SPACE]" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label8" type="Label" parent="Controls"] +margin_left = 696.0 +margin_top = 183.0 +margin_right = 795.0 +margin_bottom = 218.0 +custom_fonts/font = SubResource( 2 ) +text = "[F1]" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Infos" type="Control" parent="."] +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +margin_top = -196.0 +margin_bottom = 84.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Goal" type="Label" parent="Infos"] +anchor_right = 1.0 +margin_bottom = 99.0 +custom_fonts/font = SubResource( 2 ) +text = "You accidentally stepped on a yellow plate that teleported you into a mysterious labyrinth. +Find the purple plate to exit it. +Someone hid chests there, can you find them too ?" +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Buttons" type="Control" parent="Infos"] +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -152.0 +margin_bottom = -16.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Info-Start" type="Control" parent="Infos/Buttons"] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -128.0 +margin_right = 128.0 +margin_bottom = 128.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Start" type="Label" parent="Infos/Buttons/Info-Start"] +margin_left = 96.0 +margin_top = 8.0 +margin_right = 221.0 +margin_bottom = 43.0 +custom_fonts/font = SubResource( 2 ) +text = "Start Game" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button-Start" type="Sprite" parent="Infos/Buttons/Info-Start"] +position = Vector2( 63.5, 23.5 ) +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 5 ) + +[node name="Info-Stop" type="Control" parent="Infos/Buttons"] +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +margin_left = -128.0 +margin_top = -128.0 +margin_right = 128.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Stop" type="Label" parent="Infos/Buttons/Info-Stop"] +margin_left = 96.0 +margin_top = 64.0 +margin_right = 217.0 +margin_bottom = 99.0 +custom_fonts/font = SubResource( 2 ) +text = "Quit Game" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button-Stop" type="Sprite" parent="Infos/Buttons/Info-Stop"] +position = Vector2( 63.5, 79.5 ) +scale = Vector2( 0.5, 0.5 ) +texture = ExtResource( 4 ) diff --git a/tools/cell.gd b/tools/cell.gd new file mode 100644 index 0000000..8f49312 --- /dev/null +++ b/tools/cell.gd @@ -0,0 +1,98 @@ +class_name Cell +extends Reference + +# Abstract cell of labyrinth +# Type of floor +enum Floor { UNKNOWN, PATH, WALL } + +# Edge kind +enum Edge { WALL, NONE, DOOR } + +# Feature kind +enum Feature { NONE, EVENT, ENTRANCE, EXIT, CHEST, MINE_POINT, TAKE_POINT, CHOP_POINT, HARVEST_POINT } + +### +# A cell has : +# - a kind of floor indicating if it is a path, a wall, ... +var floor_kind = Floor.UNKNOWN +# - a list of edges indicating to which adjacent cell it is connected +var edges = [Edge.WALL, Edge.WALL, Edge.WALL, Edge.WALL] +# - an optional feature : entrance, exit, ... +var feature = Feature.NONE +# - a flag indicating if the cell was visited by the player +var visited = false + +### +# Edge-related functions + +# Set an edge +func set_edge(dir, val): + edges[dir] = val +# Get an edge +func get_edge(dir): + return edges[dir] + +# Deadend +func is_deadend(): + # if there are 3 walls among the edges, the cell is a deadend + var count = 0 + for e in edges: + if e == Edge.WALL: + count += 1 + return count == 3 + +# Utilities for labyrinth-building (transformations) +# Identity : do nothing +func identity(): + pass + +# Horizontal flip : exchange the EAST/WEST edges +func horizontal_flip(): + var tmp = edges[Direction.WEST] + edges[Direction.WEST] = edges[Direction.EAST] + edges[Direction.EAST] = tmp + +# Vertical flip : exchange the NORTH/SOUTH edges +func vertical_flip(): + var tmp = edges[Direction.SOUTH] + edges[Direction.SOUTH] = edges[Direction.NORTH] + edges[Direction.NORTH] = tmp + +# Rotation 180° = horizontal flip + vertical flip +func rotate_180(): + self.horizontal_flip() + self.vertical_flip() + +# Rotation 90° in trigonometric direction (counter-clockwise) +func rotate_90(): + var tmp = edges[Direction.NORTH] + edges[Direction.NORTH] = edges[Direction.EAST] + edges[Direction.EAST] = edges[Direction.SOUTH] + edges[Direction.SOUTH] = edges[Direction.WEST] + edges[Direction.WEST] = tmp + +# Rotation 270° in trigonometric direction (counter-clockwise), or 90° clockwise +func rotate_270(): + var tmp = edges[Direction.NORTH] + edges[Direction.NORTH] = edges[Direction.WEST] + edges[Direction.WEST] = edges[Direction.SOUTH] + edges[Direction.SOUTH] = edges[Direction.EAST] + edges[Direction.EAST] = tmp + +# Transposition (mirror -45°) : exchange NORTH/WEST, SOUTH/EAST +func transpose(): + var tmp = edges[Direction.NORTH] + edges[Direction.NORTH] = edges[Direction.WEST] + edges[Direction.WEST] = tmp + tmp = edges[Direction.SOUTH] + edges[Direction.SOUTH] = edges[Direction.EAST] + edges[Direction.EAST] = tmp + +# Anti-transposition (mirror 45°): exchange NORTH/EAST, SOUTH/WEST +func antitranspose(): + var tmp = edges[Direction.NORTH] + edges[Direction.NORTH] = edges[Direction.EAST] + edges[Direction.EAST] = tmp + tmp = edges[Direction.SOUTH] + edges[Direction.SOUTH] = edges[Direction.WEST] + edges[Direction.WEST] = tmp diff --git a/tools/direction.gd b/tools/direction.gd new file mode 100644 index 0000000..86b1c06 --- /dev/null +++ b/tools/direction.gd @@ -0,0 +1,105 @@ +class_name Direction +extends Object + +# Direction enum, used to refer to the cell edges +enum { NORTH = 0, SOUTH = 1, EAST = 2, WEST = 3 } + +# Get the opposite direction +static func opposite(d): + match d: + NORTH: + return SOUTH + SOUTH: + return NORTH + EAST: + return WEST + WEST: + return EAST + +# Get the offset (X) +static func offset_x(d): + match d: + NORTH: + return 0 + SOUTH: + return 0 + EAST: + return 1 + WEST: + return -1 + +# Get the offset (Y 2D, Z 3D) +static func offset_y(d): + match d: + NORTH: + return -1 + SOUTH: + return 1 + EAST: + return 0 + WEST: + return 0 + +# Get the offset as a vector +static func offset(d): + return Vector2(offset_x(d), offset_y(d)) + + +# Edge offset (from), as unit vectors +static func edge_from(d): + match d: + NORTH: + return Vector2(0, 0) + SOUTH: + return Vector2(0, 1) + EAST: + return Vector2(1, 0) + WEST: + return Vector2(0, 0) + +static func edge_to(d): + match d: + NORTH: + return Vector2(1, 0) + SOUTH: + return Vector2(1, 1) + EAST: + return Vector2(1, 1) + WEST: + return Vector2(0, 1) + +# Rotate left +static func rotate_left(d): + match d: + NORTH: + return WEST + SOUTH: + return EAST + EAST: + return NORTH + WEST: + return SOUTH + +# Rotate right +static func rotate_right(d): + match d: + NORTH: + return EAST + SOUTH: + return WEST + EAST: + return SOUTH + WEST: + return NORTH + +# To string +static func string_of(d): + match d: + NORTH: + return "NORTH" + SOUTH: + return "SOUTH" + EAST: + return "EAST" + WEST: + return "WEST" diff --git a/tools/generator.gd b/tools/generator.gd new file mode 100644 index 0000000..204aad9 --- /dev/null +++ b/tools/generator.gd @@ -0,0 +1,118 @@ +class_name Generator +extends Reference + +# Maze carver position +class MazeCarverPosition: + var x: int = 0 + var y: int = 0 + var available_directions: Array = [Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST] + + func _init(pos_x: int, pos_y: int): + x = pos_x + y = pos_y + available_directions.shuffle() + + func has_next_direction(): + return not available_directions.empty() + + func next_direction(): + return available_directions.pop_back() + +# Generate a new map +# Each map is a array indicating the features of the map +func generate_map(width: int, height: int): + var maze = null + # A correct maze needs at least two events to place the entrance and exit + var events = [] + while events.size() < 2: + maze = Maze.new(width, height) + var start_x = randi() % width + var start_y = randi() % height + carve_maze(maze, start_x, start_y, true) + add_events(maze) + events = maze.events + # Shuffle the event list + maze.events.shuffle() + # Set the entrance and exit + set_entrance(maze) + set_exit(maze) + # Set the chests + set_chests(maze) + return maze + +# Carve a maze (iterative) +func carve_maze(maze: Maze, start_x: int, start_y: int, loop: bool): + # Starting position + var start_pos: MazeCarverPosition = MazeCarverPosition.new(start_x, start_y) + # Position pile + var carver = [start_pos] + # While there is a pos in carver + while not carver.empty(): + var pos: MazeCarverPosition = carver.back() + # Set the current cell floor kind to PATH + maze.at(pos.x, pos.y).floor_kind = Cell.Floor.PATH + # If there are available directions, pick the first, and continue from there + if pos.has_next_direction(): + # Get the next direction + var dir = pos.next_direction() + # Position of next cell + var nx = pos.x + Direction.offset_x(dir) + var ny = pos.y + Direction.offset_y(dir) + # if the next cell is inside the maze, and has an unknown floor kind, + # remove the wall between the cells, and continue from next cell. + if maze.is_inside(nx, ny) and (maze.at(nx, ny).floor_kind == Cell.Floor.UNKNOWN): + maze.at(pos.x, pos.y).set_edge(dir, Cell.Edge.NONE) + maze.at(nx, ny).set_edge(Direction.opposite(dir), Cell.Edge.NONE) + # Push the new position into the carver + var new_pos: MazeCarverPosition = MazeCarverPosition.new(nx, ny) + carver.push_back(new_pos) + # if the next cell is inside the maze and has a path floor kind, + # if the loop is true and at a 1/20 chance, remove the wall, + # but don't continue on the next cell + elif maze.is_inside(nx, ny) and (maze.at(nx, ny).floor_kind == Cell.Floor.PATH) and loop and (randi() % 20 < 1): + maze.at(pos.x, pos.y).set_edge(dir, Cell.Edge.NONE) + maze.at(nx, ny).set_edge(Direction.opposite(dir), Cell.Edge.NONE) + else: + # do nothing + pass + else: + # No new available position : pop pos from carver + carver.pop_back() + +# Add events at the deadends +func add_events(maze: Maze): + for j in range(maze.height): + for i in range(maze.width): + if maze.at(i, j).is_deadend() and (maze.at(i, j).feature == Cell.Feature.NONE): + maze.at(i, j).feature = Cell.Feature.EVENT + maze.events.push_back(Vector2(i, j)) + +# Choose an event to set as the entrance +func set_entrance(maze: Maze): + var pos: Vector2 = maze.events.pop_back() + maze.at(pos.x, pos.y).feature = Cell.Feature.ENTRANCE + maze.entrance = pos + +# Set the exit on the event that is farthest from the entrance +func set_exit(maze: Maze): + var distance = 0 + var exit = maze.entrance + for e in maze.events: + var d = maze.entrance.distance_squared_to(e) + if d > distance: + distance = d + exit = e + maze.at(exit.x, exit.y).feature = Cell.Feature.EXIT + maze.exit = exit + +# Set chests on a few events +func set_chests(maze: Maze): + var max_nb_chests = sqrt(maze.width * maze.height) + var count = 0 + for e in maze.events: + if maze.at(e.x, e.y).feature == Cell.Feature.EVENT: + count += 1 + maze.at(e.x, e.y).feature = Cell.Feature.CHEST + if count >= max_nb_chests: + break + maze.nb_chests = count diff --git a/tools/maze.gd b/tools/maze.gd new file mode 100644 index 0000000..bac7e14 --- /dev/null +++ b/tools/maze.gd @@ -0,0 +1,154 @@ +class_name Maze +extends Reference + +# Represents an area of cell +var width: int = 0 +var height: int = 0 +var cells = [] +var events = [] +var entrance = Vector2() +var exit = Vector2() +var nb_chests: int = 0 +# For submazes, as they modify their parent maze +var parent: Maze = null # Submaze parent maze +var offset_x = 0 +var offset_y = 0 + +# Initialize a maze +func _init(w: int, h: int): + assert(w > 0) + assert(h > 0) + width = w + height = h + cells.clear() + cells.resize(w * h) + for i in range(w * h): + cells[i] = Cell.new() + +# Initialize a submaze from a parent maze. +func init_from(w: int, h: int, that: Maze, x: int, y: int): + assert(w > 0) + assert(h > 0) + width = w + height = h + parent = that + offset_x = x + offset_y = y + +# Get the index for the cell at position (x,y) +func index(x: int, y: int): + return x + y * width + +# Get the cell at the position (x,y) +func at(x: int, y: int): + if parent == null: + return cells[index(x, y)] + else: + parent.at(x + offset_x, y + offset_y) + +# Check if a position is inside the area +func is_inside(x: int, y: int): + return (x >= 0) and (x < width) and (y >= 0) and (y < height) + +# Get a submaze of this maze. +# The submaze if a view of this maze, so a modification of the submaze cells modify this maze. +func submaze(x: int, y: int, w: int, h: int): + assert(x > 0) + assert(y > 0) + assert((x + w) <= width) + assert((y + h) <= height) + var ret = load("res://tools/maze.gd").new() + ret.init_from(w, h, self, x, y) + return ret + +# Transformations +# Identity : do nothing +func identity(_x: int = 0, _y: int = 0, _w: int = width, _h: int = height): + pass + +# Horizontal flip +func horizontal_flip(x: int = 0, y: int = 0, w: int = width, h: int = height): + if parent == null: + for j in range(0, h): + for i in range(0, w/2): + var idx_cell = index(x + i, y + j) + var idx_other = index(x + w - 1 - i, y + j) + var cell = cells[idx_cell] + cells[idx_cell] = cells[idx_other] + cells[idx_other] = cell + for j in range(0, h): + for i in range(0, w): + var idx_cell = index(x + i, y + j) + cells[idx_cell].horizontal_flip() + else: + parent.horizontal_flip(offset_x + x, offset_y + y, w, h) + +# Vertical flip +func vertical_flip(x: int = 0, y: int = 0, w: int = width, h: int = height): + if parent == null: + for j in range(0, h/2): + for i in range(0, w): + var idx_cell = index(x + i, y + j) + var idx_other = index(x + i, y + h - 1 - j) + var cell = cells[idx_cell] + cells[idx_cell] = cells[idx_other] + cells[idx_other] = cell + for j in range(0, h): + for i in range(0, w): + var idx_cell = index(x + i, y + j) + cells[idx_cell].vertical_flip() + else: + parent.vertical_flip(offset_x + x, offset_y + y, w, h) + +# Rotation 180° = horizontal flip + vertical flip +func rotate_180(x: int = 0, y: int = 0, w: int = width, h: int = height): + self.horizontal_flip(x, y, w, h) + self.vertical_flip(x, y, w, h) + +# Rotation 90° in trigonometric direction (counter-clockwise) +func rotate_90(): + # TODO + pass + +# Rotation 270° in trigonometric direction (counter-clockwise), or 90° clockwise +func rotate_270(): + # TODO + pass + +# Transposition (mirror -45°) +func transpose(x: int = 0, y: int = 0, w: int = width, h: int = height): + if parent == null: + for j in range(0, h): + for i in range(j + 1, w): + var idx_cell = index(x + i, y + j) + var idx_other = index(y + j, x + i) + var cell = cells[idx_cell] + cells[idx_cell] = cells[idx_other] + cells[idx_other] = cell + for j in range(0, h): + for i in range(0, w): + var idx_cell = index(x + i, y + j) + cells[idx_cell].transpose() + else: + parent.transpose(offset_x + x, offset_y + y, w, h) + +# Anti-transposition (mirror 45°) +func antitranspose(x: int = 0, y: int = 0, w: int = width, h: int = height): + if parent == null: + for j in range(0, h): + for i in range(0, w - 1 - j): + var idx_cell = index(x + i, y + j) + var idx_other = index(y + h - 1 - j, x + w - 1 - i) + var cell = cells[idx_cell] + cells[idx_cell] = cells[idx_other] + cells[idx_other] = cell + for j in range(0, h): + for i in range(0, w): + var idx_cell = index(x + i, y + j) + cells[idx_cell].antitranspose() + else: + parent.antitranspose(offset_x + x, offset_y + y, w, h) + +# Player-interaction functions +func visit(pos: Vector2): + at(pos.x, pos.y).visited = true diff --git a/tools/maze_player.gd b/tools/maze_player.gd new file mode 100644 index 0000000..7dc4faa --- /dev/null +++ b/tools/maze_player.gd @@ -0,0 +1,40 @@ +class_name MazePlayer +extends Reference + +# Player in maze coordinates +var position = Vector2.ZERO +var forward_dir = Direction.NORTH +var nb_steps = 0 +var nb_chests_found = 0 + +func teleport_at(pos: Vector2): + position = pos + +func turn_at(dir): + forward_dir = dir + +func move_forward(): + position += Direction.offset(forward_dir) + nb_steps += 1 + +func move_backward(): + position += Direction.offset(Direction.opposite(forward_dir)) + nb_steps += 1 + +func turn_left(): + forward_dir = Direction.rotate_left(forward_dir) + +func turn_right(): + forward_dir = Direction.rotate_right(forward_dir) + +# Check if a player can move forward +func can_move_forward(level: Maze): + return level.at(position.x, position.y).get_edge(forward_dir) != Cell.Edge.WALL + +# Check if a player can move backward +func can_move_backward(level: Maze): + return level.at(position.x, position.y).get_edge(Direction.opposite(forward_dir)) != Cell.Edge.WALL + +# Find a chest +func open_chest(): + nb_chests_found += 1