From 807656b1129b624c4f2d0d10c6c514e4ef50ab93 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 20 Feb 2025 10:11:45 +0100 Subject: [PATCH] Implemented adding rooms to entrance rooms that didn't have an adjacent non entrance room. --- .../DungeonMapConsolePrinter/Program.cs | 4 +- .../Debug/net9.0/DungeonMapConsolePrinter.dll | Bin 6144 -> 6144 bytes .../Debug/net9.0/DungeonMapConsolePrinter.exe | Bin 145920 -> 145920 bytes .../bin/Debug/net9.0/DungeonMapGenerator.dll | Bin 30208 -> 30720 bytes .../DungeonMapGenerator/DungeonGenerator.cs | 74 ++++++++++-------- .../DungeonMapGenerator/DungeonMap.cs | 8 ++ .../netstandard2.0/DungeonMapGenerator.dll | Bin 30208 -> 30720 bytes 7 files changed, 51 insertions(+), 35 deletions(-) diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs index 17aae16..ea38424 100644 --- a/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs +++ b/DungeonMapGenerator/DungeonMapConsolePrinter/Program.cs @@ -13,8 +13,8 @@ class Program var generator = new DungeonGenerator(); // Call the method you want to run - int width = 30; - int height = 20; + int width = 100; + int height = 50; DungeonMap map = generator.GenerateDungeon(width, height, 5); DungeonLockPopulator.PopulateLocksOfDungeon(map); DungeonMapSerializer.SerializeToFile(map, SAVED_DUNGEONS_PATH, $"{DUNGEON_NAME} {width}x{height}" ); diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapConsolePrinter.dll index 8cacfcc19fc7ee4b0e0c26a4fff42c3462033cf6..c8b935dde2296f1dd133a469b5e82de5b5fbe369 100644 GIT binary patch delta 245 zcmZoLXfT-2!D1Pa_-|v+4Mvs}Zh5248B7}N0`DiKtbbZ@-)qjaCvE;VsTrFWaF#G? z7^GOFr5ajTm{=w!T38q*rzR#@TBM|y zz>vaV!H~v~%3uhjEf`D~EE$p+62WXEAS)HfP6CQq0M(@du{nb&P|O%8V+e*OK$#?< Oj1gE((q?v{pR54Ke@prR delta 245 zcmZoLXfT-2!Ln1lani<~8;mS+-0~uuGnh2k1=M!EcG+}gh4Y@*CC;o%{xWP{z*)km zkz$^hW|5L?l5AvRWRYr_YGG($Zee7ZVwz%VY-VPbl4hQ4nPP5fJlTd@hQ;)<&!5RL z+yMe9oY&kozg2UZ-+zLWe?v3hY8gD9BY&|Ely!A+EKJQktdwh zKZU`ZA(0`C!Ga-$A(_Dhh>d`x5s;tCU3Zsf!Kn<5Qxoz*a*l^ eVK4<_V+J!YOabaN2kHUIm;*`U?cYtAI9UKQR}#Yj diff --git a/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapConsolePrinter/bin/Debug/net9.0/DungeonMapGenerator.dll index 7e2e81e6637fd396d9a8b9f1b47b0f5132c401dc..c229425c6a498550673d72147b6ef39a312c5684 100644 GIT binary patch literal 30720 zcmeHwd3+qjmH+GRneLub>KSBN+*L(Hq)vH&pUcIXB8E?JzE;5KHfa}~jqK9$k&ss@eI+;Lme9ouh^kC?T zxesewo|xNrV5F2DE4urOxkKrpT%q8W(}VeRalDWoDWo^_?o1zYhx2W*Sa^ZQdV4p~ z7R{hrrlp?rTYHY?r6XE9(HJnM!k&FC?rB_Sa1qr@URQE6g5{Ubb4Y>bk3rYJl1cer z_3nX;!smnF+sm0VL{GCKrhXnJiUN1$HAH<=%U%jj6WKN8HsDP)a9cTltPD8dB0-t- z)sq{Le9}bMw-rmpAwVMA8DzMlMO-zXwHU6pVt&*GA&eV^otB^)>N^+#7fCprbxb#bOoVjHO(KI~bsKPR{pqt2 zv&AyqX^i|{GwNZibPCZ$izvdaC)+K05_fdRA>B9ya|q~xQx(1Ysu5jm}|%noKY!JS!99ve{f#Th(%5rDmxENi-G9rpU5q%xH3#R){Io zxF;40o(&`ePN4NU-O4};@USwFN$x@Kj!_dB7KZkd!7Mq!=9%c*3@8dn2dbKfvasPo z31-A_v$#beRTE^7b$$mbNEn&v0FnW60`ALEe0mwQu&}jp(P@YjIBVvCE6o7O!U-

=Zb&4k~}#YvlVC*atYoxxa`$&eFj zIBO)sPPoM)CzLd^VFJAj-=6ypeQFt`l{lEom~CotZM+g6fpxl(R)3N(4G{c@QMRk$vzJw-v!_2VV>$%;zXe^dp3VlN5;e{vXBTWWQVz9%>Ael}eVX~~y zjAOM#$cFXqMm@BGDvMCi`gtWLCb%yqp_Mcj-Hjq`at}0-zm?V=B9U3AX;ivh<=F_@8)(4|Ho&G(x)@xewlWVl1AxeKFTp*Qy$SMwhE0MJfeb2#rPHvloY%)R89rhqz4FXC8dme(( zB*DN;`H?uK+k8C-=@*y~n4nH+6pX`AEjy4?m&15;BNb4F8A4I14fu#|G)~1ub)#u2 zE~XpPr{a=<>B(SeF}Ng6%WcQqfs;s`)kNhH!fbHiRWOqFq*6>Z*qdWEdZnRBr91<< zw8<-l7pP^;6OfCi`^BaUM;ta!atEi+R8A0%0%i>=^W-X^7q&JnGR?E*A?`JNMtET| zc8Uv}SOy+9>sT2$r>uJ^SBrMujlprEZYM)=a^lH^lSn#_(+&G$56#+@6$rye*=bg? zF56-wxj2Mmo)bVitB64uE5f&rIq^H80X=gW*p*fyIiaVVIwu|wN0C99nXGr}*;12E zvL!`^Q}4vxmjMp}>y^J2f!G(V9AYDk!QjzE-OR?U(<>%Z?XOaCNd{9nn+#Z|p|o1>e4t9k zCBiHjv`#~twPYhzGA>cv%m7;s`y){`TA-b{?#1;>T%Ajy)R5hu3}xFW5q3gOu&F<@ z4xEBc*u4TB5ceE`ZwtF?0iuqBwTpeb6R`K3)!8=Tty@29CS#qyK{0cSGdBzfOm2_I ztxj>nu)x+#r>?>+4sLOfR=B||6u0+qV?nS>WLqhb3^nyT36EP+acgiIgj=%0Edg$@ zEywg_o90YweGIZ?cMGc&OV;QFn)Wy;k5{AO)#Nk@uf__m6nLeaRF&6sXSzt1jTC!e zhNUhjTq!hFZ@}K06uw+)n0}IbuY=EVWNLc)=XKENFCfWovL_|n~VL}w89HQCZ zxCc>H%!#f1_1SahLOc{%wy%~(3RxldD%5f}bFu{q+)A(k2|0DmJip%seqicQV>o*g z1)AE-!1S|PR%?t{Ez2RLyA|azEMBY%!))xIgh0z0WQ^J^CSgRfeUzP4iPbo%5+l4y z9Bp~k5MKcsM!>^P8lAzYt#sj|8o?9YZDwDjQ5Ld7D_Hv@R@m%@w-tS`GleNpHrf=; zMrTB`HtqpjWV4+H2?oQS7WJlI7Y=$3ZCuZ3xD<1G5tVzLm0Mot1 zenE|r3PZuqqMxDV81oCxIIBzG6Q$x|o*vsE(Frk7Z!VO2fmxVJx!YORg^hlu$%s8pKS(d&_IIDOKo0~c;#qpD?!usO>M!>_d#7Lc%V5Ll%^&p zk*aFJGeIZOBt9q9bS>Jzg46nRD%p^orz)6EL;nTpG@uT=m#V`)>KoZE-3T>h5a*f6 zx>PddGpKV?doI8r1qN_Vib12(2nJ*~s$R@+W+dUO8rzPd7t^^HAC_Ls^m&@j%%(l( zcLd1fOlPLzIm?;V`i)fbqU?OXBSGh){_`tcgi04V7pY3Ko!PBVX4mNfzb8$p(8ehfADGq$kr=Pgx0GVucS{2JS zr>*syspMjB98*rvS$u&ZS&TZ1oyDq7yVEYlRT+}zRI;POpxNoTz=(8!L5I_!7%Xv? zuyL8mr4W26{G@@&j`JJwAx+nX%|P(lrtA76S+d}o5Q_)s7OaIZWQW9gv2Uv^FNm)w zg9`x^Ww#_~9`2k>Jd#0R63%wjpsrA;HbG51BBTm6Q=zV?LD`u;)DL4Zara^lMdmlP zZs_~V+@D_&ZHUb~ckZT}u-6HyO^((1C>q5=gtab=U8`doh+=q=2zK6&62}%6$xtGk z2xZoS8}?{?>puvXeLrBn^&b>*65-4)=7gnG1nNM>37idLF~Hi9taIvG^z3#goWTkg zPKHf&N7Muq_J`ro%pNYlqGg{oc$MQQX%03lPADG8K-nfE;hS1QkS&Gf_pjH1vh|B<|JqpH$nhd53zm{0L2I_FJr&!~ z?;!)a=Eu@?x@fr0Q*;Jn7>;<5SGL5M26aXOvF=eOLm-s-m|b-;c1^zMyPf7nyLH(31wy#qdIT&SK7oCGqZh8tfS;F%&L4fU-qk;3#pv2yq;U<9Om=U#QgZdZ?jpvKnx9P?e`4yFAgL ztfq%m!{-qICC)ZUyZp_X|G^!Swa3T^8omPgXHSwJ;}wPNav!)M1Y9e>|L^C{rEr3&>`=8hxAP~ko5Wnz=sZMU z-VkU>1Z6EZxG?&Q9bjwmt78i??SzNBsSO$w$xV32#{xTmA@4$W>0U;afyv(JjrG~-@ zVkB@Tf?l$+R>sv*I(L%3nz4prPU_S~ORiVzmrl3Rsz-R+!}xk_%{FyLq+?Yp?pN!q zPOsF~eaX-NRJ%B?!*ekG8}!S+=I4XPpUxVB=k;I#$`K&J|BOJKux=Uw(PIWSfX5Rp zIAg|Ut^t13#xsB*ZPc(iVR}Q1AaGU-n=M16m#|oeBbMQg;ZD}+wUd=vVx=BN(ZUHX z;WPDY1{Rf#+8LCE@nm9N_#ggyRsW@RUT%-XC9K6j=QklF77WOll?(*Px@A;L20Pz~ zG93GkGh~u+8Y^_|XoAXbm`kb+^S%*>su^RiM*>&*Q*l@x#g=1KlY#g=VDTf|%PXL28*j5=t00`7A_av}5K!s3XNr_;f#gDPpq* zwI8!%hypn!7Blseta|m_1ORKi0`N#w0L)%5 zPBQ&H5RW6)L7JiFCVMzJq(OK=X%zZv{ysy45J#;`=g9|SvZ1=>i-S|r{!YDX+NFiNAqmnGZk%K?5k zKuP;@DA4icP@tae(2dj3l$ze_kU47}Wh1x+wHHos2~SIP2ANSJ!oD>*<)6jPs^+j^ zGhwR=56fUYcW@Hkqi4Nb2+w0v!E=8wxtR~!X$hU@U7^_wJhxL*j_lNOU7Y$Hso#*f z7#*tCHR-pyjGr(2=?!2Yk5N_s;bQ#$b4j)Tc-G9apYEPa4^QILb4isxqLh7l<79fc z6`!6UnQ@rEgbj+%V>`bs9_IJ5yFFPF^e&D;hYb-oG2*tjYR-U&HAMYE#F9x?r5 ze#~1b-s2VTRt6xp?Gs{aTqRuR5w`J>pa{ZS_X?kFUNItMC0VONAVOA0fvTqnyRb1| zIUg$mRvVOH2~wIs2{zy>@m9;Z(yO?i!Bo=8UL(hV&DceNZNhOfx1%U?2a@6y9BKR& za_*~T2C!T> z!6m#fWG8!B?Bq-rF-G__M6a!imB%c>@=%paGH|?p)mop7`FsI6CbzMP`{a3Yen;SO z)S1ivpmYyPuzsm^0lqC9>BQ*p(gR7=5+(v(0w|Wf4y#o&a=e6jPtjfYXW2LLVgKw3 z+Is*m&+FZ{fCR$Ns+78K1;!&$lFCBZ3T*2;)Ix~CoVpOM+@~U)scWH$;WV4oTDX`F zyt%p--usZh78>$wVIKNix(Ry4lZaEBp;WB+Y*Mn~|B4CTjwH;_Nwc%bC_Vvvz*ct0<}Ae#%*`lSnRfso@5DT#H)h@mAZCR! z@4}tv*^3aW7k`b~u+VpNMPYtO70P=6e9nZ~K-cW1iy*(|zf-h8WYRNdK#SuyEGOBB z6@7MAjEa}&G!~l5t|9s?KQ57YkohGWXcqIE=N}jRL`75!Q;m&jegGoL)U)wZ*vwYq zF+F$+VKyG#@Y&aOkaD5e6l^{mPDQe7C>4bggO+zD#cmDDH;&or$@G!$0df%{C8){{ zz^ULUr1f!v??R{#5LVUtFdp*B5ThN7zKeEH!J#?B{^Lj^kcMU4BuQ0ZyrsmUJ)9L@ zC^4`Wu&nYl(!#Ja;QlolSG&xu$a#-}oFHDA;%>sVE#t|Fp2=gzPzU>wen1Egm$Rv0 z#gcc2vb>9cuWgx$sl=Q;I^{f^VAL^V5ZQaGXQE$-{>7YCOSX!WY&^2Y5r~R0cSCH< zZR~?ol*2Fb$OO&KtISSBkt|$5$#^yZ)#3;Tb_I$wWNZD_1wzM3=a&vGUaRH^LN=D% zkSE8m6OJp`^bqDabQ&9?0Kc1{LWjv^(_W&iVM^;nsok{3>c<}h#lB$s>flP)hxp-bq;eb9<3bl;1t7YMQa z{uAo*N4BX8i~BK$YBpsHWlKH@ad0YyI~7ryia0tIadIkxH~2NJOtAhuiEf%od+TJx z1doG9d&lIWg~iuQMojQ{HqX{i!lL93Zy#vp*N{#z2D>6baLkXjlzpdTjE4~5w_I$z zm+xV9w2ilp)?%ENI_mryAhsN)oH0Y+upwRc1}&(sDk!?r{j7U_PYKpF)BPJj&9@cb z02vjPI8sGg^{LITuT!mgr>c7Za%FIh@ZgXND!0f9g~zkh{Ea~BOvGE2mmqXF{@>5 z*vxCg5_r`XCL*!c|fdzdNGICzU zV*#hga|C^tuE46LD@vxO>%1N@ntPa#Gp6!rRe*<9 zQqovcQrSS^5ty7=eacLthfWy#cb%?4|5kAS)cYs_fI2P{7wnNA7gM$#A>b?+bJO%_ zwgK;?)ED0mKPE5sl|Bl(6L$0LMwxcaZKYvUo`A-A@~bJ`+-%7C1)hO4&+|On0S-H2BjxhbY zN%SD%*~3IHd4J4s;i)mJ-?fug!D(>(Gylq6JsWV}0{D#>@%igU-9aYC2c+8Wi{29o zu_gRjTgrh3x4sG&SQCV#TX4Ms7X;*Ig9O#HO>tfMP6SuQvLN-?z-(MxhL{MS{)p<0 zNpH5VsxxU#h|{|y?X)9xNxHEPnxxZqG;Gq*&wCY?1I|1scAdXsT$+*l-(nc zjbZ1qq(EVukTP_$KnXlyVQ9ApbqKUR!dx0)2O+fZc=DO}YjB>tmNX3ZkoipfIC%63 z^eu~_IShfzb5X9h0FVL7&%qBJ2mc{5=GN2KA@y=v$`E+&M?aS1g_Kc&FxddDra}$n z8hpv7T5lcpxm@q9;JchQ(@g@sLF#Rxo9XI_Twq1$>WMB%FOl>ulHQM0qpyTH{U*|@ zCyoU!LwX1BCVdDPlSY$VI?Gvw^l&|=ACUB&(GAGw6Pu8BN&3z@E`1&HE9hL^cBDU* z^hZcF`l_`jG?&%|S0LSm)HFYbR<4<7i(iNI7g0`kBstxU)Gyr@831Ok$?5Spr!x}+ zA&34=B!7Q!0G!_t976gt@YLu=Nxu->kNg42chnt3ey3AJyB{}CR5-WAZ{Y8}1 z9m(4v^DMZg6kV&`h4lUOR-|d2(=LP4UrV}7uSpGJN&J&IJ5^sL7DIR>XsNLnzyhWs=19MY}&*TC~Y1CIi8-k!#g z(mnKJ^H=E68G&x2KS$4n47zbHm)%Tj>+$j>JvvW8&5jkeXaYwdT=qGX*>r4yf(D{i zI7D}P&@(6t)6YEUOe7YL&~FeVbG=b>S~x~gc65Lqi)O<0^klPw4u@BV8|X$vj$HOr zt0$bI2R-QaXm7ZY0`SXR)?B|QJd^$vo|vIAYdAccnh>Nh^yb*X@LYNrp%_EUgA?I} zv@ATbpu0S1ZvFJg6|{^O43y!;s>oW};z2h?=K~t{pzFb9 zE#2rrZx`r|9&~jggR%!bXt6*~d(iIi<-xV|n+ntc$``u0y_;!n@bX9(h1V&_2DFa& zsGMb)Knv^XBOWve$=1{J9&|%pH=u8?SM^@4^#Q8iz|cK(mG$z-2D;CKR#^KYSJLkU zQaam2|6YMcBb%tRTX8v>I2PGVX9T*9z7x44vW;%vsLH+-eSPF=`Zo_cNAHg8r0A8Z zy;S7Akv__JP(Yv!9@HYx^#a{ZcEbli`6hvsEW7C46{wze(MJ?Sk686|4Sm{!)wk=VIWj=gJ;;nc0cf5F{d4%K$o16hL4OH<8_-e@dRcO=m1VDbF{&O-W6V} z57HJ7dS5t5gS5+orYE0`4AILxXmRpKfcAONuh92lDtOTE13?<5qY9Fllc)PC(9a`z zszVUSR`;=JGBQHTJZN^^zeH}JJ`Y+Q{R^NcJ?QhvcLTCH{6f90(LnSdwR=!H`fOyB zj(N~K&2V&-e(6E$oJ6!h(XFZ;CA%X9YVn{miJ4rsjmvJPon|wj-2$nRc4=S|bWk8= zOD>fKx|N2sj;KpFdC?l3$l|2Mmj?xbWQhhi^zp9};Mt}4uTc{&? zjPzda`>ixfTOB=4VGlZ@ua2Iegg}bRNt!K?lI0{_>{0Hb_0f~G*n=W~Zlp^+$kx|K zPtg?~bcwM(dYZ2Epnm{#6ZLw~bF?iwK@%Qy%;=BaOt*T_ZoNNx3*9D=YW-Gvomcjt zejs`)y|bq56?DH>_EYWMkyoH^8r_KqQKy**{5AS+nDb8|HRz9mS&veUUM&4_l<8He z%6}OVnnC*#T`vr_jdw58K3kyf>?qNGSJKv31B`hBDPqu?{MC?6qkjzj$0@h2OWzIYdw{xYH1JKyD{fWG(LAeo zwUo9?TQ8k{MI==HQnfb09-v`K75=5ubJCVdl?K}5A>ydWK^nx9M$XSg8pf&DFXHt$ z|KhYu(jG~#mb72eoTNWTI*tB>6uT&m=`TS#le&=3!%qDZ@yoFrI+NUtQ?~%t(|f7C z;bn-N&srMYA+_$HWeo-Fd_EC>FSQ8eGT=W$J=(6w=cq%QW&I=lmcCT?BkI>a5&tDP zoJsx`l+0(9)Y>4mwotvXM%zM<80)k?`dX-0+aNRx!0jGw0pj9&w7sDJFkX*4ll+1< zN}msXAL+4%%~++FTUjV?6sgMeZLE(sip)1kKBxU5x~cX;%Fh<+FJ`x?Hh-$&!lpHRx$xLGvTqs?w;GgwXyy}l%V z7?jNoYm5(hb?aJ6J2V%;k}J*<5tkpP~|CaYh2B>Xbt{o1|O9P6Xn%NyofYy+2ABg8sk%698M z`cW7bD6Q#wRm~vyq6{#{-o~}N%qQkEtAsEY9F=|)>pJoCcbEWL;HusSCPNE z;VH|}zGGe<{EF7y@I3H8P5d1ES-1CzCf};93a_+RK?6TAHh>S06vvrckk{~b0H<3t zre_S#3%16+z<=CcrAm=LYpfF8vVFc?EN!hmBGIdjbtfLOah8SexM6;CT2D<#8|b1? zl+rX0`2}<_(ot$bIz}Bx%R+ff@DqZ6h2U=&{GEdTwBR2V{O1M#W#H5J-e5X_jr|qU`SgCISwxR*I34*j(#t6sYr}U2XCuWI@{sNn{B=mz3x_VPL<6xL(i>t! z+O71H*v-fviQS9z_Sk2UzCHFi?I2qG0rDS;{YdhL&Y1a+=VH`|Nt6?Tuk%^tQ#?VIga*{`$jvEOdrXFqEH*bZS8iz2EZ`nx~@ zQNw2?4M&T}ua6u>I+|qshr*mLP2Px93l^gM?x}&5w+m5-j&m~$e6B*OW8|6V7Nk0D z#i(nv4XIAOcw0`R?MQXH8jr>`+JRK3omc@i{OXNE%V-12-$f75Lo`#%Xv?*Y+8OO( z?MZEkewlui{wn>o`cwKp>sJ}i7+VAH3@i)o3hoUSf*%R~EcokS*qmqHZT`VrVO?W= z+*)VvwqI@sCU}*u{X8R4PZjeowuP95<2g;V!1;f(|AJ^nzNyML`2=xx%9+XBUX6&1 z=?pxwFwh$Vvys2?7Qi=kf;g29VqQXF_!#sMVhCsu_e<$pbdV0}hv*jlB)y=Y!gY`` z#w&5Z1J@y3ug3K{TyFsF>u~AFFTwpwxSqiEN?bptCxfq~XM#)UN4Wnec#f_z&(XVZ zt+&qMWcJ5^*K5DAE=AoZP>$wTt+{MqU`fY7JFU7hU*4J<>nf>Z`Za?-UMQGgyE`^M znk(nGxI+g^z56zd7xw4ff)H{s({(K6T-WgM4%aEJ z7`sGjPo-U|u*`j#C+Dt$J2W&tHj*FS?v517rQX8Mk>R{FCnO@WPrMDk{ZtWWNu}H? zF64{oQdePk`)F=R=$MTZZX78LuXhg(judj`5!KO3?T+Ov%KBoSD-Yj*s)aH)A~HxB z%h2g*qn4u7=XMv$#auzPCQ1^zwxP0HRP|PdwXBkx-H!U-8**l?x3w*dj>Xj?btA|rFZ@2owU1WgKB79 z@6MgHsk`UOO?}+1fPJ(-Umn;aX+IrdZ4C@yi5x`#hWxgxqh4yeGLKn4G9(pxhN*YMT- z`wyIt?;0D+7jQ(FFPF->!f>t#?Til%Q`!Lx! z$M~TG`C)d#go)BSHpUX=1!j@`f(u(5jbG56v+iph=epyAos}k7(AIukd(a#?HDhVM-Js#&6}VJV9*hU*c?2}&I9B7 z_Mv1$z65*9jgFj<(v2g)?esByuE6lPB^UTY?hqyyy#H5TG20H2D!rVYJq2kf-jE@j*O0!Yf4!{@EU`JHCQ$gSt6*fcpM|G^5Par z#RRZZwmeiFgwd9d_wMV$IOIy@-a>v?f$avq%Xgff2yLGFxPUPcyj}&Dw zJ1)?E^h}(jxNMa>%1)CGz@6cScDCdToEtdiXO4TBW2361``A!^th{>!MDE}X;uv_& z2usO;3Eaal&+_8%WDIn0{CuoZs!u6*nS7qMscUqUyxG z)=E+$5aL2eA}$Mh;`;@|I;upgrQYKHTw!D=H;U=y9z_>e!O+b4fh`rhNLZv`H=q_2 zk);-dy?7@N;|u3#=C{yMiLHo${dlUL&Q7DkU(kOPB0 zDO!c%e3rF~0-YZyl0=uIZYf_Tb#A$g8+(7+I#Q@8$Qvj;rxJ6iY-`A~qblOU z+aDTM+aT3yb+fcyDf61NuiVCdL~P*Ne9@&HXm_JKUfel;sPCv- zW4V6UV8pcZ;K&#uy72pf1?ey$Mktb+^6SP&MiG0HTRwoa`$(SS1UM=zlpY0ZzT#eK zD@1{tt!b^YfL4$^vpl7{#oEZ7O{W^i`#dTW%}3NuK9WrXQVx}=Yp~>ZWE)2VBSRH< z!$@v_!7Y^;g=T7Pt!EgARkhIvBS6D0&}Zj+Pk-%1ua1l$o?$c=MER{ziD${*I49jy+orJ z&E7E%XHekXyM|m0@Z?F~1`aB|skGzUKh}Gm8Zx9s1kP}nNb<*qM#qQ!V;1hLzY9`P zDh*6Nh+&GUK|T#kjqgF_txiXBBcmKe`rL9;5IoSHc0H0YIq;$GW7vk2ynS0&8LBJ{ z<;q^9Q4Pj>2X8>PY6Er;vop_b_`K2M-8DzmGP%y%R>?wnJ{H3>dHY2>c(Wxu)V@n9 zdRY!#P$;I*=WYTpDhS`PV2L_1QgjRK*@eaW@glZaBC9wKwaS;eab(51;I3ECc3>-v z+mA3~J@z&jqn_PKH!Wr~d>MWkD?OWwvm zA@1$)`#8TNpBu)!ki6_UmhO z*F4Var+6a7t2n0&!6D(fV4i68F1%ftr(<}Mk;gljWu(J+&as1B{2`q3=+gKZ@*JLd zjH7%d%1=@|;qA(S6MiG1q zXgLqeC~B}YCFF+$?{npvY4Bw3e0s0=l=01euARo&HVybPr-j0oF-=DS!|UT)X)GUR zA^y0|QPdtmnuGIV!bTj{Tq+1$GFh$tBVZv=Qt;zsX4BP+Do=Bz3SJ=I#OQ z7U8=e+z!;}$fxN4k0`QR(N;mEQN8o~Q#zkpq>XL>CDYSfB}oQj(gDhL8JSD)er<)~ zvTo=N!33@}Mt2-{zkjR^hInjwv{<(z!k0&xR=;>nwx0i>wt*J{4SdhSz*cs604E1)5Mr0!(0$Z z;~4|;mm$v_lFVC=T4tg<(U6#B>xqV7TDNWc5-T<>(W52WC#B9-U=r;*lB=BzXLjk} z#&p~gikZ7mS<@0Dpwq!lo7LphYdU0Okr%lB!{%Ybt-e1UtE8~1V1S_0e08YVhvCbbGXJFV+Us!wXGt&rb4G?el4 z(rYJI#W?wzywU)g4ncj~qa;CyYW*R5q#dqS2^;CXgqLUCpTCPiB&9$ zv*7#`eLz9R*74y1WuZqPoUNp1WkEF=H73pi85$=8b=r95hEbJ40eMqB*PnPuhNC(t zv$bHDxz%H|xNAIEVnrA%Cj)M))r}hl!+3lak8V8PVa=$O6%E;th{amK?QmZtTTPT8 zz@jB|sw#rbO|jsIaD#S5r#9%3@tJg<`YwytGCvn;c2S%!n3)C9`3(KxR5UTYb%h3P{UjQ29>rfxgSz)4`_ zSjo07e=nX%Q~2j^MnBW!PqYvtMG z^8n?Aw_q=4zNtV}WhStV^^9Ea+1pp2CKu#g|(tW_BTm)?ny( zP)&)6SHkLL=CK{JHO4KkjLqD(&9s5kK+o$9%vW|ky!fGF9Iql^pval{4t^61K515v zwD?8w8X+;vEM%fR!pq^r_r(j>b0_>xu4WtXMiq3ITWWS@ymH@YYyA1NnpFX8piYmN z`@cm@03Cw=h{x@?p1_xINJFO}_$+7Q1#|#@Gi(LoSaus!DLMozoQ+>UgE2HDSp?Rg zOih*LZ+u{(#x%mkE}+f|Vi^31p>&_dV1XzN&0}3>$>LG(2GP_&VS+-X)8qzoJEYkb z4u+Qo;%^nAA z;3X$v;c?lEWZ;nXS@z>6ljojj{r=VVN3IyS$@v!Ek!t^N?@vB<{{t@s_^pTlj0V3d zzzM&M5#ZmG3-CKB^2$U&Lryns-4qS59UCTI?1CCtqkQKnuA6bg#PVo5EhtXozQ7a` zyy3x=iS`)o)lPw683;R}IkA6TWzZL3yFDPozy^;5v)oK;zU?`gQ`2jUUc`Ke<>zchdnlM>S7 zWf$Qrt`fdG+DJiRr<^BaR5?3jXn~h;j+}TD;I1T`Wg$ct?J5Lgn8QX@$^rl{t6QQ% z;Vg)IT)duvgtd#Yv+(`8L_-`dgm2IZ{EX^BJ?n@0DKCsWMgp31TA%}e%@SE491Jg! z4ugl+HGZ3$|HmS9T>=@HJcM*wSaPR@KE zEWQcLU%l+pQ@e|~v2AXla(3KzfFBHMpu=mz_*|*c^tNr?eRxbL&x~8VXGN=zENR1! zne@dQD$n%z6c{i4@PjjltEBxpX^=MI$8j$3pafqq)+i{C81e05G}?hL7vm2vOKH?5 zK(>9jb6>urvvb*HL%Gh*B}4h#;ANe|`-U%Fo?klD(b2K2b8z31%Q^=YFZJk%@D*Rv zJB1+!uenV+?!!;HP;ByHC4QWfA~h$8*hE8BmFE)z@qvjvQ6;EHeHt{X^G~h#@Q{y* zY2przCT@N4^SCy3jy~y>yd^z_z9sEzx?`!*NlSV?9>R?m^Q#N_ah$AaPqN5Y3nu~L4><*`)H*rgxo z4_@?o(zb4A+PiT5?lrhvDUyV{iw{z$fuf;Vc=t@#w$*Ihaof~#8`n!JP!@Z}k zx^HhW@%6XNew2BvU%7V|9ut%#-CNA#IBoCt@e?OT^H;)Z_Flk1E{Ma!y}e>Hdu!fi zfRSB@xNU5BkalkBTC#ivc_N+gMdEIUwm@XYBV|Ui}oh=6_z`eA7(V^0iTg>O>`Ja@YTL>mo)iasf|5Ffu<63^_b7FG0*&WGmgPezF zx=pzDoFO{Kfr0lq#%Esm*5FS3a?3T;jZ?v$co(%7Z=4R`zKu2_&!5i(etlNGyU8u^ zN8R~%DEPy12HSn@X9EEIIv7rzir~ZNaCz`7;ABuu3VbI36n!Y=6FwZu*PKl$J|78u z8%#CG#HWbrMC*J`4+;&RimAV4IE8EngH3pM6yFF!Ylm>|$88)(k8*(W!hQqJ$@mN~ zFQ;K!Q8GqX0^;*YmZ=PU5tQ47kKgVFl$LN}$nuO;&eE9Sf0kc6Ru8SBk!z$iKCP9r zKJe+l$zFTq;`WQtgSsL4ei7HV=|)?E5>Xx@ShR zLw5JOf86i8cg$4RId$sPsZ*y;ovP{)o345@8AKGo_skihPvXg+Rg%7XGLGW-tWU@3 zk^1zr1yY)6aQ~2J8FHx=JbtN|=Sbq7ufE0NC7_{qk zOv?XNo*u|3e9qiT)XSOsh@NIeO#Xb1C<@$f-$>Lqx$M>86p>w3ZUbIl1-F&5hf9F_ z4#=2L`QPqth1IG*T^L%MMs<`B>W$1OaH^{5oqj|u9S zV5Wm{#L}yAX2UeM0fgx|H#&d>;%%C3qC-F`X`~tF&p~1b4~!twj8VVvHGN)xe&CD-ETMSm{6TjPN144 zIX3FsjvYevkP~Ws%uI$c7GaEqMK7Ws=r@l=3Q`m?>fx|yxX_E~&SQ}bH-kKS1PfK= zQQL6QYtx<27k?Wk@md-OvkgnJBn>YgJ9FlY8f%zPc|g%m zHKy0ll^^xTbTz%{Ybw7Q6HGd7q-``u5RlkbFToR5B=eaSBs~gek_nOy@vQc05Kv-G zFQIXoAR3sdxgDoen`&=*dysyvL3!X^ycUcx_A;rDFXvfq)CW}GLntb?pj#2$Xqb$P z>PF*aTue8nPR1nzQSl%Y5|@nphDBpt`;f(5eIWbMkTfZ?Oe z6f0SiX|a)F9{Oza{zZDwL(-(nVu>;9bz22#D;sLS6G|J3mty9ak znskya^<+4;PTbuIJOr#&K2!u^_r83H%`oOfTWp9p$;WqS?|oK-<7FQopc;q@qpSFm zez1%*M6DBxMJEmOPb@;_v^mUbSqA3w#_C!h^zu1uA!P;p5b%E%-G)(NPo znru&nj7x-BGH9JZ_p8bFR>-(SaWeyKIXrVk)o>uR4d46m{Wp9&7D1^Ydq*+^FP8{A zAt%_lBi#v3K_~34KnIe_I!u7#_t1N+C+wb_fZcyuXWNWA(bmtK$ymp4z>>MenHvVg zF&q0mZZ(PV#Xe z%q;OEc!idUo4D7+fVyz0TL-l?zfn(9my z$uf~bH_WiOl1dS!l2(w%Hwgz(o{8}O5*wk1l-ZTA6P7HLc&q{o(OITB7AkeY~8KZWKNf?n#A7v&~;&@|1 zB}RCal0hfvRpSV&p`Vv_cGBn!Ms2wZAJqV!=x#InB8@VT6`eyo5V68$7d(vUgPkd? zh%(W}XeK%>nz8W=;7c~!X^_^S5cY|BQ?CvOrd}NpJB^xly&2pgzP>+Z+4WXD;6YfE zg7E;RyM!-llvIcaeir={EyF=N6r6TiXGhZ#rNVVQJzzoMqhg@mTqs@+%)I(~cLU2h zuffkW`kAR-CdzTs2Fk1;t6l}h$&igP--vpR&4?tb@@IbRL zD2UNx?P95sNd#O6?qrR5u)QwPM z8ZoSytf^1d`wVKF`u=k;s0RZ$C&i$_X#fMV8&of*In$ExRSj*2(2J?uiw{XJru#fi zXL_TGJY_ijjsTgQ?o3xaXE-xjzgC|-FEiKgNYFV?g|HJUorg;2Ip?WLGo6{OPi0o? z0lz1W^~qTk4vo&Nb2K{(9A-JQ6o-_P0td1iRafRZbCYwNISp+G(Um#em4~D&O_`Ju ztEt*9{f;z&W0TXQIL>qCwSJ>MIX}}RHH?NG&iozcsx=?A<~#FMt@EApTfd5)l*eRt zeKPI$WVVy;KNp8IIHaAl;&6d;f%Igm>Pd^!lFT@nhPE;EB*Q)Vp!B3QGh5`UcUsRi zCO{@zomR!N&1q}>dVTUjZyf8LpmX6lhU7xjxzM>#)oFLy#kk5t(p;ZhP-f8VEI7xA zEC7QA&H}|?p|g;U%S$+Oy(5w#3$6*Vcz|xeS_ngS zNSqh@w(|0V_=?i_B37i##stm5laujB(><8Dna(QIr3%$1sPRXIRH3FT)TLD@JKc-= z*e@CG)tEz(xs9!B`~E!pXO~9nVsp-%x&C_Wc7ke~V|9EEjbb6fS{F{*@DT>07+xfT z9S@+yv4ur4ln5t6YW36Pv132rRp5^OC_i@W7jY8dG&YqIDv3Y~u%==U7{p?LwIf;M z)U@cC%}zMIg{i`(dLn89YAaA9X~bkS2y)~IAY{AJV?L96Y7T!IE)J$ z*gA^k1tgV`i8jPK?gkmGp}Ghg7jxdR9jKKI9=nPkCd?%mm$(i)bsa(h45-ZzmbyB~ z%p3QaY*yw(Is{uD9Y%|HP26QHc-SXOlodyP3Cj2gibpg;nE=%TP%)(knG)6>`$hWQYI_xW+m zD`*zu0V@uN=WPAtiAy889HB(*;x)jY!CJo zN-wE!XQu_x!>x~FD{EsbYkOPS4o8Qk#lVsg^-#NpB$UI>C8N4glgTD(R5#c))Jl^| z7$>v9ag;C##NG)$!VU8z;NA5U*fUUKC|riEZ+Jc!I7*zyAdUlZobpj#jZ(uMP(#f` zHQ?-^B2QgrNuo~4gC?f9m!q$2n+SS%;zfZ{TYyZI;BI}0P)XGM1@Nz%z`vMfb#h(R z?Sc=H97~;mp24j5^0-<`XHU=#t64(J%grpAQ;;JZ%V`*MlbTn}R_nG1ahc z8UfK`8a99{gBF~jV>4F=KWgJlI7sU>Y)+Wo5F-ej*1~4X5b3;zha;BZ!pVloI)T-t zTB+BuQu8R9H_jz|Y@12LqB2oC4TXnsTQDd5t@o_haZ!zz>zBBMwHWC5I)uc60XZ|0 zfdCm7Ea782?nD_5ehUnlWSm$vv0>o-hPkBDFz*|2{leqv7EzgSe#nvpRXoHC*Tp!+ zQxwXn$}~m%!iyZMM;0v=lPofnKCnM8F*A{A47ugI)Bxi=dgeL86fah~h2DRm8aF-@ z7({hUE`LqX-Gg8h!G%CHvzknt*voN33=5Nuqm~fX;gEX>Bv^xOl|cl6K;3c=vn)6? zw^a_?wH;BLry!Qw)<Jjy^J+FXy|k%Msb(v}EAqR?1o3eH%r03NF>q7d6XfjmahP?6>j;L~tH1jF+$ z4ayfpA3@Q?3nJY0$kMOw6k2Fbk3Wa&=!%>lkLuJ3IUx$M^PoJJkD)bSh>=PKo zYW{E_K0TLI=%aGC88bLO!WN~a6|Q&P#JcbmeqAo9)Qv$=GP{rQi8uT zhNCaL<6k+G2=RtVj&u3+^#&&6Jy0D&UM`u{n}(T%spBpXW8vxt`-IpUR|r>ogl&8zD1z|Tz1&QXSBwZ*N!F?mh>)?`V=2+4rwF^S zF<(9xD*{#ani3tQTk>ig-bco zcs+9NElB2L-wk$r3lXSyPXXf{3w{x&?r*4~azKSmJ+=%!6;1?O@0orZoT)aizOaVb zz7Z8}T>^wuP2URe-SZj>TTrH?y%kPmLSbW}D1|(nXBAE@+$DwL+t^2(MKR3@y0>vF z>HmQ=IR(yhN^=25!n4Ito?T5X!+jGds8Xn4uh3rucnyW|ox``DfM2XOZ!9Hd@y%d4 zZ=6ebVaQDMvabP!dpjsj;B2|N>T9{`9a5D`(r~Zv<;#)wAwMhAR zS&KT*U0z1es#=buF?ax6m|u;R2QEyOBkxY!MW`ctAU?RCi4!4pRgT96D3IHE7gGT< zD>I{9>fQ~EN1}Qri&_TQ)_c{WhJl&9s4d^4qL#_)nu(z?z4sq3qW|+<<%@=@d)#K8yQ}=0|aMIb6Hnp1PY&LQ)CNI z--9H~cb=JwV$+o32@NHo zwP9`daz$aDQ-yM;&u2!kY`StgotHw!e`lvjWYW{`04MR`j_UF)Cc3(`aZi zySnIeeDxu*9rH`p(G2D{$KU$@ScO;f>KhtTe3>E14Dt@Pk=gv_{z;d893 zA>}-=DOh!MpBMh8y7U|H1tJEAp_{EYNatjPQ;TVBU5A)rj z6NoVb=?=72jxQ=@Q(mR4Zc8>-ba}AdKz&`rfTQDf_1wbiTJGfzPUB8_HzjS z8o;=DKEGrpIVCTg2C10k7-KzIb>18DTtYwYhgNhcbl;7v7u2x*{sJ`okuB%E!d}dw zstwjW*bC$L-u<~8(>^OLVx@Lrpd?v`hOZ;Sv3)0^apgM=-dX}%fWj0G{&VWxhJ z1vK2PD0JTs(dI)O@e^1a@#Z1smm(>C0ELzPLO{;A+qhi4dx*7R1FsDW;Ys<%$mCZE z*p96J3cL!itp?S56GhetJ-rbH-a_%HS}1hBePSH177vtH3zp4bl@UTihc{%h?r%UR zu>0-@h$Vjfa3anbX zqGW2k+UpUcSD~5`A81*p{FsdS>;a#J!si%|c)$;=uyd`0UIiyxaxa|nP!dWR?t{=c z)>fR2HTlF|3CtEthpq?GyU@OR`AgZ6+5;|9ZSpv)cPV)z3R(O;A{IIxS8l)f!Aax# zH0YLadGYVLL}{S%PH7dqidCj`5>q-*@02dbpjW+9+E{!DjNA{g%oE-$omy4E@Apl7 zzx31mp2WqdQT2XleN_!r;J;fMq6KpkHb-!Q&$ zd^5EO0cXIN8>dDyb$Gv|w(ubQn7pJ{{4nT_+RZZ?WZE^i6^BrH92)1z@7=h}@!VPS zgv=@s3g+w#Pn1gag}S_+=zauERj^A9{TNo!fV+c<+lnr?yK+LiOAR>#X_R+$nrF(o zZq8g~_hIh$>TQ>=))3S3CyMXE#cl0vi`o}0;K_-%g-4LiKtwPX z0sbv`)?!(myRB5n<@Xku;+_oA6ByaKS8StUI4X{9=3aJ1_gXwlfcIgf=dK=ccQY|Q zAl0^?_wG;#c>0sJhyx66{bGEN<9j2%5RmWp%f^?> z5DVe+N?7&Aq}BG%;wJq}(u+f!|DpB4c#@{qK$CQV{r4f0=7d5qlkTxOy+YE0q#?m4 zB!5+6PQ;{t)ZZO2=}nS;PSOh^j6Z2G{@cLx(hi7b(y%cnvcbz=C#BZ_W71bZ6Q(FE$-b_%z{lKxa@Ob~n$^qyFAjY;1Z{CAU#{}1VD z0;L;hdW`$h5uT6Uku^UMr>m21h{Y)w=61)?FV^<2vEAX3(C8$#TR*NHi!Tv~BjDk< zf^;ccB9M&%=dyo{aakDWn+&C-EP<7fq2Ehc0&56EKL|5r9lT`-Ei6us#b1Zh;7duv zFfTO6;@5%4dV$6*hGsE@de=v}UK1b#ly{&L*WvzUHyN{Q>79^$2`yp>JolmpOK3S= zE6{O)R>1Nrlq>PGl?v2JMWNgWzDwwGIxf&#q}~R)p05X`w$)PWcqM!G!N zCUp;haxPtm^!IcW=?eX*;BQ2J1HB%pCh3zJ=YOShdauFhO5-l1-=y~=ouS_ao=+uN z|IB%F3WG^^(+D9BDc9kSr+6x4w-o1#q$ zIvx2+C`2g_+JLe!z1D*+jXWQU&`t9d<;CVtLNU4z!7sNk82wWSvxq|qK(*nTa2?gc z-!gQEH9cHU>pkfF=1l*gT-F~s5N@WYu;dcmOm)dy!WUBaVu2b@#Wh4+!vft+Uyi;typUe% z;IiB4=9+he7g3$8AGg!bqaO}0rNh{ga@lvx$HEuWPX)SJxU8VX?D~nJ$IKP*<;@bV+1A-6PORdfvGlo|?K;3x^|DM|$X|0-dB%bU3nwcCJ(HouTU@+h|0fyXj-$ zLy(0e`T%L08)pxbFQ`C3r^P9P=A6?CQy)zTGIi(rJu;aaPfuA~_r^n5rF z+)j%<=*9RCjqTJg(Cv+HioZUxoqE?xJ^SXs%i4C@?m@Q-G@u}{iS0Bh&|~yq&ByE= z^soorYrd>qMbCQBFEK_}(P@G1wl~M#7`ck(c5@4N+kc9_F|w1^3v@I6F?eU>HFTYV z?7Jgxj||We4|-qZU4U-zpxeXmi|nE|c+lI!9|ZIk5BgH#Wo?lD&V!yx1aZszUJqIs zep%a14|&jK;ULzTk9p9^#KVyx`m6`NHSsY(k9p8%(f48ciU)l$5Ts%HmV#uiWGR5) zPR*778OajAO~IPq68%v)M|XPAXX9UrTuYC5(6f;z0kv~j#q%h69iV+4^ly=GM)uR2 zJ?PQM!;umCwg-)v&jQ-GQPulI?Msn7jd;+$L<68(J;+Y{lFK$R2&6{Z zrAH?~UlvH&l1onubR&I~?u@wfeGmGhc4uUie(XWhj5{OO(XTz|aX=RlYi9 zyk144(_2lh`xS?4z1QN>D+I&%06iu6X*fDol!^v%j_~<3QiHaj^#E;0IuYL`67mJ4 zPC8^W=#dE1+=djt>5Ez4kTvEu~w*ur@SO z=~F`gSs9TFWfWqNO{4jujhysdjm|5=zZ!GPS(sB&_hR66LeO7sT}gFFN>$43;yxQ2 zGw4&=dV7E|_afD(I{zEUrqPkm-%h!8UHWcF-vjiaDh(``o+@t2ir7Llu^)_%wDRid zJtCX3%zqcoKM~2}VigMi>gisQL8YqiUyX%`V;%=-5ciOrpN%w(^Q%+wTAXBY+9_$b zq+2B2A?cu`-$6Qseuh+|mjyFbI~AW!3y{vi-uue<#n|Q8$qhI^`$k|pEz|BvUPGPQ zgO*08q}D0AH<`zd=F0fHa4yW0izUB8@@wgN{p+-r{)h2R+DJc5{t#(xFfbuKJJM??$`?Wu$ z>rh%tTeO>#&+9B9W{LKAEDf4FlE2p9>(%;g(lEAYzfDdtnxu8s%sk|4Bh5yiq?+(~ zNH{zMIUg_{5^X$0QzH);UjzQzNZ%fN4rwv`L!{S-euDJ!Xy(5>Aa?+AQRwEacV_7_q5fRU57oq(!%i`@V$wLt$Rho_bLm~z8BK$ z70|%XXf62gcyR=|5qS-_`kZdmctjY(^Mb8$C-6t@#ZtN!=>x`M(Jfo)R-LWxWi2Oh zsSOYRjBVpA>bppzlGf7m$k)+Jc9c>$hq5tue}!~}{vGKky@IqPl!paBF8G@Se~aL6 z75rxe|2e^bQSgrgpTckVUa{M}G)dc{ZFqBQC(^le3~2_da~sY$otpvLy(;#3qz7XEtnEjOFCu>;_Cv`V zI%DQax<=9=NpF<&MZHM3#x#RzG~*a%+ic0tmi+wz#@`=c{O2YAdC9*h`4=Ux1*L9K z>PmjL$wTT(WFnVBvy+c3N>+ zwzO$*w6my=*)Q4c zTW&Zj%?XK!>=XCkZz7e&Sy(Rjiu2h5y40B;-aIlmBy`M13fJZG!)x3FyL0)$QciWW zTzkP17G+H#%aw<(Mb&(X8xa|#tZk^|78qP6%9*49g+!mgrMuX>yI3lW4VALPTtR8D z$1NNf91+1g3+`B6RO%J4ar33YT)rs1SGZBs^2Tz(Ul~i_WsDXND2i9rqDKsUDdNdm z^vb39oQm=YpeW@2s-jR<|wKlXzuN zHK6r_#eLhdCFC~diu~v7_K3in2Xh60-D`8wmBGRhh9EBJ(L1-`vtKZ<=&wi%yf>VR z;#H*;Vp_4u9UdFWUP9Zt*LDqT?CQC!Z~Z{;x`D2qzO9`-Yq}=mdwRES>fA`%juatT zTX*l|@=d)x+xoh;Qs>pU)xpnQp#@;m>w$b+PwW^`j zz1z0Y`mXNF*7tF{0`}3~Y-ylh(j9b=wKXt+6>m5CH{`cn8TDe@Wm!zx+>li09>)7W zr2#w!^7xZqc*6P6*6acIU{?8tbp`i8ujeheP+|MrGOl|1(Te^{_74oK9vs?_tHyP? z?8q>!*l{+hd-!bJ_S|r3-`QyPmS77~k)t++o5n(ehSmiy79^*4PzOg-f@LZcM!d3=Ha!0dl z2Ip-j_oL9p6?OER=fptbuQ5KeREI&(ih+G$A<<_^Xe= zY{fmLXHA;wq|Z+@IZJd-rAw zs|)TS=_zC^WeM$#qH6`28bAzpmT+0VdkjUY1}kMUu8K>gsIyqi9@sr{q%T*huF*GG zK>ya^4-aM!xrO}|`mV#JY`zFx5n=lAde$96tA@>i)aG<$M;$FM|C zXyNjrn@7>XYyksPX;_?W*GTpN2CN5?7Ar+cLBeKhc4Y9dGpmQ6(5zjAY=)_B+^TN}uC!%#~{diQif z_k+b!Z$5iPo^1ub$ajQZvu&QrxP;!2a z+!G#XXJax2iC)#O~gP4 zN6yA7rTUcelnLi)n>t5E$ctT}1#iZ0>ODg5^+J$6F<)x zrcpVVEcO=m4(4-1gCm$y?jdx66%5Us9d}aR3sgl4p89Hm5Lv20*o#*J-6-eeQ?kRt zIC^b({;50f!@jfca|LrQ@mIS=u>l^us=N}nH$QTuj2zhQlcH59&SzQejd2&YwwvFw^ zYAEqnd3I&7Xef-#(@NMuL*=-$x(C~`S@uMEuM)UIsj_-gXJIdvrhKV)3~Pw2SjyJn z$;xFF3|5X3uS0uEZR|V52Cm8$T-u6u*STYbZDR-e4!Kp9>vs)COxyP7MhVe^-w!N8 z*AdqI0;ws#dMr1BSeo3@KBQd-v%K!ZIbm`1C|L7lmr9!;3S4VdYvo0=jO3Z+Dcvnp zN8)TcmAKsJQJ!c%qI&X?YyyyS=u4fui+)FXcy-SWmEpCy!M%C6SYi~KskXK5;UZ0l zCKv%4c7Z-S-+TJ&C3?-Rn(w@nA*7_!ZB^jjQR!8ZCNmO69>?WxB2#8yqPT zVvhqw-~Ci7`YrPml)g+v48RKExzzTy+*d{H3tz5U<K5DSQC z;rWnc4-buu4g1F#Vzmdjxe*QlRltgAG6?~8zCt~c zQ8`$luEW?L6uk{qX9=pz4-J;Qkf9Pu_wK$H-KvhZJNuaby&MwDEIDhx zBP-t7SPaj^eGzTtU6All8zQObWjO{xp_oFSyB@%ZAO<}-u+|*R72G_#XkoEttbqNG z$SNK{E!V{^91XE9xa*Ze7uX8p_99+bgTong9lzLD-kh+ZDwL=yMin9WNP_jCA_<<= zyde>6pDT|MrdXFNAl-!RYY+bkYj5k_$N8<&b3oG zL#6>==9EzQGN$MdV7PDmYK!H=EW|&qa|pF_XtOBzQAjlkDMzF>%drB zERXH=Y`ere<)3Q0<{dx!_wLvI~VzN@684xb_`x(PT!)8*m z{Wc(r4hAVL2|kThgjqOEki$l*+vpa<(xB6{(h8}TrFPoSvn*4b9lGOVoNKD`st<{F zJ%nzva*_l=(L;|q%)QtFA(9$ou5c0jH9o$=ku|BY!aeP*wdxWpl$d9y=qKb)+d4ix z5Zve>nzmKztYzrb)2NfinAo_CLhmsMLWe=oW;8a|a`o{KVer)Oaw$ez3x=6lZLNl4 z9(Hf=17WlTrL9yCZWnCh@fpl69$#Qhs}_~D4S`syCT>SYfU^QiqQq&k9khf#sis&2 zo15bC$>Nd59bKZU!Wt%`05%=JtGb?OXR({?npz%^O=Ynofc-9b4eH!rxo_N{9tM?% zLEDLTObVOlM-snEwJd0wCD$#>aPVg!fii8#gl~JVwU}FjMMFf4|6=JkI=L9^1V)Z^ z&vu7@e?6nvsCly3wxCnCo&f#|jooA=ot)DYOSDH>qrQ=#|GB7>i?JP``=}9(;xf(2 zVZ@^*X{eLK%_B&hT!6G#EMWze>X-v`w@SyXldNb4<~+@cD+(5rKg?TUz`?fDR!qr> z$st3EhD9U=u%1-8nw${UVO=o^Y#Xy3nPb+xM3+o!W|HMO4{FaVz?|7TNSmsS32EwV zLa%0d>ZqzINbb{CGVElyK`1CbWs-d>0~GsCwBx~ouvvJP2@Hlg1uei^k`BACu?&Ut zTAXEty&R+CQPpfJkrEKr!}BYViZ{r-gSCs}VB0KDJCqt>Ep8LM2J>KBOesg0lA(*& zSz$IjnF5$7HhX8~I^m^Z0d|rvn7J&oZA?H}==c|KrT$P+T7gBVkIh$b`4rqN_uG8-|YEFNfvcv2gd7GG@DGc#o|6Vp1} z?dte7_;DD&%se(jHpaN+6|uG3wwW@J8t8bff%(ebh?la&@i=boF-+u)KZ8GG1s^pd zNLu{7c$J74WEL^e9^qAO{5#^5Yq<-47gw?ccw-8>i@ilG?Unl`Tjk!TR4o!y&uc-)TbiSd&#C-ez&&v3?n2KnJf!&V@U)w52O#^WYza3=m>7fhip$s(}+ zWMZmptrdnZ;z@)rJAxW3h(YkDh0=TqLj|G~^p543C5uPB2SiiDgy{*5@+^fanYV4J z;j-(vS#jVp8Y&+I$IaprVIVe}0-kVJ7$~mB%8PTRqJ*fdmE*q@O*g4!*pH@W=WL`-x-8Gf%dDe~bO_r32SH&xDuT?H}s>@jpKB;a>*$C4vA<20xzX z1aB=Ohd+T9;8!^04TFG&oNn5>DH>oaHq1mjYlAh)PoChq88=KUnx@l&;uM}urjXc* zGSMCr#i_NHc{qzf*a6MKbkGF=T^^8TV66h+)4UAkxS3ebTq?805y&$v(Oq?UqMa9G z=#m31nX+W1j6@xD25X01gi|Qw0YZN;F<{ko5ZyHpMo7%FNt)vnQX-8*Fu%L-cq+>S7WcDiv_Z=Doko0?hNMWa9wOI-U!vKV zT=)$r{}i!Luisu69PM%QsF`fzI}*Rw6&HO|U|3)}GL zJNn{vQkptjeicsCxCo{ zOXH_B8o%+cpRl#5BkleT_5*|~_@Mu&IPw)LG0mncrz&uD z&i~(}DI8AJ3TsD3HsK8?I#3*P3)!q(&PnN+d0;YGJ=MJaFV6GtgXM2Zj!zU){Sv+% zral?Z@Opgv?;|?QE4ueN%x6yc-P<<&WsxiKL%glXb>m&i9>Cp5*CEfJ&jx;dTD_yl z*1{k4idUTtDLxMe zz73}Q4kw@DsS~BMIXxmYd@7~>EygJzbb$WWq3#;Ab^zyY+{O{~Xb@0V*ssMo6`#T3 zmuPryLdhsy28hoGS*8;31yF7lK7PAvQCh@_9m_LXKFeZ;|5<+R@by|*BUegmd|E1J zZQ!#2Cu{BHFSp+ade)pemCQr7k*c2j=h|(<>DCDT5&o`|4t{)=xK}u_hDMyJ*l(HJ{1atmra> zwl0Fqd#D4sA)Mz9(L$sP0cU9$z8%nf2WUEgTLzjX@?C_#1H%7?QS&0y;gXAxVqL?h uL&lPSQO_rpeEvKFO{QS=Y(te%t;oS+```GCtG{p2hXc?5|M`DU1OFS~cz>q= diff --git a/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs b/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs index 4ce00e2..6df7f11 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/DungeonGenerator.cs @@ -42,57 +42,65 @@ namespace DungeonMapGenerator AddNormalRoomsAroundBossRoom(dungeonMap); AddConnectionRooms(dungeonMap); ConnectAllAdjacentRooms(dungeonMap); + AddAdjacentRoomsToEntranceRooms(dungeonMap); return dungeonMap; } - private void ConnectAllAdjacentRooms(DungeonMap dungeon) + private void AddAdjacentRoomsToEntranceRooms(DungeonMap dungeon) { - Dictionary pointRoomMapping = dungeon.GetPointRoomIdMapping(); - foreach (var room in dungeon.GetAllRooms()) + List entranceRooms = dungeon.GetEntranceRooms(); + List roomsToAddRoomsTowards = dungeon.GetNodeRooms(); + List obstructions = dungeon.GetRootRooms(); + + foreach (Room entranceRoom in entranceRooms) { - foreach ((Point p, RoomSide side) in room.GetAdjacentPoints()) + if (entranceRoom.GetAdjacentRooms().All(adjacent => adjacent.TypeOfRoom == RoomType.Entrance)) { - if (pointRoomMapping.ContainsKey(p)) + Room closestRoom = null; + foreach (RoomSide side in Enum.GetValues(typeof(RoomSide))) { - room.AddAdjacentRoom(pointRoomMapping[p]); + Room closestRoomOnSide = FindClosestSeenConnection(entranceRoom, side, roomsToAddRoomsTowards, obstructions); + if (closestRoomOnSide != null) + { + closestRoom = closestRoomOnSide; + break; + } + } + + if (closestRoom != null) + { + dungeon.AddRooms(PlaceRoomsOrganicallyTowardRoom( + entranceRoom, + closestRoom, + RoomType.Normal, + dungeon.GetOccupiedPoints(), + dungeon.GetUnoccupiedPoints())); } } } } - private List GetAdjacentPoints(Room room) -{ - var adjacentPoints = new List(); - - int x = room.PositionOfTopLeft.X; - int y = room.PositionOfTopLeft.Y; - int width = room.Width; - int height = room.Height; - - // Add points to the left and right of the room - for (int i = 0; i < height; i++) - { - adjacentPoints.Add(new Point(x - 1, y + i)); // Left side - adjacentPoints.Add(new Point(x + width, y + i)); // Right side - } - - // Add points above and below the room - for (int i = 0; i < width; i++) - { - adjacentPoints.Add(new Point(x + i, y - 1)); // Top side - adjacentPoints.Add(new Point(x + i, y + height)); // Bottom side - } - - return adjacentPoints; -} + private void ConnectAllAdjacentRooms(DungeonMap dungeon) + { + Dictionary pointRoomMapping = dungeon.GetPointRoomIdMapping(); + foreach (var room in dungeon.GetEntranceRooms()) + { + foreach ((Point p, RoomSide side) in room.GetAdjacentPoints()) + { + if (pointRoomMapping.TryGetValue(p, out var value)) + { + room.AddAdjacentRoom(value); + } + } + } + } private void AddConnectionRooms(DungeonMap dungeon) { // For each room adjacent to a monster and boos room connect it with the closest thing (entrance room, or monster adjacent room) // unless there is something already going there. - List rootRooms = new List(dungeon.GetMonsterRooms()); - rootRooms.Add(dungeon.GetBossRoom()); + List rootRooms = dungeon.GetRootRooms(); // Create list of connection rooms Dictionary> nodeRoomAndSideItIsOn = dungeon.GetNodesWithSides(); diff --git a/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs b/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs index 79d856b..57d7355 100644 --- a/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs +++ b/DungeonMapGenerator/DungeonMapGenerator/DungeonMap.cs @@ -221,6 +221,14 @@ namespace DungeonMapGenerator return nodeRooms; } + public List GetRootRooms() + { + List rootRooms = new List(); + rootRooms.AddRange(_monsterRooms); + rootRooms.Add(_bossRoom); + return rootRooms; + } + public Dictionary> GetNodesWithSides() { Dictionary> nodesWithSides = new Dictionary>(); diff --git a/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll b/DungeonMapGenerator/DungeonMapGenerator/bin/Debug/netstandard2.0/DungeonMapGenerator.dll index 7e2e81e6637fd396d9a8b9f1b47b0f5132c401dc..c229425c6a498550673d72147b6ef39a312c5684 100644 GIT binary patch literal 30720 zcmeHwd3+qjmH+GRneLub>KSBN+*L(Hq)vH&pUcIXB8E?JzE;5KHfa}~jqK9$k&ss@eI+;Lme9ouh^kC?T zxesewo|xNrV5F2DE4urOxkKrpT%q8W(}VeRalDWoDWo^_?o1zYhx2W*Sa^ZQdV4p~ z7R{hrrlp?rTYHY?r6XE9(HJnM!k&FC?rB_Sa1qr@URQE6g5{Ubb4Y>bk3rYJl1cer z_3nX;!smnF+sm0VL{GCKrhXnJiUN1$HAH<=%U%jj6WKN8HsDP)a9cTltPD8dB0-t- z)sq{Le9}bMw-rmpAwVMA8DzMlMO-zXwHU6pVt&*GA&eV^otB^)>N^+#7fCprbxb#bOoVjHO(KI~bsKPR{pqt2 zv&AyqX^i|{GwNZibPCZ$izvdaC)+K05_fdRA>B9ya|q~xQx(1Ysu5jm}|%noKY!JS!99ve{f#Th(%5rDmxENi-G9rpU5q%xH3#R){Io zxF;40o(&`ePN4NU-O4};@USwFN$x@Kj!_dB7KZkd!7Mq!=9%c*3@8dn2dbKfvasPo z31-A_v$#beRTE^7b$$mbNEn&v0FnW60`ALEe0mwQu&}jp(P@YjIBVvCE6o7O!U-

=Zb&4k~}#YvlVC*atYoxxa`$&eFj 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