From 184fd823c32f14860e95a61a5e090b695075323b Mon Sep 17 00:00:00 2001 From: clmaisonha Date: Thu, 9 Jul 2020 02:08:30 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20des=20images=20action=20Conditi?= =?UTF-8?q?on=20avec=20la=20port=C3=A9e=20-=20Correction=20de=20l'erreur?= =?UTF-8?q?=20de=20sauvegarde=20lors=20du=20changement=20de=20langue=20-?= =?UTF-8?q?=20Ajout=20de=20la=20possibilit=C3=A9=20de=20s=C3=A9lectionn?= =?UTF-8?q?=C3=A9=20la=20port=C3=A9e=20lors=20de=20la=20cr=C3=A9ation=20d'?= =?UTF-8?q?une=20action=20Condition=20-=20Ajout=20du=20fonctionnement=20de?= =?UTF-8?q?=20la=20condition=20avec=20la=20port=C3=A9e=20lors=20du=20comba?= =?UTF-8?q?t=20de=20robot=20-=20=20Correction=20d'une=20erreur=20lorsque?= =?UTF-8?q?=20le=20robot=20se=20dirigeait=20vers=20le=20bonus=20et=20que?= =?UTF-8?q?=20=C3=A7a=20cible=20robot=20mourrait=20-=20Suppression=20du=20?= =?UTF-8?q?temps=20d'attente=20de=201=20seconde=20=C3=A0=20la=20mort=20du?= =?UTF-8?q?=20dernier=20robot=20(La=20page=20de=20fin=20apparait=20directe?= =?UTF-8?q?ment=20maintenant)=20-=20La=20touche=20"E"=20permet=20d'affiche?= =?UTF-8?q?r=20la=20page=20d'edition=20de=20l'action=20s=C3=A9lectionn?= =?UTF-8?q?=C3=A9e=20-=20La=20touche=20"ENTER"=20permet=20d'afficher=20la?= =?UTF-8?q?=20page=20d'ajout=20d'action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Code/assets/nodes/conditionNode.png | Bin 52251 -> 85760 bytes Code/public/js/level2.min.js | 2 +- Code/public/js/level3.min.js | 2 +- Code/src/js/level2/AddCondition.js | 30 ++++++++++++--- Code/src/js/level2/Attack.js | 4 ++ Code/src/js/level2/Condition.js | 32 ++++++++-------- Code/src/js/level2/Game.js | 57 +++++++++++++++++----------- Code/src/js/level2/GamingBoard.js | 2 +- Code/src/js/level2/Move.js | 4 ++ Code/src/js/level2/RectangleNode.js | 33 ++++++++-------- Code/src/js/level2/Robot.js | 1 + Code/src/js/level3/AddNode.js | 2 +- 12 files changed, 105 insertions(+), 64 deletions(-) diff --git a/Code/assets/nodes/conditionNode.png b/Code/assets/nodes/conditionNode.png index faa282a39560db0e0776426bf73b863a8f2356fc..1a62a2ae6d40f9008216856887949febef2de897 100644 GIT binary patch literal 85760 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

-prT81k92b{`>hi~YJOOKd?VjGzy=Sg20HWCW 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 z z=_==kO#W&6&C5ERXyD%6*^N9N4Fe%2q+(ka3KugE5CkKh0$e9=XgR@tpu1f zyxe&3gzRDwOsFFh$JX3nkwOA$$m&YS$i>7_$g4+C_nZ&i@+fA8t@{0T<9sN}wr^ef%A4fsu3reN8&Bws=jO$Y9Ky10Dl8JZQ+ zz}HGRR}DJUBw*wk@Veb=_M_KWw~0b|3t76wcCObQL8i^YkhRf|j*@-q^I`_3EsVfA z{%wu|n4nAQg04SUY*+gqn`(T>~jD7y*00u(na*F1?+J&*Keu-3DO=E-A=jzmw&;5a}d zR9Z|0ZWh)?P})@aeLVVDtdRBn5PK9B$9w&JzFrH8jppddvx*$8lTIld!|_FB zpM{aRv^`v+Xab zu#R;b3;YkVmoK4Dk-dP5hLc!g&Br^8&lr60>>z&lHHV7NDB7W12MzP~nO`}MH%!^O zzcl&*v5Rb&%OvW4+`Xe}I{A-q@gN+N#f(^o=5s{UY}dGxkf7k4*C{ne!_i|}?>)n7 zgEHXyw-vFfyr2yD&nuIRGhsTKeGyk-NqC92n`r3$RHjtCQgvL2$RqRRX8PVNEohM& zbLX&-!udOUqa0c+YHI3xqJpRt#|O(#$I#fn@Enu(WsZb@XV=YG%ih2DvP*YEJ3$0_ zYo@Qppj>p)qaCrJWr}{#YDPGX2!s@=^VjmL=1P!`yc~3YnbhLpTa@rKGl#R~x`Oy`7Ncr4t!DPQ&2x{u4%?n0bb61z7Wa$i+pUd+; zJATI`#nprluCQA{($61Jqnq;C9w#b6@|1~^ePph0o6VEb-v{ZcjD&t!+vm70BxywV ziQ5l`({XuXfVj3uHW*Km~9~d6J;W)qHaO)RcM;xtZF$dw+egdX^J=|gT zhUEmYt9&>VIR1#9KC1Z=+q5;CfXZq9<X)xBy0@RrDMj);gk_~Qtj_siDFhKaQ%z>xEUmEfa%wB59k3QKg_$<( z&^>zUUy890B3>n7$qF*fp_15MdKdQE$fI1jqXdVB!#U^P1}#}O8~VWI3nnoCqaCP? ziH6bi{`N@d>Z?Z_64V$gqax~>IJcGTf_WO7_%KR*S1@Xi#yU@*&@B{DeC9*Poo0FZ zvO2TB|Dogf!*(jZz^r6w?uk8h();%)rrw7*WO~nE79f4zpTH*^MWD6q87VE1z$rG` z=Zjg(AN;a;za$-BlRCsqg1dKk74N{SsHdG~L)bT7i2Eil?Kb+mL!uEX$#zo({-s^@U_6r zx228xj)K}8m(jiRj~w4_IvMLO`)bz`SQfscIQxcnT(L-9<4VQ`d-1)K%}0kk>55jm zxc;he!|%h#>|km6%(mfNv^`RkE#1)@xVK4k>;r90mgjXIx=_vr;V|;6l;v0r6JGl} zE(BNf3P}m?DKgj9O0ZQY4>M9|Xx`t#;M7N917j==@LFP>e&e&#OqefQ$JNibI1f4u8BJ`c+Enq3!BrTpy*qZmrWZ z=w5@X#+u0LSEHxQ%!XT|g-(03DL@4$`p{g6@#jp7rc=%JI=@9ic@3oEqCfHzPgBlFbs= z$LuxtBUW-|d=Pi!@c`aH8pQ-}nl55C zxg6vnj1JHSE;ua zP&2D`{^lgs#;6e4Dv#_pDV{t=UkX_h#kV;_JoF z*W4<21GA}x)h$^0PH+8>L|zmy^YuJe5%^xE+QLFPvV_Vx-&4QJ4-6*RY49P?bC+PO z!O=$Y4yqSlFlb?)u7mcp>NZ))6sp3$Ek16%KGC`peTd#(wJx^HJ)N$k?xzd*<05AL zIkczX`3dKQ0&q_ezQX|UEu?FFB! z$p89GIg7(_b*x(32Gjw4aC5!qJ(MXI?@`>{-JJpAP5>S%1*#~~CVq;16E?$QPkf{I zldJoUzN0eCt|?7anxSodIhD7(b68x7?g|S?UkhfrEz!=40pvwikS7asp zECdA`gJQQn~*_qRBm>(mcIkAyG<86@(kmAIXUP*olkPZma6 zt8OwL?^4Kq>^@%!hTnbM&(GswO{^v6R378$+AinD$qs|h7^WyOdU&|OC0apxwi|rp z7K*5~9ea7|Z~LJ8oi@%$$s;nvCHHAtVZ1+NtOZduIIi0L zqKm+;qH>)+==pkprY~{yfm3BJKPg=z_-GA|P1#_2ez>w-F{UfF)G$}O`)y{OhA0x7 zOK;3oXyG!&qQADGiej4JvpR2H3rs(VV2ocEmF>{;kwP9yD8lzF_kQC z#FBp@Gp%&IN_9cfXHycm%p>^ibcO>tiuMrwHY~isq1K@{S`B%`+$0MmMhqgcbCw(({j+js>Q^6@s6aJeE>{4p&k^ptyFYZH z@fOJX7X44>)M*vi;}2?T+6ocg+iFv2o&s6aR1aQyEmMzhWWPpRr-+V6x#rS`zp1!p zPb3;^p3BVhY4#9pN4?0(kEPR*__b3}{;F37CK^dSDwRoXPH~Vxb}^m%19+=5`?%N@ zO;%EeN5olF7`L*P$t3>H7JACXJHm>cuZs2Ey*aq_ zGkNSboh2u}#E;^Co6;|Cz;I|MR<{Fhh?o!9Fn=xSwXOGDHS5>->UO*A`3|6nSiD%3RQv>GpwiYnHun55^b;Dp{5Zk3n~(DtMV#RK=frrAq$ z95S&g8nv1!!vpI^s9J>(zwDarcT~I>ym5Z3bW$db z1j{SJDf4FRoa)3_AHY39Kw;^}Fyab|$Sb$tD`3H=Dmh}TXSXV8UFz3X4QHSsaVnQn z+d1{Zx1lE4RvYOAFA^cG;ibZDW(=dW7aq#S*ZMP`3iMk94<>@YMj)DY{fakHRHP$> z64@b_D8aqnKD`?*2kV4UoEvj7cB+^6IwzT0>8yu)3AyaeHXUbtaQOSyR-L`bVO24J zC|j6hDZcw4Cv`aU>2_vB2~R$C%TBlNc_^)1lIg=zT=S6>?kO(v5T<=%SdEa{gS(?u zBk}j=5Y{T879%}pXEzwhQ^lc$)Xy$?Ui?`Fx>}RPw$Rkq73vnwMVGrt)2~f@a4C83 z#gaE~m~~jR*_c~|dcTXP4f_&;T=xVL7lBTG(d~+pzNZm|wpb=An3a=}hV^Azrru{p zG?Uq!z4?)Z=!1_42txpZ+@-?e46eijq5UdhqseOo-A26d#9IwXz5OPq*13zgWWu)gEeX^IP1lOHMaS*U8itH5I1K491^b{bo$DzmhRQ^{kJ@z%}5 z(qCo>RGZ*o!c^E!!&Br_HnCElTY_r&7Fr}NB)D5tM8}_2=8Smg;&rJ8VkSy~wVVkg z>Y$)Hp;V_(R!g-AMiYx^x|}=qW=^dsN+B!wald2h&=|Qq! zag{j5D1qSS(ffrPt&YgbWi6d$PPF_zlJ^trjpudXPSwpZLpGy$#N{W0d<|@KIzu4{ zNL$Yus>3kgYtO#>Bycq{b}h_T6Gp8qML`(5R+|g!5^l~-wP6F2M0?Y!uF(%CEYLJf zzNSBkFY=p^RsV?&9p@3^v0)mUa}z;a&y_i|!0~%k^Iu7{+QB2H3AQr%O7bR{teZ=8 zX3ma6ZADf>wr*R7ok<&@r^X|BS3Y}sK>vPM%bYDf47hLcCRE!G=L|g8c))+YG%tr| zB6DiOAd#y4eOJM(nYw|FRh(Jd-QBS8qLt%0w!(|;)~(}a<(t%ym?!K89R0vIts%Z{tW*sq?jwT(>_81@SlLWXKUtb*m*&M;Hnks}K zZByQybRua-ooVmY1RRiWMj+6pu-5w_i)~$5_Q3Fk!*y4i9FF^l4tC=nFRQti2~E71 zU!@G;FKWO#415U)0N8sa6ieKvybDpg<`%{Sp9Vxs z^m}+ZwOBdqd2*#CV`;w6wJzSySe|qj)nO7+j1i*2Gai(sat3nkq!5ESormc zzPz*(N=h`}k-CXzxD3M#$Nuvn8Mprtgii{C=6xX}L5Aj-o(B~IU_^B+ZqBC{t~E&@ ze7z27s>B?P{`Iu@>q3R7;YN48b0H?HFUo9T^XM${;)=cg8JJnY*`I7_|{fgT+|1!{G!ose$qG8{HH^(=#9Lj-;{o{q%NPy?+inaR?M%j3 z7|S`|n?ILf{6a+;{S?`XtO+~m{3gOoi_z>X;ur511=erxTz92E)PDy?^sVuD4LaHt#Ii48#?-Uat7!r_?&H&R*^=`5pD0 zYE5uzf@K-(;@tF2s&GQP_wzj3vvDTE4$8{KiLkq0vdzQM#aUr_J3kSIj*7n9PVG9| zl3glku7grqqvV;2E1La5#WPY36nw_v zsGDH26|1F>_#t$oG-myc0jYQFrK=ez#Ifea>RRp*1~~hk%IqPn$P{g+ zw{B{T11}^CLqbd;b9mSv+f4&O3@H{an{#2pVpigL=`vYi9lU!kx7UlT=6Z}iMS8XU zB6Kz2dtU9wuz!$!C@2`GzP`nYiF#FXi%-{UuH=;(V~UqP)ggCVPm^Cb#} z`D=llq|3e}qoRd9U(r+4lrgA+_if|iM;5n(K+^QMlx3j{WqC4i9(sroE*$w*YaiVt zM^)^-RQ57nj0IoMbowe;V?Y@$C;uWB$-aA(a;C|%qFm1$zz)`5{qCl6m~Wv|PaYev zubBZXA+PP^8+-fG-?tls;{M^=ZybJT#f;SuKI?jBfF|qY^yR87Hk6R*hyLzWZJKm6 zI;jh8;f1|jo9Xj;t{iTOV(YxA!{Qdq?BriDZ-r%|Y-U;y`?S8xj5HeG#OrqELj{i2c00T0|dLktv>S0Q8uuioZ>-q_inmr(ad9v#-aZ zsFRUAC52Od+P|9u$F!lix2MCmd!@a*iRzf|$KYxH^EGMtB(Hcl8yG|v#j+bc< zYLGG4$|&6oBbdkM7sd%YUtBM3MC7UPwt*GwSaj3bI*>5T`{QdgSU4XYa!qnix>_N? zWKHfp=>{xpeA32THrRHnw-jhR%`C1*WN&u~HGg{Fh9GcX^TWkee|kAO?!-^j6rOvm zj)hO!euz0TrA`46uf_zPFuqw>ik{a+!q1=7=|a|Hzxw)2&Kg?gG!GmPy)-^Mp-*Skb|zo%iP>J;C2dgvZ8JMgUH>(43bl68Xo%y!hy z$o?O}V_Q^$xxG1KvJ4@7Ixc|}`6p;S@0)yh>Ueo?1GJbI&T%*A)?9*af>bJq;i#Yb zAzRI;`Dwp<$LaCbrff}kj<_RO9C)v41zNGFelpScFV06)6Wh@DZu}jHDP>Te-bXQBr|yiX*RfSavT&^g7c*hIZ_% zqvi!-!C=IAMCUpC9`|i=alE4UjV(5rfK`(R`&6kV)2V!8lsf zn?<(9(L-=UK0#3H%aM6KI!u!~)VZ1#*IT3VP6@K7+QZnJel2&!OjKs3dF_uCivam>KfiXx`=8I8}}YI z%VQB)@~D*9!3nE>kn;>8Eu@cON4Gy`qW2y1WMVM19f3H|GI*lxG=sbT$6Nn7%k;y0 z7%yA2ct{r6Pt~2&kOh6 k*YFS+@kA54gXg}8&650_BOEID1%@!*1~-O+m3MiM0~ zvwtk#dof*4cexX{DbVH6T6I61=?n%qi&xwZZEFu+Yrrjq^P{H)rD>r!dVOCXDslX* z3l|-p59B*rn4uus?n{g81Fv;Nyk3vul+x~I1~aZy9DLt|KP)=lXZVgtVjju! z!Z#-`{Cd<%br;oi9@EZduJzb};{{h@riwnNav8}nM1c@2%htrF4V0T~}fp z*hz4iAOkT63g(7mCP<^!4U-iJSY2Hs=3>9ZIslqaNq4bqu^LK2HOe^HY)hTQqH1Ma z^Hx{6t^;ET@?kjSGr+wP3zLM=Fk-ktaOj;RhWyb)xDRzR)%+(Dy&TMoEGOfY!ZPGu zdY7~HT5S2U&o}e>vMId&qJbe9Nr%G^ZQsP3FR2w@R2z-&1I*?lP-h)Kb8LyR9KmP{`aWR*lU}#{ zCEMFfq|$P!HR7V>tvxGWI3EVqn6E%uNY&Uv(nR8<&qw(vQQ?ysgV^vgLP4eI6C81Vv@afFN^75^>2EW&!3!o=NnA zndGrZcTQ2!%OR>^J<|zp5X^I4b0N~B@rOAag{h`u`;-ahF4vSA+GE1jC-N+}m(O|T zzuC=xLb}UK--iNU+RH@Hj*C z+y*4;4}W)8yd{6=WP>$_Gz+3q2+z~m?9@*O0%VH-$EYH~>r%?+mdMPJvMyz{e;LTM zA8+XYMtY{QKrx{~qHq_fItTj?x7kR@85J+)&e1m!4o}K(b5xAApp(>!6$_TdO@|7s z@0s#!~ux2)=B*0omayCC8>$Oi&e1e0rEmj5k97Mrd{hmkRi zDJN%O6eugBxEjEW7*GD-k0Z3qkV{F2%Jp(8h2J$^^AQgOk>fW{fF|f^)Yfkh$POi?yBtt_;*qpFZU{o`mjHkaowjGi4a@W~vA7OFwpMTf6^S z1%AnfFj<*mJ`*zPzyYQ0G=_?<0Y&U^GQmuK>qCie=&tZOe^){h7U}cqnEV6mL=vXP z@B<+}@eX%xTTzlJQR0-F|3~43Kz94u{gQ$^LNG46o1#E>5J{e1fG2?n%E{I%@BY4K zQf+GAs8PqCelk(#Oc54|BzLim-pHmRUI9|WJR%XhI(7bdTG-g*$|?ogHtR=_guHo! za`oMjPA7NbN#ru!BUQvFA&_97an5U#=FT_F_*cICTOAajd3^e z=hFTn3SVQ3{hVh8Hzy6KqzSWnFxwhJ5XjH!YU!_;b`h1*70KshX6$dY3(Fi~%f zU0i>|d`au%a}itKh@v~2(|0_GUbea}&Gk$VX2ba9u%-tMQLKI=&!VU|#nV?auYJcP zT4*acRYmSPD66VkIP8oI1;Q!T%blQ3NbhG`O*>uok8CP0c^G9TJfI?K- z#~3#HF3xyQ3-fe2A2h91YPY+5gZAA@K}TWTfQ}$B^!FXU_~o`Nd?v82Uq`T3D|=G4 zwP3GlCC6SmU+j31VCCRDj9A*9&znw@>?>rBgG(QSS=>nFy`vK@G-9esCf9jJvaX@F z#73Jcg1YKNNs=bHHcyFvW*^`5*xeRec=LU`PP`h7?S)Ml2DUOBqZoT{L7$hDA$vQRL|~V)6E%n ztz33}mLKoVRF0!ry@*6j?O@wShq+ceZ1`(T={U@v@UE>SM4V6^7)_H(tr!$=K2?u$;1Gg$lgE2a$RLw-Y`#C2X_nr{qEYKkhUYaot< ztNQt4pj7#JX(f?)n>hV;rDA9y&@{Evri$xkdr0DNBD1a<5SzfY;_9+eD6SjBW05Ji z5?NZs@l9usX&I^uk~+%DK;y5(Ql9dyDWEu*_0FCh6)g~*%yN|Et1gV6jJme>#VTR_ z$YICVq>-|g|FhP*dVygbH-%un+$@=2;UQc?Khr4R!A2YUg-u5ms2#2`{+JG#h{l!r zmE^mTUhY=0gPR9}iu{ct#I7zY@WkVHW;JJ2xC9ex7OuE;Y`?|pYDhnf3+&Y&^;=Oy z-L7FGac_Q9GK1W@A9%izUYmvPNtT&wdmfMUKSSHy=}z>|sFVaVI!fsF-Rvb6f>lkU}CH!z{xt={0RxX3Y*)k$Nk1yXJxnTy&F zM;J}|;0?`Qe_{ys?=EiqS&Xom>7{@Brrp4Ge_cX(E2_JLL>lwe8_!6|<|33Q&chS# z;*91A!TKSBJ@#L#OF>sgJ`{32hndUeu}-hbfb{zl389|KJ5G{sxkua zx(yH2VUEQn2>$smDtUqKm z?LBwh&#qGglXQ(UVg%Pbqar4lF%|1rJClalfCcb7HV7}T-j#Y zXOwr_7wq=W=%aG+1N=Ehpl^9HA5F`=`ArJX@X3Th>S7#zNK>ru|3bxIvg3DK7L6K3 z7X&H}^C8inCRL8-?eTeHI+duqo2cr}eEFG+jz9^X$GI^gENxr#vxSpy8CLk$V!P zo6#6mG*f$cwiM+!X`Y>)esILzWOvM?el!LT8{Rrn8vc;!98F$G2+s�kLt?obW2w=(7DQmkF*Ef16{;tW7bJG==LPAafq!nL5p05Cin@z7jkEA?N%*9PUMC`F z;21qjy<3!PQn87zuSc&Cn|8PUeU`**(BX3It*1Gm+U#zZl~DK)-oCb)fjUQ&hombJ zWZHVLlaXSYK?ju5ROFlx%8zGM7$DhH$sx(={>&n?EVq@*o8#GB6M~h#8RRNuGbvNw ztDllT7`C`(sTB_WJ7~~pY3fgUJ9Y8T3b~X(V2>XX{N}!l$TXZx6iuotIu*hJr?;H^`FQB9g=zTFf zV)GDaUi*bO`{JkAOXV*KTCG|Z(zp5cu1#QGu}Mw{FDaY%lo0lzPD|)5A7q* zlKDdrEdbyET19@)`bQ89aB=Xip9dEQ&;r;e+J|Vtm!93NXL^Er2LdF+fOqx67pO90r1|ILQ{FKlFS zcFhfE9QjR%Gird;73MT(IKxvy!x^OXhl`F!2@kf=??*g46TJi*6M60Re7V5-U<4dRbhS{JaGVc`D+^EzkwQ$4PcRD zpr3h~Q^74qnny`{G#c^R4zv|uA>h7xfgJ?61%Q6}1j}4{G>{GiAP?XX;Fs~+OhEu)2^EYL@GD|4UVxkY`yqngYi@Ys$n_XK;I3(M zB>9AaX9XKfi6jRT8UTp_s~E5e(E?`x4)kGXRzR$2_3(}Zh-3wt-+GK~G3Oki(Fn72 zD*rzX1At)x3u>AJ0T;m4fIh}Mm~aCpp@UF@ZWaPu4LFJP&-3K_$aSpEDWx{Au$LM2 z!DDS84u0wpL>hc6Ucl6VHsdZjI^ALOXH?Yxc?g7rA~pCPy`m9+g7yaUP>`==D$Vjs zT3#>`M~=>1fi!;8P7_{|h){CO_wg9>xL6W#G`~}X0hbcdHtWibxa2>q>CE9T20X~lyt-eG7>l5~;+?(=eZKL{Y+?44-=%-e;(P^oxE}T61s=Jxt=igG706sLukXYv=FLd`GKG;;Aa09FRAe8gPfI}tl^9gW5`-1 z=7Ef`5Fx^va52Wsg)w!Cv5o0q`;Bmwe8}6yi3B&BqzCY}GOmMZUOGsqsp(>k^$T$n zmzD&=Ep+adWH2sX^RI$IA3}G;po-G)>GNFV0@9+3eCUktS;dJ({ zC%@vBV@S2t($VN5*@S>8CP4D9`8P~It5Do1E?-xp=^#fRSHo%a7K*=VMc-#1oiheh zS`?JTbYqPD-)SoX{FF~s5ze3XgepM=Z27S}#IzIV|p@elo=d%&bQ_W>hC(!6d z|E7fifRsiJXiao8%;tZv5YS z^*<*|6)Hg2x9-@N~SBlG{`nIgO|&0ss4^@lHy z+CI!{?4v+)Zi}uf@IrRnty!aR=mqlNfQvx^wJY*<*TRr4=fd%Lu-^Yy_%(nb=^#mO z86e$Qb@Rd`|M=om5RlmmVLt%^gn*;41G9gLpMy#9p0(_)dw@nRAg&MiQxp^$^< zHJf?)c7iG4w6up%TF_)T?MYw&NyOiLudtAh3L5q`hK~S}CXB63zJ4x>eX~&i)^=s@ zXPh&Bt&@f(3c&FkiDUUkmJ;yRlTo0?&1r8+ERm80=b!3Qxr$m3YGPP|3cs;8>aYIb zw!ipsPY|$@{|dkUC-Y2C0Dq!SihiNP(syt6*sI}(naG;A2g?yJJLexk3JSjP#AbgZ z8;17T9G`9haP~bij~0FjbTdbQwTr`eF%BjGkob510Hgjf>g1oz&k50u^Hr>JlL__> zD$-c^5jCM(QmMBILA<(2gH4m+TO9=CY5x~~{ZIH6+;2|@-!WL};*OQJZ_TV6j zOEyYi&g-3SF%zpKLRA?3)=IN#+uosiIw0BqYW|;CED!LR(a=YgT{O>W3u2Ano+nrF z>)L6?yyL@>{|bNow^fXdI7Ev_pASVNDEdq*%@SNry&M%HdED!uKR3=ReIFzg{sn&h zZ(D=sJ7sYwE~q|pilRAasl|a=8~9g|n`N}VyWsL*gjs7mCJX(T1ZPmxGFD+O3n)tZlTWS^ro zmjbdIEZ;gw7ac!4Gdu&W09UA+**=l?t;`SOg)7FkHhj!6+s1%;2$+nOj1 zl>^mTdY)F_4fItN*h_&d00r3GfdD2Dl97QO6CH#JebLeEKMy?so~!=PDeTY`vG{#4 ze3rjfzP=ya;1l??rb$BfP1wK0uR+oe?BSBC5AWg-Ts|o|Pe2-DLI|>DJv7)tm7XtqEB9S2hz`8vJJdT8pkbbx)M2rEgQCT=suD0Ng>@hP!30 z%UjfF^;k~4=e48h!6s_&68P?!C2j4A5q)KY3 zye80Cx)Z&0YzV?Fa5J?0d;d(QEtWm_D$94JeGllADH?VUBA;;Vka=7;^FN+qXM>IU;g6-_2K|zZ)a|rDaG^%i;P8*1$$=D zMECq0)Mu8U#yRtndukDLWrbKI+d*?-3&kSNQBfAS7%O@BQL6?RyN6W9&A83oCcMr1 z-xeL45`_=pXMqpnBUY+LEpY|bAb*zkm{$8Qf4p1HCM9!FkQi6W^rMuM-K6PuX#Q+% z;KuuXin7V{{j(nSpkk~MR4mbsk1w#kE!1OiGAlVo%r?z4|U30(d$@K zI5g6>De=itS!oD@6%31en!{HUv^;`VMJg<(r~C$%ahlWbHi9gwJZ1~?E5y@Q$?q^zU!{ zy#_MdFL6kyvu6aKvnV5nH_2^^j)_vAAP&5j7_=+Z^O0tM&NvfVDjMDV8$`}JYbsZ} zjW4?7m{e(fXWL!95JdUwHRAr3lb|5n^Mo9Dfv=3|c@;umcC2~)x|(>UU0eIP;oBQD zE*BMv^cHhWhv;GE4ZLTYdoOimk5+lp2fld*k#KvT{3unLsn*rCsIN=^6m!p0vt>4+ zqsMh~Xb~KSD8$#rE=}d@YgJrWRdwce?5^sga#As$O}{_`CbHg1W%|#UA(Z4G=U$Ia zHMmWPp1xJj5HtZj+Q^2ZC@Lz7>FUx@(@?eZjun}tlr_)?@3{7?0W(xX&}8KKtR$Po z;~Lr@TjOf$+)dtzuP^{bj(n#PR;Az_#wh<>D4~`6kgc7^0&Nyvmp;t&^sALJVZshVJg0!h-^U9Q$z0KPnTSt6=u`% zL3HFem#%)ql2a9T$j{8{enZcodoiZlK!Utj}jaIEo@MWJjq5{dJPx| zEw#t%F1O-C3TVT>9884uz#|L;I}b9SD2}vY3@`vYUhyP`U$TC0>S{lKHBrA+sK{4+ zod)4nt4VLeB(^zT_|cZTx>IL4jM2-fK5uE>JpX1Lj(qun;$mm;r6+n=FWmFJa?zk= zf!SkR@lGOVu3~kT_1HX@TrwW7FZ`;CcE$;^OAAn=db*iGmCa1wg_&`4Kawr3av%HJ z9I2Tzfa9tiUACg94OHq-3cB=UfE<0fkjY%*?h$#T%FFns&TgWy&@-FDtwyX{0$(|6eVS-w5Uwnmkb6!)WxA+ zL@v1+cN7#9vetMqejz4kMr$tAT@2e%9iOtXF$xJ$`T$iXC*I!AEIRa=7T{G}P^{P; zhkf-cA?6^a<7k|UY)C3g*U(#YpOyHwoG!`UFBptwL~ao_xWYqwJ|hO&Q`8aSG%GN>zK zx5?Q3)-#K|C9E*UO(q)6O}tJ0DZO5S%kzmOHPB4W{315qjCv(8$#f?$NSEN&8hGrf z@YUW!$!n=oFf&g~V@{3vDT%FBp`WU8NuD+u8RZS0l&hso*pYyN_Q@hOyhC6hzoP>C#bmd|P*CY>cxu*y1eg_g--^J!E}n6j^ynYwjYQ}%ER`)VBzL#iZ7^px z+qU1_c9;sNJW7{lapsyd__j4mDcX%v5F%UF`pb$3&TG?d9(GvslW42@>} zl@icMfmO3Rx$b9aDw(>h3Jv&rYUn69gO?x5kQ;jm2SI z4$Zy-7A>(e`%R<|*zkx5I42m^IT?S*D&_#em*fkz|_JX9*`>Oik>*`FEgFHbMg zeK}@i&DhTMW#r~1u+#mNoc!jr4o~0ncjTizJb(78d|?!kL46pFlUziUcoiMB(y+Z* z(nVB!-7xLvCr_9WgCBpGp>NZm7;^GMIcC;0ZFbu`=X#gnrA7%NP+m|BgGi2)-MBwZ z+{t4dsggg*g|jtPYNP4a@T97YoXZ3UDPG$FbMFeoYzL;syE^I(SN`-rkITsMOjdig zHzG^j$?H}>oViQorHv$H`R&}d1PpVIB`20Tils=~;u|q06!&MFpgPNL=}(KZCg*|o z4VuznfA0F4Q!jIfA5?#=0U`i0e!JqY_f`^LN*MJR7~KK%sUC;9lby~^SXfwJ&wKf_ z-CFKd{8sHSZGFujfBjhxoeP`N8|h6&OXEb|x{Pp7DHN(EMmtcsTgv(Ncz-S|Zc3CW z7xmFlOlQ@(0IgOsqJm-YYNGqCBnQ-ViPhV4aG_t@x$H3w5KOzfoOTyMt)M(tC4>Nx zCwc<}As9L3e4XW%eQ}xv2uu-$;$oloLc_NWW}hYm!@7&Blgki-N#aoap9WmEFF>jG zR+DUb7q+Fhkca~&xY}j%(2n8pYRVc@-eb})_kT;KZzE+mFwz0gXKbZ(& zEu|=V7{ikBVPa^)aSeX=_P#4Ff~0NNf_7y)im|TlVtLrG(^zQmsSxANq64Y>3#-w5 zvv0Y#8_|?yV%0MDBjvH2m3EA^(c9J(Gr*zj*}R)FVLA@&ASOY%6z_=_>ufV+_jIYq zIP^cZnyxNADFyPAXwF6!mLHYpo^SOU2$N_M-@3cc@MZ(y6|nuX93QV~+k-w{1jIed zum3^Z4{rUFxMxJ}*tjiFW#Kxp#qF%*TTL#VFBah_1bNe^1gC7!gK&iFoFm`q3>03v z#v7XH&2GG(*1}A8p|e;vz!2W8d)Pf+W*sp^goE%awI0a}SykK&&`Gr}Y*%=ir^a^x zBRuxc^VpUjgfA)Phty+UI7TOWU&~fuIbBVs%|&zbH=^QT3%HGa^E@FqJz8sjvM=My z%(&iO)H2R{Y}*_tn;=)XJgt0|VQzh!#8|$&^ zYWw}I_y=uEZx!Ed#y}V*(3#4E=?vynUVtPV!NGdYvd7#j2ZCS|Q`UhbqIld|06nC}Y_9kH-D`DlH8U}FTYzz~>!2I8N&!e4`q<=Bj~_J?)Vl1*s;QCK zR8h(+`+q3{^vLY`)}KE_nz+=zfm{LCC(HcK`2G76nGZxJ(aG9XiM=Le@7}!=PvVvN zBeKnbjz^^dExLOOOY?#hyah`pHu2RGvqp5sc3eQVT%+9Vp@_nC@RMt7e{Z7=7vhqs zm}Uj2C$Co*m&UMZ$vl6`h9YuZ5bZtO$0E-nBx<9+t1GB8r>I^v8b1rGWaYYf+0F?G z4qE|l5^{Kz%?yP(DNkr5O+_3O4eedwZ!-Zn>xM%h_Uz;!zxU{8>sD+VerM-ack|Fm z=3T9xLVJ~9QM=ZaH_Py4==vya8mAL~s`J<_}kPtN2S8MH=9BN=#$;gVA* zA>?^Zyq*9M+cDi7-6LdAB^$&NjNdi94#KU!?wh*eSi>M;(|&zWv{*~|M9RQlZDRw6 zk~bC=UofPsPcW?EbaKj;l81XxS?k5hY}cC_S59DM@D_3%aOcBRNLiIbxio|o+nT)+ z7%e)<0gretctB#O;E0G@>r21xjC-zGo-?uYB5ca0F5G6 zwdEg5Qr1Rh6&b~hGQXwg^CEks_R$}>AH$Iat2KuXV)6p)FWTXACZ{jx7^u8$^JOU} z%ZRmypIk(Qp<{nsINGsr@T^)Oo?zYJ(y&WTZIo9v?v?kW^pJw}{)h3vy1BSsl3sbF z^jhOj7H==I1Lt%7{KQ{XZ*5$D>@b#q*R$h9m?;dhTq1FPQ@8gRFK=W0*kQvgQ4J_} z;e3y8d&&?Z-6QHctV@m|8o!PAZ1D6>x&mT^g1-3MI6k@hAr}#Rvri(p@g=LHyYgYy zpQlCd@{@Q~^J*HKsQS|!)~P>b3_1n;?D^Tjve!|euI065Bmi$gIa*^?-M`4XKwd=N zurtZ-w;{T%kapijWYd^iY+2npRZy^Lg1x3{n|jIIPdyMHXq-t8$BU=!s{Om8|QIDJBy;Xr?fT= z8>1KE?ODp3WUFPLGk4iA6i^d+JlvQ(M@B}Dcm3Mv6SKe|#ruHa31kbKQD<4Q&cSr; z<-hYgeoVyRR75SvjO(>Zukt?zy=ukl%v6+@_c1m$N6kK*On%5tK%)L=T0jzQn^!G| zm3mc`kQZ-{`qdH(>if~VAv+@?kGB0$n6~z3Pv_oQH}jds$d`>2Jw2G> zE%!iNqVH3npS~2AUIWycl3sZ{@cDVZaQIe|`JgfWIY#p2i*h9O)>9AiPk0%Q-(Ikd z4hYInUk|D#KG3UF$@@m;?S3eFsdh~@qnX)-`Nwy-?y#tYVs`4=4WxIxDAKcR;X9uG zJ2+j-8Uko%6+FyS?(qfMN!X3zot5U?7!_{+jsrdsc>-KrGD;gSPi%EgH6n_z6na?H zkVWQTdY2}x@2pXanMKn51$AdM_%OUp!?4CvW-y;`b1|IpU;o1ff9L2jf}+J+?~>jB zWKw8;&W$?d$?fx%FIqMWNyVn4`27{~YT`w73BT<#N-dqwQz;h*7m5ka8ou(J=huLu zba#d6#Qd+NBIiL(vz2*Nd<&Z z&M*fdb#oGrqK?YWx7M2|-)aNOQ%RQ+M2Q2t{q2(nXj?Cs-7qV}) zGP|VW>%&reuJ@VSG+TCZPp-)+PQ6Ml?*P{pFGXntgMTl$I_1tOg4ixey#UYW;RLg3 zN|Rn#F$K{$*_0abladmIm>~ilWtES&$K16@0i3eMYA0v6yRQt-zKO3O8aP!rs&u&g z1#NWDJi;tg-WAHilf!wN4V3vNhpaYTizH;%iDP59E0q2qA@XV+;xB}ODc=n8%~2)P z)xw?pE3&Ecp_j2WTxQ?i;|(S8hf76ZAb_}yptP<3Tx3!s z9p`tIzhhE-{(#wb;%{%kX;aHnTBv@Xf*1UjGMF0n)QrRJ7o`4dFf5$rMc!<3I}k=5 z6?q?xgtKqW>hZBbUrd{3v>q2Dks@IPU3TbblIu{}YZ7N8x3{MEMQD$VFdrXPG8cYFLC9<1WjS=t*4jCS!?fOI{yC_5&W2!puW?-QuU zah_=Cak>#UwDPz!E;4m#zL+GqaaqEephN6_V~4O9wSHEp*>k}CO}(OIyP|X z61hDbsi^hb?+AArSsa%Ufq=~LAG+w82E))FeT5hJn5??w$)-zf=BVq6!}r3at`;N>mz^R?K(zvn~l?G z+9{f1c9T)BIJ~?r+_a63?-=1_T`7CAhLBEIlkrftea^1zTQ^WRLgh4&S{w7{wZF1p zo~m`a;*Of+^U>JWAA=Wx&%@K+3jVRq^rB7DoEZCEqy|kL7TX(2?8o5A|Mh2(nCl{x0HY|NOuoI4~>bKKl{coQL<+mw>YA!k%d{#4w!5mS8OFvyFh$CJZM%^in zU653;4A{D2rahpm(v#;r*Yta1EcWBaTR_Rj4od*+ESumGC?lxsovHWQ z2k$TqiGm0mgtRw<q^6|9O3G{6Ob@l6NDx2&;l??|6+U&Mb$!zx=rJWS0(mX=pV) zqc}e;oF)#sIA*g+gV7`;Bz&`{o+Y-MdtGN;>U&@>f56ABh6wX2(Puk^lQ zq5rK&Wi6P>Qo|d`+4@O88zLp&DaMj63rRvw%T(qW1Mr^GrsPg+9$^yBdGw-sr6%vQNF-PBF=9e zH!SrMt??RxupFJuqA9M4W_aBIEOSM|en z)t9~;ExCwgj8^T4YP^K%0lu4VwCJI*c1yOo%&P|~POeeXUfvZVQki*$jhPt7= z?80Has`BYorPkvY)2Z1Q`v zgkvD7t)WEmA5vfVRdnXs0g3~3CR*8ROmf?^{@CW2@4^U697)T)62TH^_6r`VHCqSj zkF-;h8u_(@?+siZy~U84o)?44;fScmU=#o_$zpVL)y7?dW}mKfTUg?rAyc|`|IjS% zy&dLs*6AjZM5~Ejg>vN7yxDTBT%XqplNfFe zn!UQ-$-Ymir(>WC+vaIYv^E^H$*_tVk}xc&Z*l0U1+4(RQZt!~DH|ckoIgMK2Ah&w z@LqxrjFreO0musU3ZK1q7c)z5G_Mv;}V_E+dCpjHiffS zX;tSJBf0K9lHf18MHKyldE9I~<1Q(KK=v$fkf+dB#{+F%3TUl{vY^j08qTIF7CG87 zX)-pc%*IB7Nk2`i6@NSl%rlT!#dS8Z1`riVsj^JUGr=80r99h!kZU@NJu#`Ec#$l1 zyZH!@D_J;hNL3<%E3NLemepwQPGba-e}8fPL}lJ5z>p8V+|IE(y1;^~*}KZRy8KaW z1QFI)oJWDFuveQh8Q?sqJLP_4pI$jiOkj(zCN4 zBtF)^c{qOt?7$gz^p~z+V61hVs*2_^u5$sxIHG{Bz0~1J^!5bT?N57R9)|eswxiRH z?%pqt<`6d5hi9UqhMbVhcr8Gx+4<;e!%dwji;g1wicf%{0UpQ-@Y7h0yviaZXNQ$^ zG%|e)!26FFAL+E`4w}>$`JfW;jJ*3;<+Y{0Wg|Iztkg#|*p5OA>xs!ni#b9gbP5x^ zS)khcjuE-g_j5zKjkr-0#25IlR#EjrL4Zcov3|at7ZWdr_(lTCnwZ#7g-aAth1m_M z$$7IIQhGLu@XWA2IC6_oSWkB=9OtBy-q57jSG+~9YaApfSMQZs54%*LL5%$fi}}mR z3VOCEQmpTHr2mvdoBp7vKxfo@AW}!B`B9Pr5h}$oCoYBd=!%UE8c%_2WscM_5%tpk za!FYd`aHGmjLstI);ciaHAsZ&nMyHN5Tu((p5{L`0V`OArlFLRT=!v+!7SyY(h!(T zGew_#%BE4tCvTDc!1T!N!2-{bou4Gg!D1V)gwWkAf{`k=(NWZf^D~Ujx}T${9<4S! zi@J2^)k6j0xd-i;Zk=>CJhlUOE_rBDEJdD#S+o>D%Xw? zHmre<{FSH1BA{{~_}u_BiQah3XAN-a_IkNR03UMvn;lgs5t#*ebEs5xS(CU6-~Ozv z`+E8OipvS;p^GU$s_*f!BxN(#`0L6Nd!eK#!bcJOHc2(xC8ACv)9+&cyjpchXe00< z@}c&KcB=Q_Tf7ykC7&DQ5;#-lz}%JQFJ3(z_z0uo2bZv7 zRf*y3K76o!el%0#V5B8dSo<5%JJOdK!a==RBW7CMLK1LdsSlUwv`b7vxNdjDI9Sri zm;*N{K~132yCWBj@zHxniiR6Ma_Yy8>mump{JR4vrjb6h>Bt2Irq(yV?yt=?OP!w{ z*qHs7nd4}{BhLvdMxW)l=c&S!#$&a|D=7|1#?8B(Kr3+6j6;E#qkXx= z!t6DIc>*L;#Rv-4%e#~y=eK_Ii;yb$q!BYw6J-76!=Y@Xv{UW2I>7vr`1ttz-pES~ z0ip1@=V_t|pj~o1SedK#bsM=@)a4^Qc^2W*0$hbZkjSnr&!G}yF`yjl7%tGPJwKdU z`;|ou-i>xcxx7F!+=MfMdHMSK#>d|^9%B$;8Z=Jb7cG2MlA+`z^Hw+U<1or1^-oEv z5ad94=Nbak@ywVp$;UEB$CS7^EySm?;HbF-rEqd2OlcZf@){Z@nL6(n9me}^DW6V% zFd}kU=cNl{$jLGaX{P;TZ$ElVLwu_ zK8awdaNQyr5U8YXa6shYJ*9ss)n- zDW;*TjY7PAjSVi}RmB9{;kH82sX`(~u$hsfnbLk|ypfWL+U1Z)y=o|vv7bkw-y+($ zw2~tgBfKuDa6clATlY&M@ySe)u_l$-wPKdbak~UvlWxG^=vRTvv=@GD>H)LC=^0S; zTpA|zK^z)bI#G2SB}-rwzXW1y;=K@dNoss-RP&yMt0vfWsS_Z(r)|v|F-@n!3$LjN zs^rFCIIFc#z~27g8d$15L%sQ#-eAzEf<6C*@>7}0>c+co;W)f)p2erU*@|!{A%=+w zm~x0=H8i>eQW8$wlX+J*+yz|vV_dCp0lS-^VNNuE*>cPXC11RZ0|8Yw8c31RuK{f8 zWaBFufLC%s91gVk630yZqQQ0V+RIt(^81&9J4ghrc-ejPp~~m>Y(o0 z$LDj??MW7T8Acjl)|sOHKQ!_AxVen`Y6IfW{nnC72a^?6E=Oqb<8O;_$(JDh{t=azI?!AXbHZA7>(44l_GObW)V4o=Y zBu<*KTk-5{0~s~x^#D{g{zghI^*s7&HnkFRf|(Q3)E=1?i?=54=vl~NEp>rZG@XR& zn+6a{D-~)n2Q9jCrFhekr=+PELM|~a*M&|ui$wDHNq1O`eutt04hJo|)=o4 zYt~DJYs8qK8{>ja@O_C0=KOc{sIMm7C|#reqq#ucAS>%JE$#74Q_+`UbO?k;+q)Oo z!qcPRMv7U9Cq2!Q#$gl!sU)@8HDC?+=q1Df@d+6 zJ|Zk3xR_c^=71PhIRdULd5sYl5T(B>*$7OcuAkxHsI%y}E{QvHzeIonQuEq$EkB5_ znge29s{da1=0w)E%NEdt7HH<}4Qod4Ur^K1x&umHsT)d(T8n?+%Kr)lk3%n_MoRDI%ztTs_C_LaC_6U;}2O8SL^s7X9^@1bS)T?dOP0Vm0f2gBYTRw zIQId046EP;!Id=mSv{KSkR)^O<>||sQj&%$#e}bFm2I<`NxMxRSh{KP6N{4-A___W z#uGN?6O>%w^p2q|+ni3$_8Y>~QOc7D@l4xyGzw_+s2m`^n>lwK)S8zdj~a#6P%E*_`LSLv`YHx{mLrr+^hg?ul@ z@N;@!Our{*w`W~Bx$bRszki)x9s^NAL5C0OGUPWN+#XY<_TqUro8EHpHvJ>-UuBR8 zA#Jw9cKKs_VQ!qHMemAMw zI9*|HeH88eiI8#eRJw|j$wn^vq|~B1PCNO@7{=-B_mJAcTry8GaGHmroBWwnH{Miq zUV}3Em51Im41O7Q@u^Ys+?6=t+1RHm*f!W|J3Z|-5*4X=)eGM*14 zPw!79s$yaV0*_I&FEj~1%EVGZYf&^NCOgdav9{tO*OOt?I|wwn8`Vh2LsF42kgJUx zAoml*88AzlT#%`8dJhHRIjhuOzZZh&uS_zhN}*YDk7UX-uIpi48l?L#j!Yxo(>7`k z`3Heej`_^2zo3Q}P3kDKhAgl4vHeUr?6igP;Ud3e^UflPk>{FKw8gCI)%9@Ze2quL^_iwu6KD9UWmQGus zUUb;@d_H~y4NXm^izeJ{b!}}qw-fm<8PMg%5D$>3%dBMS5?MBe+nBQ_NTo(`{0)lu)yZ*C!cX6@BTu(aFe;cRw^;8G7K`Z$G zLez{l%rIgaPfeTxzv4rf+xJqPj5)FF}|nW`r#?})ZhOsZX>>m5G~~PjJ~w45K@T0zaTu}w}rQU z>+8wMF8`PlgzMW2O5B}tZr+`($1FT9d&5(zH`m@%Jord zox)E~Gu80v88#(e-mppcd6*?1ldXme^yuD*3hz8jo6=8cem6&Z(GPkuKN?KYh^?=M zJ;Q#66WWs@vwB zD~VC5;Me2%4f9wk=7Z_mtBKYx51w-?Xnx&}%c-G_#FCm-PZc2Yzvo|5m>6MNYc_Y* zX%GkYOYhwd+S=cP%48y5cXHL>{h%R8Dn0i$OK+lYN9iZ9Kbj8&eIfJSUaswkR4T`&?Nzc?>doxFR}) z)MNzV>p?zg`!&0XDYb{|4$rD0Xrl66#eC3>Uf!#(BJ|1}Yp-9Nmn*X>NL5rq5k*5zOQ*I1@jr z>TTa5@r+Qqe>!8X5Zi`Xf3Ciwtlec z*52wcS8ON_b^~JKN0`C!XY>ASy^+i8@hXZ-yMsY%dqBJ`P(kHr;%6{Zeood!@9a89 zfw__r5QnXE=rv+()|}9 z=RO!6yh#o^rJbNZq2%i;3Wh9J>r|DLuGiMqUWV^LC|Yw{$gj8GYkN9*anYiuw-@N_ z#~p?E`1n47ggm-};y(p+7U~q=9UIP?w zbI=7J=Z`O&n@vi9wn>pzdBb1Ph^acmXj_*9f9rp2b!Isa&$SZ=C0x_45xZfTmy()X z)wJu;8f(vQVL2Dw}kH~T;0M;ndy8JcfWRf-9fQD z;==V$K(v{z=r_M;I0iIZC6qToW%0l#vl+7IJ!UujugIS1CYVNNg1qk^!ZWvk;laB*<&j22{Wcb|k4B=G z>{uXl-}WzuC@*puyjQyOHjJRq*{+uMcAJWKs@Oexp3H?%r+9-Q6k9ZP(APVxf?*(3 z`r$)7U@G-&kAwjr2)KVhEW_T@PqqVEt*H;x*?lRB8>wIIB}8+sWX_Po+uVtTCmO8TokS8Q*%ODLgdpWSA!K z!j~M35;(h;Og#479B*xTMYvGMd~02!yNdFCQ@^;*>=7Xz2%{~6cr9c(cJwl1e!A9O zQCT?)EkV4e)&~mF)J0hQ3axmG0IRq_tFI!QSL?l#d2;w$&}ciaLXY~c$;4+Nr;g$^@p23A-Q^yV=&zqXvP`4fRR%GanbnI~1bWL8xy7xlNv1s{ zNJ(0k9H#txvawPJm&qb4b(P(n=x%Db#1CO6qNcLzWc?{Fl3yE7=7J^bVUVNgAa2d= z6e9>1W{y6FtRh3s<@2G)J2^HB%2H)O*101XNdz9$3%YqJ?v2(OdU`*8#NB64 z8IO75MM{Kzk;fsgv2xr&*6iUK;LpaErn#^OrG)U}u}UjsG}N*^E5#Regge#APmLYz zAVXNcfzGYSn4=Krljm4luvJaGQ)z^9?!Pk+-zzo61^!GwXEGLz@S=6r-Q~LMoLuN( zBYfwvhkYumjMo7;@7p(5gQ=~jLFN)4>!d@wn1fPNpf$Wj?yIZQz>zZ@ggdwY@QeK_ z*A`9SNFe|q$Y$i!8bwASbMNk>h0RCF6UG^(Lp3|$ou`2x@M6OMIlA@`(O&Fy(V`jGh27et`Is9};jBNm&%Go{fe2br2h7$Z4k@Of5AiSD(N1XWopb+oFL3AkW7{VbzTZ@&xB^gJjOo#T5qUzveet zG0Vlc^Vq{Jg1L#Q1}lD>v;ZNg^PMc;j3Ciehw;PsT;XfGwTcE`dMkfm88Kj_$~MNf zFowIT?aV^*!i-*#MYLvlPuXX80$pY&lq-3ByL!e$d4?mqY0V{2t8*j%$#tk6@#TrU zYCMcHoyJSyNOnV>Kd*J>Ly8}fCaE+;iAeP?yeU%{z6#-Ebb)zQvi<@jh8yo)>#l(j z5OO5;Y}it5Z+J;8lv$FhP6L&B@|N zu~HYpd1;>X^z>4=JrZ40cfp|Z+GmZD+*bj!MKK5AaswW=gPqXyxgi}I2~bX;EcpEx zZ|sM`n}2n4{C7L*C~kCB>GmF8)?$B`{Rgavy=mW(Y~Wkny!@Efr*TdL>gO!xF9KI3 z4K3w902mAX@aoRAul7jIT}67M5vIx8FVw%YfZ|VaFeKC=60r6e;hFn1X~4f~JW-E( zCOH3rK$&<7$HG!bU3pi5P~{bYW>QZ-=sAEXicK49_SuiH1mC^Jdeb8qkZLZ`JTa98 zqx~xLn_ldZq+Ix46J{5Zc2fN zT{?2~x(g^Z%mzrlBF!~1JgyBQ<1Z%@>R`F7UjB^{@^(YtWZoq58JkF_w+H2ap?1QZ zo;|P2{$2^jnyYnMy~MQIMSuum74Lko4;mN$#|KG6z)E>hmyLM)6jV-jpnnVmXH6E| zKLnTy_hoRUseuiyeBrV-Ry<~04o&Z%gl8$%8RuYlh=FT0MpD-cvZ3UG!@etbD6e{jm{K%+OMk75)*mBKNyBW#IucLLxLuK$PM?a|0Gz!fpN4bUl+yP`YL zA_htYP`uc;@dnxS|MYKr9CG(Y>FG6Z!O`d&pF#6~5g;M@0r!S>x0d%mgL44)M*PYq zz!4}}0`QGvOlC<&xq1XP_0t<90LlC(aL!vX_!6s`?lmJy08%k`y}#oH_B#*k??2_l z{|h)Lw&u5p34te`GydEq$m5wm*%{kt^c!~o*a3#y{|wHNojzey!xvM(Mt=a%FSZ|U z&JTm{3XqZiGwJ4U5FECWfSBswnTKXC024%@yIb0)h#~IIe*^3MPs|;vG084N0Qtc; zvjWRvQIuw$U|F-jSMdHX#l1I=B)cpDD*j0k!ySP|wfV!#9sd6S<@~W*d;AaF4v@0! z(wCl6djnv}4SQFDE^zp+Mg4ot?EhF!du_?Rfe4&u{6hdIA^<63R{>Hc1Qa4ufXf|x z4N#*j0t%4=hF>8QSB!1}+76&WRe?|6`;XupMPc}ogc&hH zcIFa&gSwrKiI(?|0ac&?0P>%}IXC;!PyZNq!r#7R^xT2qE906Q#SY`XL@n`LOfyZ( zS+uMay%DmwO3j=3a8k+2Vo^%k;eJAQ!VL~lyT@U#W7==>={$*|9=}abTKP+Q$=J=N z%<%TSwcbSI+-cyx|77D&e|H~5cT>g4eS!&hGCvbCzY=p~p*d1;(?@W#HeBLsxWrf~ zdZZLhZ+z%qx$k?I&q-xN#RRbw<*C?<7yRNvf*J)jlrL(aF(m z5i8~_VeLdVJ0;qE(RyJzcj2*AG1YvIMH?DzUoC~~9rNL0eG??6+;93-p&uMNA{93$ z(&NV~B-qMq`~vSg5EB!RF!=7^?_3c!k$4HE!2W^F@_keH5~*bIw<&Gs)yy~8JiAMs z?+@j4e3ropI>&?x8`iRaozOAAcgXAQb#1w=KRKP``o6BS{M$;vI+=DEJcpR^Z3-0_ z7kOPuz(@YRoxeT;HU$((>y#1WRwr@^gFzD&AIAT6a#s+)DYoTv5KPJGteIi}%|$uc zYxeeiYfy2ruT4&@E>Piw4DAV37ND#RW^;uqr=RyuDPdcnlj;&??dlTJGjs^zsM`qQ zd@)(D4%q`dm`y%2k3~Ln#y05)p*)y}(=vTq-emd)*YRsn+~(Dyu#Hx*$TP+ZEMazi zL(jglzXtdOa@!^RZNp$cYGs(;8b`ydxm_CmNF|meQYFOnO9kPJ69y6oUfm{a m#yeGL()w)u?2&^ATDMWE@luLBMS)3!U<;Mq4@Km1bVYGhJuyei2vye z_{C3YW^Zo;W@dJBa$<5~V}je6GJ|+{c$isOnORvG0SZQh3(VfonGuGd`kTWW69mN0 z+{WG<4x_l^XlMj?u;-@)B>g=EYny-A!VrJd1SpKz+0cd=#Kdwpq`wG_A^*_XIM`YJ z)wwZ**~H4k+5~2g0BAw~&;nYLmHmhO-?Fu~{)ZZ2FXjkH^k;1UmKverVq?OrWP*S@ z*g;Ih9DyFG{uT^juVnHcs`(#04v_!zu#Fkq9*!`B|0hcL=k`CUumOwOnHbu`?Ns1! ztG{Pi;cqS!qM{VE>gF(GxD$fzPQX9pCT|SwP53EUSy)*ZSvVO%tSYRmU=S;qm4lvz z70kl&n^YDsA!9>(!+%T624>;;{}IED&7m&;EvYdC429cS8v+V8w>C62VYY#p{?(hT zELakTus4K3OeEj%Qv#wgnVTDfjg48MPzV=@k&6ey$;f8N4rS!w;oxS38iROP*^G@q zY!J}j&%c2~9PTFn?)l&Az!(kzc>JR^FdHWir!k0y>y8J6(U6-R!pOtT2K?hRG~@(v zutQkb*#G7xZ)XlHMMJB9<$5QTF~E_Plbwr`)0m6V#E{#Vk=>Bpn30AXDaAQE{YthLF2u z!cPggn_?4V%0JEK|3**$Gl_n)buu#nnEn@&|C`v)V`Bw$XTk<$I%MO#pw(O!=P<1p#&=JM({0+Q0Vlj|de17yJ8fr|5sS2LB7&`hPJ+%y*l|?={2x zzb>cWzu)}Uqxjv-{N1o3APiWr*yvm6Efy(47j<}qYrWiw#}Ab=sGF*iFWqoE1l5{+2cdDz)Fc#K$B zIr;ulv6cCM$BT>I5cqHyF@j7?xEQ%O*jX5jIDuV-&4|^A9l`-(VPP}*7hZpH{VgK% ze?6AJDE|d70D}D01b~pc%YV=h@Z%r+WC8;gu^oVp2zsn@kdS_8NWKwPagN_gaB{{Q zxoHzDSr-y{POjQ-Dh|~z1B9MR0nr@c7T^{2uTuRG~-^A7*|p>W$M{ADQy!vk9; z33=of9l9^_()9w?M?Uab*C9=!k}v%hSuKVdIft=k z)9GCL+U+E?_7Lwy*3UKS{p&;ETfC6h*K@ZU>f3%8o$?QsckmTz8Msw#zn=6h_=S>` zc|6x)&lAJ{}D}KfU#MCJm7MIYOljV(;u6gr% zRk9B^_|uQYR!oen6I+>90 zewQ}3nX0R2Kc1^+10!wl;C%Q++tY2fQqhfB2HGVg*wIz8+=gT{lP(=oJ+XsQUmKpp zYS3Zg1&%?E=U70ni<85*N202Awilh>IcC$iCy<>S%D1{v6U**UN8aRv4d;MsJGg>E0;fwasxR*6$`RxUCq}`I)uJ zK<4~}Kgxz^<|@-o@@9&g`t2kK(d{}f1D4HyZZYv)^)q36NH}_ZgRgqkhAZ0-B?Rr zb#U0ZP$cpb^HC#v&GN(7-5S3n(U$aMZ|0k~PdBPFZsgE2DbETosb>jj1#wICHddY>cgL3ES!y_c4BU| zH3prBxiU=07MZkOCnDLSx-0SeJYeD6>+_fwyJLXG;;Qz&AeK>|_?d z_@Y|_&G=U$;SeR_HeqM7#sW7dn~d8WJ1ncp2`EOfXwCBV@|7aBq1rOmbMVC6^fL;^JUJ- za_g?;XnmYUfDKk-=z=As2}TO>PFX!XI3z@~*!W>)yq#29nly%aLeyryT7CUI^$b^c zVq8c#DX#^Y*R9X#b$G-63b8*VQNRP7lf&wH<*Ze1MTaBz`Up{^?GS0FF9@u0i7Wbv z9fsqo)x@;wYTGM+Q&*9^(v7kA)7P4_r*w35Di!y7@p{KSr*sIIdr9Y(9_WubJc!J{ zm&IIn^du@O421<@S1UTq4d2(zT8-cI@LK4UtcG|lN2!n3)!164u1Q$GOaspd~!KM=O=pSs9!?al8WA3h~7pQ z=!ln&@_rg-NqK|gV-B)>Xq`zjlFUpt)o%4A4L5D;_E463g%A>&-*bL zv&}s{k38SY{R{J9=tQ_kTvSEA(Wth=FhK;hMK=-5AU7sWccyU*?jk=s^+;MECV}}S zHBcN%cf#h}KSC3A_H=#y$|4TV18T2by3i+DEer_KEZHb>mknEFHH+L4oH@@s zDQbf2bjdDYJR~f+7r%LUw&Tm`nxVQGtm)y7pKnLJ`YESDm1VVMj2$v+HLF>lA+8np zWvsNUzM*?#XchJ1Na zndo0*mYof9J8+<5(z{q_h&?~UAa#)qyB*3Zp)n`H6z*^ka#skEa=EQVyOz;FZ{bMI zpK~R`z$h5{5vIrTtfYM;v8K;6r!b!LUh~Gx9%nqlP8i! zc$hV+W7~>9Td|tpM26LMTpLCQ9s5;3n?p4Srg$$Rp_g>e0M5Uajmc**8%q>ziRFwX z+Y+O{c7n1!SwU6kK(>o}QnOmbu+qrf%zji#94EnMFdM*@H*F=9g5K(MZ_SZb~3@m}II8G=N z&&9PRcT2-iG4p_sqo;IMz9+Fjj%755{S$n`Mn)rwiW z1NYrCZFx?0I5XCR#(K)4ruCjKn_-%}uB2M+Bo!I{z3yqjJcB0`3#>NNu|(j5aC-sc z?u9mo7ZD^vPh(KjNeA)<#l;ofnaK3)h;A&9hM+8Kcy~(o>$EA&hbbE-+B(*%h_iVu zd6s88<~lD?@xn&mW3bF8U}=?_370^7Y^ror)YLx3#&$-~u;ZAmPgSE!IP%9lzi}T^ z=x%N>>nYH!F`Fo+uBxiqnyrgVl6(D}lFMwBcWXYuX>I}jEezL;BVZdRXQORvLLU`% zFqH!LVl7td37~Ss%~qjHQ`Xn>Zf@E)`=XC0F-)TiullRHg%}UN0@Yi(jrP%eZ4{%FkA!T{qE{7$bV*oY;!?r& zHIt2T?~;kXNp{sj#@TaXiYzT?gGCGtU*zNzyI0+&YE`K7lb2?+jhCHD;3FD5udl+n zEN8oS-LraNLXfxPC4BxT!xgm=&PNnhf=j4fD$P2jj!Gcie`HV^B!1nRSKR&H1q@j2jL6 zpC5*y4xpx^@Po9gEd3G^ReV|jA3kFYIHZR?F=f86VoQq{UugFL4wucZSR%z0OgkM3 zor7|Fod7C897z?BM2TJiWNbK)Qoo(QD+otZG)4lp)ipC1HEMkDNS(@Ru5LLLHZ0!p!==&#FJR&UN(0GPWFtukVhN5JN zed7?i*qNzOycr;zoqf>gwNkel#~_%4UByAhenAQO0&;_3<)x%y6M2ySnh-K+QF%|; zE@@`meM87g0oBFy_3P?0aGl$Yd*eaf8I%9w1xNy+T!{-2y%9+b4=v= zULINV@u0X54V*1{A_|1QbQaT0cwwH@T`KX4$gn{htMc4D^Q=MV5ZTZ4J1u@pZWP76 zl{Ty!&}~i?Wk#J*V)4CMJT6`LYE`#gP)#eAf=*j=PeG`rX@1;~{t@?mJ3O)d0>?C3 zqYVF?QFL6b*GxWX2Q3G7AJ1$9G+e{u4 z>e%`Ymlh&~WXfErFymyYdGkpehvi{Q3tu)%2Zb@+6}``F~d_~=E(sy5$VY70!kVb)zS z+HyRB>UwS?%quiW7ZuJwOcTG#hVjJr4z!SDlWQF=mK|%Ge}ouhm+oWt;Nb5^>5c8F z^T;8B4z-U=^MZIlC|+T+@|_;nHp>}HvD49|m$>OLA-4SV@<11-YrVFDD*2Z9ufdjf z`mpJ9@3#p9>{w` z#N7Q%qAf2h4HE8%4JrBhJb=%nyQw=wG_gE*;)symwUa$p=;;TLwvP!Yjwe%rQj!}= zq}A7m%{xLw0V&7mGU6QSpL#5eidO!j#g-RnLIav=ex`7AB_o=@N60dDF&KA`8c25A zR?!_X#BA~#9&fOhL9V$Xh=`c}Di@HN~)+MR~V zdA4tg^fX3Pv65?AT%z%sem)BOrd?q2iG?+eGK48F%&;MNku?XFG*`*5js>>X?Npc zwEc;omztZ`_H)aE00Km}iFw?WJ?!Hr{EJsZB}o~p-*Swh#+=VmbFy}=4-yM+SD(y) zEM-3($Bj%WTDP_>>bJzD`rpH4ICi@g5uMyhAqQRPbDP{_<-r zKaSwmyCuJU+)efmJke;o%&yHxPj0R^Hy3-fi6LM0v-DTrojOh1qT`mIDX=M5Y~W~B zH=d67r-&|ue%L>IT#mh6?L}QkK2Yhim=+;G6ra`?nUpxPO?ZrGwpt^LMf?zn%&yXR z?DmKR4m#u`BR5gO@NRs3{IK;fn5MdBrUUy%%*;+3RKeW*jENoIO;fr*YODoCb3SM> zg2$G;(lM~;UO2nhEUXjU9sf?1-uoVk!&hz?up(d@3kqN@<+6pr3Qp(qD`q!l>r(Vq7|$w41&AnGrSwq#A$3@A+xob59S?fT(--`2v`i> zIf;?KJM0roI^G;ZG2-euuuGarO0t|bAM(*s>AYM;mEmM$@|kjtdB(;rfTo7$C*bi0 zo6qCIzW!o^ezZWhYr-^%G`?BUMK~gIllaThf$sZ`$X$tvhFGE!nw?LdoK?=|kXlgsbU8mW2dCft%Y432o|O33GFf#5{MDm?z7Jkvf=O^r$0KTQw=@d{&? z11sbA%E_Y_yjTW*FsAgm`LXpc2ojtr_i>QDl8f&c-io*icW@|!^ymuuGs(BRJ_g*_ z_^*B!ex!+^&WSotiH;-P@U0&INcK%;Y5V%^@+s$+r^*eG{eGUoNRi#2)<9$erjV~G zlAihYeH%91{x-I2{Aperu8K}usrk@bSy^i8))MDrDGv|+;8dIQjO@pd6YW~+(#DL| zEhYSokZAwfg68xTD_d3HUT$Pig_}99wwl$jn=Z?%Hil>r3p#)*Vv0lGuiW#nU6hYJ z_y`JU{|?#&l}0V$;j+?^6C#{Rh)ZU_lc-@m4QTFMnQnJZPTSIPVouJbs%jmT+<8}wNp~zW+f@If z>U?(W%C>HAnKx}#*k4+#mSqegHslTbS+8c(L zHtG=k#Y0#k)W*Q_?PrS24qNNt;aMSZ#R4^R4=-B_><*A^#58ZewES!u_0yx^-W8fD zedJ})d`=(1-j=!J1<}!OhkarxDxtlNLX!eNBp9NBbjFm01inJhv{;E_TmLFhY9-@h zxD$bIMPssmI|zmm9_+&QDwGmZ?(f@5VvW81s=OhiNkcyb=(U3W>UFp(Ow3V?@FR zxv4GT)}W5UldUIgjh4h_AP1^3YaRh;LRlX)Yv@N6hE zUZ?S5N5c$jlE=^(n>bX@aB`WH>`GR{juH@Ke2wkWY^c?pSh>6Pu!lYR#smHEdd)Nys(h&=B_y`T`na>zcq9JaB@}niKI4-!b$ugNr8JU>m zK78Dst8$!2r~pbEOKiQ?WYazHA)Bt$0d#8l__IX6Mf`gRi>vt!>`6|^uEn)h?)jxP z=93rD{JFOuHl1!LIa8~a!g-0j8WWR7{Jq2>qpbG* zr%IFSMyKC!NLy}UPWet5P2r?dJ_xgq_e|W%I)|X9*7jwtRNvdNSn6~xE1!+PxG5_A z+27HDsQWkDnt%L%U@CH4>`(Kbpm0$U65HvWxamA*YBML zBZU)039Iu*o8rT(gxlF`OpppTatgnAdZ6eGG1^skv;g{@2_wDq(ml_f^K{kI)1VR1 z-)bQ{d}oEHzNa42-a-bUXA(OSYY(RbXI2tvGrwOsX>lJOkRTl8`J7T=PCD%%Yw4cL z(o<-yU&=LfWZJNzztPe09L-R!o7%6N_nLG#RSB*1uuzw;4K|^Eh{kCMTAiK+yj8^a zk{tnsO?wfCoAcJE6fa%<>x9Iux+v%MX2r9wLa_>-ZWdk zW`*v?pXz2-Nu%#lX}7>iB|)EyVw_CJe07&Z6!CJDEX(AmRaO!3;c2$VfqJVp{sPjQ z^Es2USr#6@8ia7E{U$TQOJ}t03??#n$}r=R-ZWqb(+5AXS2kOX zSxP~0iv~qCNC2v|PX2Ah`D?SB7x;Mg_^Y< z?nw@Z`$u3ir3S@arz;?nVR3(n@DM`-0J_GLk_is>`?u7ik8XQUH2@;fX$WwP$bPpX zBO|W~#W$wB;|l}~;z(xS&AF_S7MGM{XYadp!W-rbyW znp5>)$>k#~3DrC_xrh|WKYrofSu`}3ayPy(O#wO?CgbkMEGCDpK#1&;-Ry_&L%t)0 zB~B9L^C_sZ17QjD=0zX1ba%#Zf9Ed&*gLQjKkl;obfu24gCgotuZ{W9fz0{mA1_M9Bue5O z)}~wB(yXMRZII|7bkzrm5b-ov6OQeHw{IPp-I)1ml@5Z_wh!9OPRXyX;>JF-cua^e zBOygp5`l3`P&^S-wWR_|ukpDlJD+q%oab8a6^?vVnxI+f1b;7b2TtE-eC#Jdgfc_G zssbCmrsGzuGEkcv@I{fN`uv zEXV|B*}jZ3w3mokE9ukQUHS2nmpJsWX{E9SD|zQ38Kz*vn%A#yXnE(?rao;E1>Uvn z+cS@)Fj6d^@zsf^U%OS*hdtbWT2VxXs!+S51xOC^y7=NKO;k$IdsV{g+?&Cm-!#c2R_( zQU?*Q67~}?wBbk7*sZTV{OR{;qLdS~%JR6km$DtqvssW?&6)tkH1YFw(9)i%*{Hgk z2jTJZaaIlx_^c%=E=uHg4FvUiZDEvQmqEMVdsz!(YT!E4_-t)isi-a=@njAaz7Bz1 zY7M1|VO|_>w(qIsE8_Wm{*33zmy*IDuJRQKS1E8kij!%9ya%`7{g!m%#M zt*b?!C?w1zRK#@{SIfs}Cw3ySmwea-JtxWQ=A0xxN)`%z#e0!a1nnX6XNHA!EgLyG zY4m53fGy#Ib;qMg=2HyJqx;VvLwY@o>Cs7S-km+`_C~?w`w-7;msL=(a=}$-Y5;@l z=syVa6rgs;94(2ns>I$te)K(hX-waXno4wzPrUFQdIdY#&!$*yvrv}A$CWyY!NuQ* zCW&K8CJOyV2eOO`@^cJNw)81!?iU9*`U>#ae7=1Ybm7Ic&*p17AD;AGzJHoqASVVB z1LJHxGs*tjahPG#4^*r*L8M3Gj&w{7mHh3sMer$h(fZhk7^fH#XV|k_HF+n=z5q8qTzr;><0ZGme|HK6>xBT>**83tW;hvrZBx zoh714a?dlvr66mx#B$H-5raTsXNcb3xKk~VGu;i6AopOW{l2@p7Bv;cX<~%ixr7-p ztUKSID4L2fj1KRH%f+my1M#jW_9#2rZp>b=@YB`eLDm`B5aNP{CWUv^4RKwaodA&8 z$C%1hFWh@>)vqsI{1$;(o#hD5&&@r&aqpzdM6&5(tUxMq$Yog&du~46A#xViB($Pt zMjG}Ss!#PfIvVklI(qL1CbM&d!`Apmbv+lcX=l`QE)g*?ztM#(qmyft&5074!n%{# z)2Z6p+W3)Nbws}~y1Bl)r^L)M-}TXuR)A<5NoW6TKAeB?czq}U$h)TIydKJwUj^n9 zh@qFodpHJ$&C(E#=W6oiCvpt9pA*~_3CzYcoGoJZ@~o1Oxov@vCd(|_ZQDuPLzwH= z>dcnf!oqm4dfx|JU%vCI+w$0czdK1BD2`u}O8aYN* zCzADedti-jrsf8({4iL4`K(+4C;g8oIQ3+D8tBoh%77(d9AcCXwZB;TQm~>j{f&8L z8gek<;9k;((rQwvTHzG2D>R)Gho>IA4kAA?#PqzqcG3k|uIClZK6ghUfOJ2OBhj)} znE8w+GBMk~dOP{Fb5GGeGNxsDaXt0RS7g|%r<9ISul;7jxt!{~dRu9XpPg8W#3Hm1 zp-@nJ>HW6lbHHwj8ToHU_Z3@73Z`Jh{VPEF{3Q@4>Fn(M@DO2VC*ri-Ge_z=w;pVh zD=OB?nH)Arm(UwLz!KrnXmR!W&}w ztDTAaUxle8dYotiVfUKHr_?~QWq4R+aKk(9!-&|7^ZK`F0xnqm+lqcsup1YH^MNp#Wy`J%h?$uc`AH0HOH zOuFE&4Y2Ewb~5}^EOi|hRA&2gGM!jx2+s=tQ?Ol6dHWAe)q}%BO)u4w534<+JcD`g zLvfX!$%o4vi#Mg#XjpyNgvtt!+MrZ%ycl_vGH>v1UX6KzMAKs@JV9~E2nGa3n5}Vo zPy=V{RpI8@kS`?MUYS6Z+ypC>^#v{=!kB~@@lup{J1sN{F53aDDZ=(P2Cl+rZVY~Z z0hS%b2i;c~k)VLK0U)Mwv~ms0w6z|QW!+}i0TdK z9hmZO7%CqU-{N=|mrw)6RprMehHjOfq65Ew0AUad(FRi`0W~13fF=#$%=IroJCZpr zSMGW7cSC)9x_jQQ#5d@VP)}ci-_cgKcm6OY2D7rRj7wH?vNx7I?wyh~1|m3qK(Ja< z6y=K4Svr@54HHCohsOZa=^u_Rk31&+RvE?q2h{C|no!Bq@&j1ghswU(5;Y-M!=IZ- z0J)bP^o)kep&Tu{go9hov?jFdaG6jf@T!-0x4+KK3BaO2nh=YFBerC^k78e2?iI=( zE^H1bc?H&yV+yJ$zBVuPck3?;Mon_C1tN6yl}xisBK5*YCSbZGQ%DWeJ{TAn8YQm| zM69+YJK#;n0BSv75qq9!BTXVMvXMvro85~~z2!N{$iu0Fqk-Db zHl~l+-3%zocB+fU>^ouY{&Aj1{G~v;SOP&)@BC559~iOfoeMe9{1HRQ*^nseKy&* zHVkBc-!8#P-CpcyZnMm~r=W^U4tpPUnT&W9KY*jPIg$G+5S>_$f=uqpSS$47_l901 zeQTdNC*eapf(fDvQ;EosVII6FhrJeyaq=Rnqq3P~i2uNJdhf?G3*xKqn6cEeed4dz z>8jW+ycZKSzpcaB$3!Z`bZaz~`Cg zM)X%Y$aEOf{fw~~ZeRNPtj%Mpj9E`c3GZHo)=4#jUX3sQM@*wnC6UUi28sq){;Hife@L-m3%trjg& z6UFJ2(=O`C(y)fxI*{Uh#v{v+)i~qdW%H$1Sv^>AXKAVOs(DdL(eQbI*?Y?+h6Lo` zE)m9XV+`1ctdtrN-q&12dVp`kJ$zT`E<2O6AfWfk8HcQ#4SYfhM#iwyS-0n^sxCmO znu6*;MFuThs?h_nDSM6Y@^J2f@0CyRMCY=gd8C%i3Hb&CWN*2SLML6oPQAWms?|n! zl^WXcYr?WDyt1s%T>+t^r!Pj=y5`VV*R38^Y>11s=2zS1?sPmy+O0cH95Aw9&s$}F zb6Tg^)pvRxR14I?wVC0e{uOA#7gMBV#P`;7UO+81ODTDJGyf&^UKmZomamV)+}E!> z*uw%~w{azFhPublZC_8uqYTH4UWqdAkxBeD!vr*?+dk@9440oA`h(?~5U$z7Ou3Up z#J~EBRHF(c4Fqm5Xq;36VR=Y%T`R{x5oR-YK z>b7=$@@$)t@Q9#3*U94D(RL0!@E2iSKmf{+5vV zxdDYumT86zj6(7m1&*HY10y3oX?Cf;C`rggG^5lN-ky**bgD7FHtGGgd!dT+5lHYX zCi6)ZCNRluxD_nwBp~B-F4P|O4&@o6&@U>OeLMVhI#t-v+S(`ng?MD_y|T{Am>|2= zxB|2fhyMpq7}#)xes#_AjPw!oWv}#R$|SbB(+Ga}i`m(iT47xHYm(beAx4V_p(p)S zDWR1|qF&YbQuGVuWUflQ+N&b>rkm3W;(Ye?JJp+K zHWxHjL{l>IcA{Y7_4~u8fyL1did9=7q3^Hdz&i)dMU)MVrJCy?;+@q)Ovfz&S?j%_kjW!iBmd}J>Vp$ps1Kq zVdq%ii?r(W#`bH?OtQAa;n9%%W_~>Ord7Ik0jj`gRB`$TGF-B4n#$Dl`?W-Vot?eD zpJuNHtfK1QzQPZFObWH@WBmv>h9MvE^915tuJLiBAFwSfL>We2yG~rrPHmj_xv{z@ zUP!>$NfV?os;@$xvw%jczz*IMy%7opovjcf!3N^y$xs~HRt=7fdZ+*RQe zqQzH2V$`isPt+6ACKOx8`9&J@r47`s;rw4vt2RaBaYgH1zgA^~H671&?xJZ~Bm_3& z;GOgn&I3VnTfym>xKYijZn9H-0QcJKUi9QlkleO$!$Xx;_gorIZ`|S$y*ybt7FoEH z%GtHYquM&oO@2zNHnm0Jd3NI!PD$!qby_ubR1z(sEzX-HJz6B9Sl@6e9rlxRVAa=i z3j-nXsSj*}yOOQo_AXat?Ph|x86CDi01MPflpk{of49h59+s3=V~56FaJevDdySV} z(p%d;)-1gKvH)umf4eTXejQh}2st>oC7-bkpz97kWb3N;7{4(wxis80C z{Q=0Ghnq2|Sx!f@f+ z#r*7;`lRY2Hn-Kxzt&!F?ZT&j;;iF-c8NHl;}L=#_n}A7+%Lz=373C zP+-dkLayJL#&^@N`$`F-){uz);E?oQa8Q}IBZ|NJL&+yMZ?@Jf(f`2*a^2$xQme&U zlI_AlI21^KgN{6u63#IG{&e>(Z(VrP-_(fv-8sq6QQ~Af=?A8z+%xOjyaAZ=*WK`U zn)vKO5>F4M@Z8?DKOuc{|DT5ly7Q8e3qU-Ax!(<%%$5HU>IF-UcOulzQ|*(?+^;{# zbC~D8Ax+N92POAhkt&DMYvTidcQF4pVOveO0X^Q*$aAHjcbnu7_x25|3XE!^I$oBw zW=@eQtl#nj;4^Lpos|9#Tfh3jAB2+}WFw!7Vn#U~xrVgpH>1^WFk4|L@TfUwHe6!E z3LEI$CcW3uQW(V;sjn?2z&q?sIo%(L0Q?L=#kS!P$@3zpglac)l&=d)-TS-yb*nLq z$>u5cU@k0Y^6~eT37YQ+a3Tk7X3t>QPjLURfY_Hq$V&rMTE1+H$A};FNfi_Qky8;o zRpuSekp*hhhTdNUWcUq{*R9%_!YMv(Zf>>;SP>NlJ*BZ&-hahHz4P%E*B_p24r;0+ za)qbENP1q^4)`xT$JHM^xpvvQ_ym?tNI0^~>vh~*d_dF{6B*eIoX08k2o@3J2S4+$ z|EQlN7hzEu33goNz%R=>BAfS|gG`lMQvshXhXh`yQ9hW-mF+C*gvuY8Xf~~K1?pll=BHP34{OGP}5Iv!1iL%MO;5n2>{;y zIyYCnG0D6OvY+wJ6-e`%ngxm{H9SK;$uQ#lt*56B<=UtoPxih^x|pCuy;{cq_>!&k z&-`m7G@l4-zwv6>A}iVFdohk(8Y+78)BpF~{+IT0D&+QVL;=+;qQ?4m?wuEGy(Sab zzqOq5bKS}WHNkKEiw?D|c0O)~;*s$zIwQ$%O^N~@WEQ{l-j=9)k;k~1`wJWVu+#`i z8;0+czfVqY6Nm%VQR@izk*5RULN$kIVW~7LkL~RN_%3{BJF7^5eLwFfuyT8PSQh(j zeCp+&DH`U%`mWZmKS&F^9dG`QUtgig`-CLq?*%g|$==TUlKwAA^+D zzy{~@j-Tpf%Q-P-a{fYom)3iyvON9w&D|JWSaZ^xpd6?7e;|Ai;XA)ku(}X`2M|tHNJgopKeD7WL{>GG!#Xnx?ElJ)K72=Bni{ zW_t-z_fmKCxzglJqw%HFG_TNUl3YV*>VXK-WZ0JQc}Ho{`sFQG0xIUSWLk{RcpF$# z0b)^mC*u2vq!pW#lPgz2f!TWv+fM`~Xles!-V-;KzQ3+^KBTxJo`{*gy^ist%xGO6s$LLqb$1C^F zlOjpX71Qq;x2%?3nBh)O)xc^l^VU4j4iGW`4V?Yc*Rtq2aeMaPi@b zjXSZ~mnX8$O?lbgg%v@!FU;-zxt%ZSmlv6Kr*S?I*AGSndmQhXRGp$j@2*C_!fUl||b zajfW(YA=$Dd1{nXyjffuF~RDZdMbyXTv z?%3%MrY>-pL={I!JPm?r+PDZE5VNyB&AzbitkO$SuX4yHhMJ!g zCz;+`ah!a5Mx}Yu!Elo3OzA;GB5U6JY3QRIKxeoV7B*P-A-6^l&b8+&NgXgkD0ICmuGW)8&KWrcZ2~zz!|DH76MDOK6 zaKPua{a&v}B_pr?|D#+{gC6Iy%^tSCmJev~Tj0LFY= z{{ygtyLwms3;nh_(LOa@;-`7p#f800hna@MBdAXM$R9HH_L_0s=5n%tsOww_LGwb^|Y%g2rm zkU$v7Z>0HI_X$d}CkATP;&A~I(Va*8n}rSjlY~Da1_$TSpTH`nF59=;qjU{jtHM8| zC08%(p1gbJs-&HP5aCNmWijm21d6SPXUk%8aW33sOt7~30++`;!hqVdLsFuhjMz9rXk1S-D0V~KG8rGBie@WX@?XX$fkR;%7 z(VyaTyKUd0CKG@KN<9qV#`>C2JN*Sr^J9od*`LK>Lq#RbOK5!Q{q1G>nu+ozid{qC4p&xJ$EJt|6q|HC8yphF^-JKiCXyg^z$16xLk430hrH2Wzh-+V z24LOQ1p~P#B%v%tnT4a{EAlghoE#4G_1@fv{R;yPQ!4zUuzL8$Mj4!Xr7x*(x(XpF zD{Imc_!x_T<(;~|2mZU|uIMGlkkO&1@_fP`b!%Jt4W9f!EILnLAW>hTpUeCbYwgp+ z2)`YaP~ZhWp-im0d{fBKvsT!>#`m2Vnei^E8XU3 z{^3xOb_LAS#n(Dp<~1G_Q>tfPM$?dG%Wj|lohoW_=@+iT7oDE%;r8=oq+TSP%C0so z+clk&eyun9LdIydunHs$L8iSV;et2L7M7MgH)l(AtDT)Kw4niHu7SCQ^|4RoxZiho z%lPAvZbVCP3&LyYB6xRe*|wTR7%^Q^do`pa>}HRUfR|McgPnkv@KE}5)t3~KfWo36ea~}0X{M_C@4m8`Uf>_K zlY4zgN|IOg;2gpeH6i_rmRh6vgH(PWo%rv1a@KkG;2!s%m-QM+pIG=>`!HMN+yIq(n-(Qx4tT zA>D%X0Yng`@gUu;#G$*9Zs~r*y;ozzt+Y#`8x zRMbHw@Z2a$zq$Xm%ic(O9#LTqno@3==h*gAhL%y^-bJy|kp88tEEo*7c`HXPSKe-> zKT_E3EB1dU2G)t;Pm0+SPTW_atI*IKn1g&>pZ&9wBnuhZ)mgXa!#iVD3$k?F|Wg4 z)VgdxYUH@&+AbX*hnHEAYs)^PsR$6;DI~Wju>Aa`_(O38PGue&TPZ1u&f~{9IXSV3 zagrXUsLpg+uQl_o5T5hGi-Mdl7NRq*TO*E#n}^?@k8SQT2HiClSgQJN8rxT~;7?Rq znIZh%(`-Noi-X*E%8lClr&1L&4F*<8jhP_SdSQL>>12gv_b5vgGQuyd)iTGs5431ual0LWKK7By8spvqApglQpSA$7S8x&;bu>jK8J^qCM91I zHLQutv+r2Q0+RyngB3g)!X6D-BV2(O6$lp_TMIn83SY%(okztxBgd&jWuZsL1frb+ zW50Mf14=pg-$l@1_*PxZ$R0LGd5dK*rXrh^_^b>{7Af>lGp|^=RQB(mO zNdN{Q4ix=|`5&0FFurL|X)$h8XQO5#J^W)UmR~2 z+KqQC9(?-B+sPn+K=o&Z!k%1jRB`s?hjypX{mYHDk9X0(6n7;2eXoyB71}gTk93;u7+@*h z-ICZkIJ(Eq*yD_E{JRBYN?DSC?Joui&A#}UfuCYLIlzFtUM;HZgMYZS*APLqep^eb!Y^M8 zfqUP?#H7DOUv$>{WX8_@RfK|BwAgQu;Zt9J{^UBh#E1dVZ7~@Y9A~NP>Ow~u0Jjza z{ll&CFCgBj3vdIXfAR1w_aKAM|HHh2qc89U-gWt%Pg<6k>z-%)&(R5+k9+|EN(o(0 zZk#tqqW}wnMm-yioo6!%(4*hPoM3i#0>08? z0y?J7l>a;fX;i3qMHWzAGvlBD4lc{!mbPv5@gCni-knpBlY*?9%c{{o2uwogHveSVZbMW4!#Kz;_Msx}DjbA^ycsb_9&mbV7==uMxh-48sV z3{y+^S*YJ#WI;zPxWzh@ohx)vu;*E|@+;iz?p|0FIO%hi>e8&}pP@H7g7ekeS@^Ku z4fKQe4g=hVPwDnq`l8K-FPzJ3)OFjwBiH&DA=(U_m9~1|`O9tgtwws}zc0n>=eSZ> zJiBJEeUj)BabIyf7R|fmI&ZJ12N6{1Kk%Ed@8TsYLpWiu?-C?S2^pTiSfK@Px;qyl zltA;jtCZITcDN%y8?xn+PB8TM<48^D3(Lg{j#d-0LR$TKbVv%Qao#EDmx*ilv3|FKG?bgY7Ns7aL!LvEpVaW(antCX zPJEodYw~=95(%c&ABcze5Z2XTg?J5JyU#@m+7<&9yj}s#($H2TNfcoUK<|5PbvQrc zK2E*`jQ)DI!_{(;hH8~%+9?6Qir%yvY)fS0#$R0Rog- z)V3(NA?yS;fKkI=il&&&!oK4L!)~x;KiE@?EexuS$Addd;p4M3UMwD~O!Y%SI$U9KNMlFZ^mFi4poO^*vu-7n+O|zWz129LHVG zQj7b_u(n1pb*uc$5Y21GVC6}zn2+gFHQ+D%wA`GCdLq6LBjh$oHBFSgr9k!Etn(2S znkwxY3$tG6Qj1!}=_a~qtddt5rsABRv>8Yoc5*(p=Fm^XMbW%ooq{yg2bI>NQtM+o zG8vhBap^*v;c#5x%X^hkjlG^5la|F261OV^Fa1kzvCBe8_Y)E$593d!E$mJgJny;Z zSWpQG+Z$`ORW}jWeC7rU9c+10zcm%L2&NehQ18!HzQ+qM;@;aGSrja~k9j?do+|ZC zq!OZc?Gs;d7c4swI9;0}gV~yttmieTbR~hSbVN1wQxgi5?#8CvoLrz}9F4{*c*glb zOE)q(*}~_~MDJg{5zeWdFFa4iIqUJ-jACZB=m4;E`MpE319bI&$=E5vvMal)?Q1GZFp9_O7ieqez=ne~lP zqLU)SP>@)j_1p!2cZkpyw^pTz%8$QGn}u$jtsJcEI_jyaVnlDXZV+4znJr^J%X`K5 z1>1?&-0+Ls$X=s^#>8GX>tim5Bdu?rxi&7SwKu09Qbk*0qmkQ01+CO>FUI8Py%!)! zYF>+G?|E-Mo09m#Drnp z(^TE$-)|!T*c-5l0mUT%M2-mblnB+}T4E9qzo2icg5VHvvnxa?{n;iD2B{C7lr3J}jlAtM8*x}D zJqCY7V=hV_yIah^f;zs|gh}2U2iS~kd$*&{2uS5;Sw(!zI4Z1+EeLbZD002qs9%gsO#3P?DII!66Mqq z@arBK&s5RV>jMf`#RNh^h9GKT4>!23=Qj7Vj|iKqFUAQREakWs)>=8qjndAG<5Oy>QXr-Ucu=*~o_me)=GZ63sZKaR zsNP(b%2Fs?zA+OEadaNtgXLk0KS$T(xL8cXl6*C+D@1h6ocmscfc=j&RQ| z=j7%p>3H$xYt8LhT-xo{9pE%@K2sKaTdm5U6_h+n&UQV{V6%IKH?sAaeOzkwkdMvn zc$2kjRM=*wS^(EP%yM7PMd1_~s1r&$E<-AMjkGv}Lt@g_whQ|7M<|2Wc930*`_`j~ z3i2F|wp-Z4W$iy?xoMBUMFd%Fd`2l2#OP8m2t}^S_gNu>IiB^cZ@j8c7bEInK`JA1 zD|p-D5PoJ7p3XAc!xCXTw}P(q`+5rfTOVK{?e9BU2U^oH_{27P@QUolhU1~sBX(7x zh1wO8SeB8IFlU?jr5KT8wPMqGb5+rULr(hx*er%eArO`6xzJ}s>qyw!caY_U$oY1V zLGHX-R?(bb?jb2jG0qgXFD<5W6?4Vv=+F=jTP)@b9T^m|OiPxl&mZgW8|9Z%Ap`)K zM+?W>N-@j#pBSrQ&ZwjbtyHel9~dcHhlhvTdf^^V*5;1rwNy%pM)K%%opzo~JCBK8 z4Q`K@1x`<^Vb3K*%>gTrup)%3_CX%U4-D}uxNRB@f&n8`!P>ICM1y7%8+*gGuFw18 zWQpeH6zx8>hWoYqp7-vBufb%KBZD4o07imIEM+%G%V(v5$$k)xU( zbfA_IiudE`RJjSfx9D9r?VxX?Q9YxnL0_unNcX*?!Z zCHXdTfS2~R?~R}ua;e+*cctqs>*S}60WJHTR5a?M6koDR`s2++o;>EuFPY<@wF{r? zCQ&UK6YV{(;yE8A%T*hxRqU17M{kM{c0%3vGf%xnysr6d-}=3VDf-g~M{$z2!c3p= zWUf+Ys&LWOUINiI&-ocHCsfjRt%e~~`J&!;R8*LrJXzYf1?kW{2#Q6Tsknw13G=lS z(!PX{-9;|@I@!G$rArV!#>-VfN@v`mGHwTYv!g&L1~-;E7XO@}1(-FzQ8{53Bm+kO zuKYkbsZ}LwzKzdx;u*(O_$z`Q_X*LcxbDags+vDj9z09O*(#c*IF{|>{Ly;AmfqJ% zFhlPqo&kP8p8CkAKrFp!~CJf2hV~UiJA8Vx4tAJhrD%{ z#5GgBf3N~4flmQVpM{nHa=C1t=gItxl2^#wnTzAwK}`wp%`t78flEGFn|i=#o^#{A za1x}V%G(_*$+1r_=TDex4~fxmGcD4n@6EMbi@KgbE;Gc1BHBE@ie8V;%(Kf@T-BMgiavO!#M6U<3h&;l zA`FU?R;ciip5Y33E8g|#UA-+D2#kETn4W@Xbd`tFKCav*NbLxQZ6@jmV0M1}g5v-qN&?mtMe zyyoc}X}O|4_t3Qnpv3XzyjfcOHNbA3GK=GLul8Uv(QTvdWX*JIsxk(Xwd#KUCU64E zj9rMGl%e*UIDg8CP15&C0sJp{gVWXdk=N-$h$M9?wfd82k(FeaTPrIiVtv7(h&)VE25K8i%S-7_1_(dymXdFp319AcjJQQXPs2bPWf+ zyeWdN#UHu}C1`Ixi;dPe!!NA|1!&wZ%6=}BW$r)$WE%6mle9WVW;31HC;C$W&v53Q z*qf#}#7br++3APab4-ulVqdfu&w89$q$R)I_pNa~mTp_@IvynJ%58RSCvmw$Y56ZH zr~H#5Yq(K*c1>^bup=_6&R~II#>vkkH>!%z>MF^6Fot|jwp~uGEV(=v>xpFDI1JdJ z{$JBs>?A!MzB-;RC-FarO%f8;5IHRYk87l9j1*9%?V!)l@?s}-Gd#31>#=cs%-RJH zD5xdxz14=yTv1x1cvlZ#5<_eergJW~I82#XlovAV+jgc)%q}13YcRSbumWiL@Q`5l zOX)&sW*73mBG#CQ$04+o2NUHpL)<90LYJmqRq5nY@OP-AZVB$pXV2B zC+sJAB+B(u2mjm$nd548My>gvVMrsO&Zr`)(ElQo_0dOK%$3o%fd3r#NA_~7#fi39ouyxBet|ZBs}uff@jWV2NOTB^ zi>GJVpJ-wh_-8>5lkd@Bmg&5fk&$}vsRbya|5B^O3T!q-Vw@8b{3@kLq8C8G{&PAG zkOOA|^?U8UX*P2IAINa?{?6ueM%u7+jH!g*C0WddX%ab|Ud6nNcp)DY^&8^5?|iG| zDTij<>->=o^yzo_LL@&??JxNJkL--ds5I1l^5gz?{ zS=h1{oQQ5}1)?>73(RSE1VW~j82pp*`e98Y4}UJ1{B8pP8&;;gRetqjl_~z0J=6c- zkv#^%ans(~`!9Y&IzT03`8@6W_N_wbH&`+L62e%SRf%l^^0I*q0lq(K9$%L^qNUn>od1D( z=SBrIl$BePIgGoyy0QStSa-2gyYMTSIJ2KJ=r`u}3aYC5ZOAe_zxgdXfl6EU^z#w` zXBNq-Pe`0?91W#+qK`v7`ZlIF zRC6f&KSyCRlJ<8{K0bQc76Gu!j*XE5WZWqWTaL8fU71e}BBj#5zP_%a4j|TI#HT&z z-S+=J;OLKhSdQoGd6rZaBeO>GzhA`vw{cXoZI+7v8yvOhm>BjiU|*q1g65~CQiEMa zPIS`i5uBY8BUQJuiK(|(wG(ndZSnEdj`74X_y1!Ym9at>M*uPHRk#F+jD^|XZ+mkb zz=Ux@c!BM67~cPnr2hX%>i_3R>LERI;kI;leadBOEtAn?g4CFzuO%4%Y^||cD9Gg$O%X^h>%Wv8&aqB^z5A28*a*3_q+PoIvo|0x`soQ zKE(m1Cb2%&3TngFks>um7Yh@?5)JZJm{JuMLarLcr#J1++1WeEz_fK$`z@%Cn)#^Q zHsb87*Q2gqqH`k1J1lRvx%W;jl9lmfms-^X4(4AbkJA}_^>>2Y%rgB*wT-6by1cyX zZ^gBrI-RP^E3RMBQc;nNByB!vpJQx;doY>ZVy~t-ZxINSI2tWP=%k_vVPma|?4l8> zg2$XLTN)x8wSKzJ?`y*M7S$G@y`^R`Zo5-I?&heHClI!blAoSf7;XeGpL#Ny*|>S{ zzz}$i022F=B%~>}@5n+JS^Ic7igy-FtM@0w`dPmb>H8kD0@^v}XhC-&p)l55{HY^a zkJ%{_E+f$2dYn7cMV%0XH5)ZWa^lOYSYz<~ z#coJjCp`XPlHw)&L9Yo024`bhSon`JI>|lp{S&bz4k+`!V-Cjo(|Hs+ymF6u1Cg_z z1g7wes6i2An@4w3TnwU4c|1Up@L@#V-$1Wx#0k~Y`3ma(*Q>qHYMqi*?s9`hpc5(; zqud=sk}M~ldv~tr$7CS1_jxu#45(%N-kfE>&&_A@?x2y-e6mfOti7Aw+9ZfN2wV|N z9h-HIK#2)+<#8c-Qw7oo)(o2xGQ!VmxA%T|>^s_!M_RCGd7VpF_1PaBN@>r#W(sC5 zRNK8IbakmVXD`b;bzgCDgT%Y}fBp;~`?er0<~*yd-wu{$=uOM5*L{SuxG6jbqS_jz zUjwQgSKsk2-*Xw>j@EhRmkH1|ciRr$NOJy{>RuQabG$0Uz@Ni*GV55vhX)arn&eWu zFrlZ`3)52SK3pH-UyVWEDi}NcT4l>`p(-3B^y@CcaigEMvs7PY)d$Qx<%j9Rs5NQj zrNf^rPWAZ?xDok)idE^=8jiYB3YR&) z@=m6hv$L~~Q#3reYs!P&V)&7~(Ef|#nIjPPPyAT3=k(GNAw08DUw?V)L(aY8bql>^ ztn3k?Vp*rkmv&#>{Ye>DuW5VI`Qsa}&oP(R=dthCl;F>8fp7ac6U5K-v7HNA)t9E} zA7nuDB3%Em`soLO&fcN@{B%U15pYxm2`~l&P6));-(o?2T|i%fYtn789e_h?vmhNY zHE(ax_gZ{?@O7WyiI6hD#r27ATu*Mwe0^2w#cG^@5LJ{&?mL1dTEu92e*WRa%hW?Osw2qdUM_ z&v<6O{b+h1(MDT)(AttUfq6ASS$-iqf;HPGNCttBk6~^C9|UYEzX0tL9H8OS=df#Bm}dc0aVFdTT6I$BD#i3usoQ?G znRqw}DEP3wC#I3t(pQkuyu3`IvgA$N`g?x*JUzyzvi2#KMk#%| zoKr);Mle7&FmSSiJM7+Aqmekw`=brQAPQQ(D$hMU1XznK!-US5uhhvsYCKRZdUWMge1_OYu0+W~PS2QY|!`?&WQc zoQlX(Za5#uWRBN^jl%5LU<(Wnj~W>XjQsp#ymCK{S|^PL_^^Xf+f!(>k%D?{JM#Fw z%gwe2HhhN<8jV{8a3ujS*F5?ZRm8O>#Zc>$6TPNHs2#xtzY& zb)jQ5s=Pp~sPfn|Iz$XW+r`=tVSU`pAi*z>R$_#4(^f~xhq@1pE(d~BzG=8Yb+erf zc^*F|7svXI>c0^PY|qg97uUzmPxmJ4FTMw`?RItF=X!}9Owd}aITX!LuPrPFy)T5(Kv4UA;RkFV9u4&$t zsr-PE+T|qtpu%zrOZ7T&1B=*0fDM~?YrjFbp%c%l{s;onl~^gf zGIr`NzO8>h-gg9`Kbh#(UVSSIGP3x|%eql*%-p%U^lGV$J%)@shQD{R;b@LM?wfD78=+!Kp z9wKH?58{t4)^BC(p#k_(Kk5wEI<39j6bqMz7w>QD;-zY@Vd&0&b>f=P=X{F5#LB$u zyzQLapv*{o>Wv4r+I zw&A6}mghd_4>m|3XY-tg6Ft$mo~FF^;x}MSF|01-kN${xJ&7Dr8J>=_cyxzF8uC=f z>v#epbTq7-+UkBAdvO2jC?}+ESjcCu8SUWuV%KrlzVl9|j+LEhp5BT|6CTe{${n}! zP_-({jqma?7JND{Mp?A!g1IF-oosE#TZEdScEqV5O28|+S(Md@O1(FY8eBtlD5QxESp!iKshK|KkJsExO+zO>m_~c! zv^UqdOry_mkWv^Uy*A&1ckgX2e2nXAiO=4w?nN)>r3ML)=NCqKA_O$cJ?_Okb2A# zHT~w^hHJU^g$sg(1yaob>atxYmFtThUUCZyi`(`kI^6X~d#(H}?GU7DV^Ikt^rrE~ zCngfV?g9x49Oi@c6;=~1RrX6xXw2E@jqHjlh3vyOmlbD-2;>4Gp6mmSzP=6D=aw5A z8^AP{pP!%gW2q3_4%op8pA?8Xg4INbIOBx9(115hxxT=DF?D`Lf-6!usC_rMig^#bo(YmG>FoTVaO-hMSUSOR*!*hpUUgXT={A9O8H2nYMMQWTfIE+y-Nmze= z?PgsXH;w_D0|D@RQQcj~c|`R#R)5-M%6fJQJn0&Jkq=A^U&$q16Vh~K8q4);dEe#U z$_(od-(CR~6!N{wo(x}VuepnBnq;26X%IsyIU-?w^wyv#b7qn}DJkgyM3ZuYppaXW zLpr}>K*L?nqYV(%Mx~_so~_|D0Az}CS|r?Pk!S3$`X_8_U^gu?$hM$T+*Y3mV2eAa zRp%4ZDBeN4X<6E#r~)p8ACW%ELou2{@#vC8bYIOeKY8*Ih$>$}1>Oe)AOSjExZz?) zFqQY@<`eD|+*K#t)O;l0gCw8-u?V7D^#ccdQf>>v+er|(`vdS6nJoW!e`~b9jYFB$ z-uJ!Q)Svb`=*`K?^W+v@A-!oZ?KO0v4*uE1b%lKCth5vy@2pChxS4)Wf!FDI&)^y{ zI{kks9qTWBADqUk?CFAnf|#|+L(!<+{JPm1b(r~3nDrYdE2nyYEqC803fk4qBqSst zH0$SQpoW<8i#zabm5Li*KbwUIynOTKjn0*oiSQb(*Ic>P<8uq|AVt+OH)&u3@x3}C z0crR~U9q%Y0DABOYO6?6jsS5S{k`#_o~&#XlpL=RZCb8jfcf)|j0R+Hu5OPoR6>tkkSlkrkR6A0ust7ac)rJn+A zdWPE~Isy|DlSYLV8Ia^I?E2ma!XWUK7+}HZZphCMkD}oH>KY=cf5=ZY58tZ{0#sDy zsyxengXm6FS&zmM%w;iYbW`8C-vTO=l_&LW;q%AnLwREydb{-E@Z<&3{Mz}fz~CmC z8Yb*g4Mb1`@0_Uk(%KNthgK(G}5#THBx6bO>( z%`@k7QKWB}5vG$$P}8^GG`sjzWjGcWVlGU zmOw+0YWRigqqTbTrs;>b2T9IX9f)*RUQBNw+0?0JGZHEe>AWzd1yYb$YwOFXaF5x` zGozOG4IyfYn>zjVeqbkruZFF`S!^t-s%LXI*Whgvy!-CDdtA{= z_Rm?jzg=E>a3$m7o1 zo-T;iqQebQH7lu>4@_Oa791ATb6}e*OIA37SmcGA@_h-shy?u+RfXvf?*GHk4Sa@q zvY9-SmyD>2gv;4N+jkDxuX=b1Lzl@nRi%|kMYmp4i`W>oc|ml45hJYDyVC8lL2+

%|3=DFI0x1bvlnwuS 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%0DMF7QFY8siBtp+ks_!>!-Y?;=Y-YBH_Kc>VnOg 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 diff --git a/Code/public/js/level2.min.js b/Code/public/js/level2.min.js index bc9239a..05f6e3c 100644 --- a/Code/public/js/level2.min.js +++ b/Code/public/js/level2.min.js @@ -1 +1 @@ -class AddAttack extends AddNode{constructor(e,t,s,...i){super(e,t,s,i)}create(){console.log("ATTACK"),super.create(),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/16,selectWord("ADD NODE : ATTACK","AJOUTER ACTION : ATTAQUE")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/3),selectWord("WHO ?","QUI ?")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/7),selectWord("TARGET FILTERS (OPTIONAL)","FILTRES CIBLES (FACULTATIF)")),super.addButton(WIDTH_WINDOW/2,HEIGHT_WINDOW/3.2,"enemyBot",super.newCategory("target",!0,!0),!1);let e=super.newCategory("range",!0,!0);super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/9),"shortRange",e,1/3),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/9),"mediumRange",e,2/3),super.addButton(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/12),"longRange",e,1)}addNode(){super.verifyCategory()&&(this.selected.addRect(new RectangleNode(this.selected.getX(),this.selected.getY()+200,this.gameR,"attack",[this.lCategory[1].getValue()])),super.cancel())}modifyNode(){super.verifyCategory()&&(this.selected.node.percentRange=this.lCategory[1].getValue(),this.selected.rect.setFrame(this.selected.node.getFrame()),super.cancel())}}class AddCondition extends AddNode{constructor(e,t,s,...i){super(e,t,s,i)}create(){super.create(),console.log("CONDITION"),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/16,selectWord("ADD NODE : CONDITION","AJOUTER ACTION : CONDITION")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/3),selectWord("WHO ?","QUI ?")),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/(16/7),selectWord("TARGET FILTERS (OPTIONAL)","FILTRES CIBLES (FACULTATIF)"));let e=super.newCategory("target",!0,!0);super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/3.2,"enemyBot",e,!1),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/3.2,"myself",e,!0);let t=super.newCategory("shield",!0,!0);super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/9),"shield0",t,0),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/9),"shield33",t,1/3),super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/12),"shield66",t,2/3),super.addButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/12),"shield100",t,1)}addNode(){super.verifyCategory()&&(this.selected.addRect(new RectangleNode(this.selected.getX(),this.selected.getY()+200,this.gameR,"condition",[this.lCategory[0].getValue(),!0,!1,this.lCategory[1].getValue(),0])),super.cancel())}modifyNode(){super.verifyCategory()&&(this.selected.node.myself=this.lCategory[0].getValue(),this.selected.node.shield=this.lCategory[1].getValue(),this.selected.rect.setFrame(this.selected.node.getFrame()),super.cancel())}}class AddMove extends AddNode{constructor(e,t,s,...i){super(e,t,s,i)}create(){console.log("MOVE"),super.create(),super.addTitle(WIDTH_WINDOW/2,HEIGHT_WINDOW/16,selectWord("ADD NODE : MOVE","AJOUTER ACTION : DEPLACEMENT")),super.addTitle(WIDTH_WINDOW/4,HEIGHT_WINDOW/(16/3),selectWord("FLEE OR MOVE ?","RECULER OU AVANCER ?"));let e=super.newCategory("direction",!0,!0);super.addButton(WIDTH_WINDOW/6,HEIGHT_WINDOW/3.2,"fleeFrom",e,!1),super.addButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/3.2,"moveToward",e,!0),super.addTitle(WIDTH_WINDOW/4*3,HEIGHT_WINDOW/(16/3),selectWord("WHO ?","QUI ?"));let t=super.newCategory("target",!0,!0);super.addButton(WIDTH_WINDOW/6*4,HEIGHT_WINDOW/3.2,"enemyBot",t,!0),super.addButton(WIDTH_WINDOW/6*5,HEIGHT_WINDOW/3.2,"bonus",t,!1)}addNode(){super.verifyCategory()&&(this.selected.addRect(new RectangleNode(this.selected.getX(),this.selected.getY()+200,this.gameR,"move",[this.lCategory[0].getValue(),this.lCategory[1].getValue()])),super.cancel())}modifyNode(){super.verifyCategory()&&(this.selected.node.toward=this.lCategory[0].getValue(),this.selected.node.enemyBot=this.lCategory[1].getValue(),this.selected.rect.setFrame(this.selected.node.getFrame()),super.cancel())}}class Attack{constructor(e=1){e>1/3?e>2/3?(e=1,this.percentBonus=1):(e=2/3,this.percentBonus=1.5):(e=1/3,this.percentBonus=2),this.percentRange=e}do(e){return!(!e.haveTarget()||!e.isTargetInRange(this.percentRange))&&e.attackTarget(this.percentBonus)}getFrame(){return 3*this.percentRange-1}}class Bar extends HealthBar{constructor(e,t="",s,i,h,a,n,r=new CategoryBar,o=1,d){super(e,t,s,i,h,a,void 0!==d?d:r.valueMax,n,n,!1),this.name=t,this.scene=e,this.scene.input.on("pointerdown",this.doDrag,this);let l={font:i.toString()+"px stencil",fill:"#e2e2e2"};this.text=this.scene.add.text(this.bar.x+this.width+10,this.bar.y,this.value.toString(),l).setOrigin(0,0),this.categoryBar=r,this.setValue(0),this.categoryBar.setValueOf(this,o)}doDrag(){let e=this.scene.input;e.x>=this.bar.x-10&&e.x<=this.bar.x+this.width+10&&e.y>=this.bar.y&&e.y<=this.bar.y+this.height&&(this.scene.pauseScene(),this.clickOn())}clickOn(){this.onMove(),this.scene.input.on("pointermove",()=>this.onMove()),this.scene.input.on("pointerup",()=>this.stopClick())}stopClick(){this.scene.input.off("pointermove"),this.scene.input.off("pointerup")}onMove(){this.setValWithX(this.scene.input.x)}setValWithX(e){this.categoryBar.setValueOf(this,Math.round((e-this.bar.x)/this.width*this.valueMax))}draw(){super.draw();let e=this.value/this.valueMax*this.width-5;this.bar.fillStyle(9868950),this.bar.fillRect(e,0,10,this.height),void 0!==this.text&&this.text.setText(this.value+1)}}class BonusAttack extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusAttack",h)}useOn(e){let t=e.speed;e.setSpeed(t+this.value),this.scene.time.addEvent({delay:this.time,callback:e.setSpeed(t)}),this.destroy()}}class BonusShield extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusShield",h)}useOn(e){e.shield.valueMax=e.shield.valueMax+this.value,e.shield.value=e.shield.value+this.val,this.destroy()}}class BonusSpeed extends Bonus{constructor(e,t,s,i,h,a){let n;switch(h){case 1:n="bonusSpeed0";break;case 2:n="bonusSpeed1";break;case 3:default:n="bonusSpeed2"}super(e,t,s,i,n,h),this.time=a}useOn(e){e.increaseSpeedBonus(this.value),this.scene.time.addEvent({delay:this.time,callback:()=>e.decreaseSpeedBonus(this.value)}),this.destroy()}}class Boot extends ManageLang{constructor(e){super("Boot",e)}create(){super.create();this.add.text(WIDTH_WINDOW/2,HEIGHT_WINDOW/3,"WARIA",{font:"200px stencil",fill:"#e2e2e2"}).setOrigin(.5,.5);let e=this.add.sprite(WIDTH_WINDOW/2,HEIGHT_WINDOW/3*2,"playLetter").setInteractive();e.on("pointerout",()=>e.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){console.log("Play"),this.father.scene.add("Type",new Type(this.father)),this.scene.start("Type")}}class Category{constructor(e="undefined",t=!0,s=!0){this.name=e,this.single=t,this.lBtn=[],this.lValue=[],this.obligatory=s}add(e,t){0!==this.lBtn.length&&this.single&&(this.lBtn[0].clearTint(),this.lValue=[],this.lBtn=[]),this.lValue.push(t),this.lBtn.push(e),e.tint=15718407}getValue(){return this.single?this.lValue[0]:this.lValue}validate(){return!(0===this.lBtn.length&&this.obligatory)}remove(e){let t=this.lBtn.indexOf(e);-1!==t&&(this.lBtn.splice(t,1),this.lValue.splice(t,1)),e.clearTint()}}class CategoryBar{constructor(e=VALUE_MAX_BAR,t=1){this.startValue=t,this.valueMax=e,this.point=this.valueMax}addPoint(e){if(this.point+=e,this.point<0){let e=this.point;return this.point=0,e}return this.point>this.valueMax&&(this.point=this.valueMax),0}setValueOf(e,t){let s=t-e.value,i=e.value;this.point>=s?e.setValue(t):e.setValue(e.value+this.point),this.addPoint(i-e.value),this.draw()}addText(e,t,s,i,h){this.text=t;let a={font:h.toString()+"px stencil",fill:"#e2e2e2"};this.textScene=e.add.text(s,i,this.text,a).setOrigin(0,0),this.draw()}setTextPos(e,t){this.textScene.setX(e),this.textScene.setY(t)}setText(e){this.text=e,this.draw()}draw(){this.textScene.setText(this.text+this.point)}}class Condition{constructor(e,t=!1,s=!1,i,h){this.shieldFilter=t,this.rangeFilter=s,this.shield=i,this.range=h,this.myself=e,this.lNode=[]}addNode(e){this.lNode.push(e)}do(e){if(this.doCondition(e))for(let t=0;t=h&&(s>h&&(s=h,i=[]),i.push(t))}}),i.length>1?i[Math.floor(Math.random()*(i.length+1))]:i[0]}function toJson(e,t,s=!1){let i;switch(typeof t){case"string":i='"'+e.toString()+'":"'+t+'"';break;default:i='"'+e.toString()+'":'+t}return s||(i+=","),i}function endLineJson(e){return e.length>0&&","===e[e.length-1]&&(e=e.substr(0,e.length-1)),e}var tree=void 0;class Game extends ManageLang{constructor(e,t){super("Game",e),super.addOtherScenes("GamingBoard"),SPEED_GAME=1,void 0!==t&&(this.tree=JSON.parse(t),this.loadSave(this.tree))}create(){super.create(),this.doLine=!1,this.gm=new GamingBoard(this),-1!==this.father.scene.getIndex("GamingBoard")&&this.father.scene.remove("GamingBoard"),this.father.scene.add("GamingBoard",this.gm),this.scene.launch("GamingBoard"),this.scene.pause("GamingBoard"),this.selected=null;this.createButton();let e=WIDTH_WINDOW/4*3,t=WIDTH_WINDOW/10;if(void 0===this.tree){this.initStat=new InitStat(this,OFFX_MAP+WIDTH_MAP+5,OFFY_MAP,200,30,10),this.initStat.addBar(DAMAGE_BEGIN,5,COLOR_ATTACK,["DAMAGE","DEGATS"]),this.initStat.addBar(SPEED_RELOAD_BEGIN,5,COLOR_SPEED_RELOAD,["R.S","RECHARGEMENT"]),this.initStat.addBar(SPEED_BEGIN,5,COLOR_MOVE,["SPEED","VITESSE"]),this.initStat.addBar(RANGE_BEGIN,5,COLOR_RANGE,["RANGE","PORTEE"]),this.tree=new RectangleNode(e,HEIGHT_WINDOW/10,this,"waria"),this.tree.addRect(new RectangleNode(e-2*t,HEIGHT_WINDOW/3,this,"move",[!0,!1])),this.tree.addRect(new RectangleNode(e+t,HEIGHT_WINDOW/3,this,"move",[!0])),this.tree.addRect(new RectangleNode(e,HEIGHT_WINDOW/3,this,"attack",[1/3]));let s=new RectangleNode(e-t,HEIGHT_WINDOW/3,this,"condition",[!0,!0,!1,1/3,0]);this.tree.addRect(s),s.addRect(new RectangleNode(e,HEIGHT_WINDOW/1.5,this,"move",[!1])),s.addRect(new RectangleNode(e-t,HEIGHT_WINDOW/1.5,this,"attack",[1]))}else{let e=this.tree.getJson();e=JSON.parse(e);let t=this.initStat.getJson();t=JSON.parse(t),this.loadSave(e,t)}this.gm.addRobot(new Robot(.1*WIDTH_MAP,.1*WIDTH_MAP,.9*WIDTH_MAP,.9*WIDTH_MAP,this.gm,MYSELF)),this.gm.addRobot(new Robot(.1*WIDTH_MAP,.1*WIDTH_MAP,.2*WIDTH_MAP,.1*WIDTH_MAP,this.gm)),this.gm.addRobot(new Robot(.1*WIDTH_MAP,.1*WIDTH_MAP,.1*WIDTH_MAP,.9*WIDTH_MAP,this.gm)),this.input.keyboard.on("keydown-DELETE",()=>{this.clickBin()})}update(e,t){super.update(e,t),this.doLine&&this.tree.updateLine()}loadSave(e,t){this.initStat=this.loadInitSave(t),this.tree=this.loadTree(e)}loadTree(e){let t=new RectangleNode(e.x,e.y,this,e.type,e.option);return void 0!==e.lRect&&e.lRect.length>0&&e.lRect.forEach(e=>t.addRect(this.loadTree(e))),t}loadInitSave(e){let t=new InitStat(this,OFFX_MAP+WIDTH_MAP+5,OFFY_MAP,200,30,10);for(let s=0;se.getX()-t.getX()),this.gm.modifyNodes(this.tree.getNode()),this.gm.modifyValue(this.initStat.lBar[0].value,this.initStat.lBar[1].value,this.initStat.lBar[2].value,this.initStat.lBar[3].value),this.gm.resume()}changeFrame(e,t=0,s=0){e.setFrame(t+2*s)}createButton(){let e=WIDTH_MAP+OFFX_MAP,t=WIDTH_MAP+OFFY_MAP+5,s=OFFY_MAP/1.5,i=1.1*s,h=this.add.sprite(10,10,"back").setOrigin(0,0).setInteractive();this.play=this.add.sprite(e,t,"play").setOrigin(1,0).setInteractive();let a=this.add.sprite(e-i,t,"speed").setOrigin(1,0).setInteractive();this.pencil=this.add.sprite(e-2*i,t,"pencil").setOrigin(1,0).setInteractive().setVisible(!1),this.bin=this.add.sprite(e-3*i,t,"bin").setOrigin(1,0).setInteractive().setVisible(!1),this.plus=this.add.sprite(e-4*i,t,"plus").setOrigin(1,0).setInteractive().setVisible(!1);let n=this.add.sprite(e-5*i,t,"mute").setOrigin(1,0).setInteractive();this.linePlay=0,this.lineSpeed=1===SPEED_GAME?0:1,this.changeFrame(a,0,this.lineSpeed),this.father.sound.mute?this.lineMute=1:this.lineMute=0,this.changeFrame(n,0,this.lineMute),h.displayHeight=h.displayWidth=s,this.play.displayHeight=this.play.displayWidth=s,a.displayHeight=a.displayWidth=s,n.displayHeight=n.displayWidth=s,this.pencil.displayHeight=this.pencil.displayWidth=s,this.bin.displayHeight=this.bin.displayWidth=s,this.plus.displayHeight=this.plus.displayWidth=s,this.play.on("pointerout",()=>this.changeFrame(this.play,0,this.linePlay)),this.play.on("pointerover",()=>this.changeFrame(this.play,1,this.linePlay)),a.on("pointerout",()=>this.changeFrame(a,0,this.lineSpeed)),a.on("pointerover",()=>this.changeFrame(a,1,this.lineSpeed)),n.on("pointerout",()=>this.changeFrame(n,0,this.lineMute)),n.on("pointerover",()=>this.changeFrame(n,1,this.lineMute)),this.creatBtnOutAndOver(h),this.creatBtnOutAndOver(this.pencil),this.creatBtnOutAndOver(this.bin),this.creatBtnOutAndOver(this.plus),this.play.on("pointerdown",()=>this.clickPlay()),a.on("pointerdown",()=>this.clickSpeed(a)),h.on("pointerdown",()=>this.clickBack()),n.on("pointerdown",()=>this.clickMute(n)),this.pencil.on("pointerdown",()=>this.clickPencil()),this.bin.on("pointerdown",()=>this.clickBin()),this.plus.on("pointerdown",()=>this.clickPlus()),this.input.on("pointerdown",()=>this.clickNode()),this.input.on("drag",this.doDrag),this.input.on("dragstart",()=>this.dragStart()),this.input.on("dragend",()=>this.dragEnd())}creatBtnOutAndOver(e){e.on("pointerout",()=>this.changeFrame(e,0)),e.on("pointerover",()=>this.changeFrame(e,1))}clickPlay(){this.scene.isPaused("GamingBoard")?this.resume():this.pauseScene(),this.changeFrame(this.play,1,this.linePlay)}clickSpeed(e){1===SPEED_GAME?(SPEED_GAME=2,this.lineSpeed=1):(SPEED_GAME=1,this.lineSpeed=0),this.changeFrame(e,1,this.lineSpeed)}clickPencil(){switch(console.log("PENCIL"),this.changeFrame(this.pencil,0),this.selected.type){case"attack":this.father.scene.add("AddNode",new AddAttack(this.father,this,this.selected,!1,this.selected.node.percentRange));break;case"move":this.father.scene.add("AddNode",new AddMove(this.father,this,this.selected,this.selected.node.toward,this.selected.node.enemyBot));break;case"condition":this.father.scene.add("AddNode",new AddCondition(this.father,this,this.selected,this.selected.node.myself,this.selected.node.shield));break;default:return}this.scene.pause("Game"),this.scene.launch("AddNode")}clickBin(){null!==this.selected&&(console.log("BIN"),this.tree.delete(this.selected),this.changeFrame(this.bin,0),this.tryClick())}clickPlus(){console.log("PLUS"),this.father.scene.add("PlusNode",new PlusNode(this.father,this,this.selected)),this.scene.launch("PlusNode"),this.changeFrame(this.plus,0),this.scene.pause("Game")}clickBack(){console.log("BACK"),this.father.scene.stop("GamingBoard"),this.father.scene.remove("GamingBoard"),this.father.scene.stop("Game"),this.father.scene.start("Type")}clickMute(e){console.log("MUTE"),this.father.sound.mute?(this.father.sound.mute=!1,this.lineMute=0):(this.father.sound.mute=!0,this.lineMute=1),this.changeFrame(e,1,this.lineMute)}tryClick(){this.pencil.setVisible(!1),this.bin.setVisible(!1),this.plus.setVisible(!1),null!=this.selected&&(this.selected.deselect(),this.selected=null)}}class GamingBoard extends Phaser.Scene{constructor(e){super("GamingBoard"),this.listRobot=[],listBonus=[],this.father=e,this.end=!1}preload(){this.cameras.main.setViewport(OFFX_MAP,OFFY_MAP,WIDTH_MAP,WIDTH_MAP),this.sound.add("shot"),this.sound.add("hit")}create(){listBonus.push(new BonusSpeed("Fusée",this,WIDTH_MAP/2,WIDTH_MAP/2,5,2e3)),this.add.image(0,0,"background").alpha=.1;for(let e=0;et.addNode(e)),!0)}modifyValue(e,t,s,i){let h=this.getMyRobot();return void 0!==h&&(h.setSpeed(s),h.setRange(i),h.setSpeedReload(t),h.setDamage(e),!0)}getMyRobot(){for(let e=0;ee.addShield(SHIELD_PER_SECOND)),this.time.addEvent({delay:1e3/SPEED_GAME,callback:this.upShield,callbackScope:this})}}class InitStat{constructor(e,t,s,i,h,a){this.scene=e,this.posX=t,this.posY=s,this.width=i,this.height=h,this.category=new CategoryBar(a),this.lBar=[],this.lText=[],this.category.addText(this.scene,selectWord("TOKENS : ","JETONS : "),this.posX,this.posY,this.height)}addBar(e,t,s,i){this.lText.push(i),this.lBar.push(new Bar(this.scene,selectWord(i[0],i[1]),this.width,this.height,this.posX,this.posY,s,this.category,e,t)),this.posY+=1.5*this.height,this.category.setTextPos(this.posX,this.posY)}getJson(){let e="{";return e+='"lBar":[',this.lBar.forEach(t=>e+=t.getJson()+","),e=endLineJson(e)+"],",e+='"lText":[',this.lText.forEach(t=>{e+="[",t.forEach(t=>{e+='"'+t+'",'}),e=endLineJson(e),e+="],"}),e=endLineJson(e),e+="]",e+="}"}}class LoadFile extends Phaser.Scene{constructor(e,t,s){super("LoadFile"),this.father=e,this.son=s,this.nameSon=t,this.father.scene.pause(this.nameSon),this.father.scene.stop(this.nameSon),this.father.scene.remove("LoadFile")}preload(){let e=this.add.graphics(),t=this.add.graphics(),s=WIDTH_WINDOW/2-160,i=HEIGHT_WINDOW/2-25;t.fillStyle(2236962,.8),t.fillRect(s,i,320,50),this.load.on("progress",function(t){e.clear(),e.fillStyle(16777215,1),e.fillRect(s+10,i+10,300*t,30)}),this.load.on("complete",()=>{e.destroy(),t.destroy(),-1===this.father.scene.getIndex(this.nameSon)&&this.father.scene.add(this.nameSon,this.son),this.father.scene.start(this.nameSon)}),this.load.audio("shot","assets/sounds/shot.ogg"),this.load.audio("hit","assets/sounds/hit.ogg"),this.loadImage("en","flags/",!0),this.loadImage("fr","flags/",!0),this.loadImage("bonusSpeed0","bonus/",!0),this.loadImage("bonusSpeed1","bonus/",!0),this.loadImage("bonusSpeed2","bonus/",!0),this.loadImage("enemy","robots/"),this.loadSprite("playLetter",550,150,"buttons/"),this.loadSprite("cancel",550,150,"buttons/"),this.loadSprite("add",550,150,"buttons/"),this.loadSprite("modify",550,150,"buttons/"),this.loadSprite("home",550,150,"buttons/"),this.loadSprite("next",550,150,"buttons/"),this.loadSprite("retry",550,150,"buttons/"),this.loadSprite("duel",269,262,"buttons/"),this.loadSprite("last",269,262,"buttons/"),this.loadSprite("team",269,262,"buttons/"),this.loadSprite("flag",269,262,"buttons/"),this.loadSprite("map",269,262,"buttons/"),this.loadSprite("play",100,100,"buttons/"),this.loadSprite("bin",100,100,"buttons/"),this.loadSprite("plus",100,100,"buttons/"),this.loadSprite("pencil",100,100,"buttons/"),this.loadSprite("speed",100,100,"buttons/"),this.loadSprite("mute",100,100,"buttons/"),this.loadSprite("back",200,200,"buttons/"),this.loadSprite("shortRange",300,150,"buttons/"),this.loadSprite("mediumRange",300,150,"buttons/"),this.loadSprite("longRange",300,150,"buttons/"),this.loadSprite("shield0",300,150,"buttons/"),this.loadSprite("shield33",300,150,"buttons/"),this.loadSprite("shield66",300,150,"buttons/"),this.loadSprite("shield100",300,150,"buttons/"),this.loadSprite("myself",300,150,"buttons/"),this.loadSprite("enemyBot",300,150,"buttons/"),this.loadSprite("bonus",300,150,"buttons/"),this.loadSprite("moveToward",300,150,"buttons/"),this.loadSprite("fleeFrom",300,150,"buttons/"),this.loadSprite("attackNode",180,190,"nodes/",!0),this.loadSprite("moveNode",180,190,"nodes/",!0),this.loadSprite("conditionNode",180,190,"nodes/",!0),this.loadImage("background"),this.loadImage("bullet"),this.loadImage("logoWaria"),this.loadImage("attack","nodes/",!0),this.loadImage("move","nodes/",!0),this.loadImage("condition","nodes/",!0)}loadSprite(e,t,s,i="",h=!1){this.deleteLoad(e),h?this.load.spritesheet(e,"assets/"+i+e+".png",{frameWidth:t,frameHeight:s}):this.load.spritesheet(e,"assets/"+LANG+"/"+i+e+".png",{frameWidth:t,frameHeight:s})}loadImage(e,t="",s=!1){this.deleteLoad(e),s?this.load.image(e,"assets/"+t+e+".png"):this.load.image(e,"assets/"+LANG+"/"+t+e+".png")}deleteLoad(e){this.textures.exists(e)&&this.textures.remove(e)}}class Looser extends Finish{constructor(e,t){super(e,t)}create(){super.create(),super.addTitle(selectWord("GAME OVER","PARTIE PERDUE")),super.btnRetry(super.createButton(WIDTH_WINDOW/3,"retry")),super.btnHome(super.createButton(WIDTH_WINDOW/1.5,"home"))}}class Missile extends Phaser.GameObjects.Image{constructor(e,t,s,i){super(e,0,0,t),this.visible=!1,this.setOrigin(.5,.5),this.setScale(.02)}}class Move{constructor(e,t=!0){this.toward=e,this.enemyBot=t}do(e){if(this.enemyBot){if(e.verifyTarget())return!0===this.toward?this.moveToward(e):this.fleeFrom(e)}else{let t=chooseTarget(e,listBonus);if(void 0!==t){let s;return(s=!0===this.toward?this.moveToward(e,t):this.fleeFrom(e,t))||(t.useOn(e),listBonus.splice(listBonus.indexOf(t),1)),!0}}return!1}moveToward(e,t=e.target){return e.advanceTo(t)}fleeFrom(e,t=e.target){return e.fleeFrom(t)}getFrame(){let e;return e=this.toward?0:2,this.enemyBot||(e+=1),e}}class PlusNode extends Phaser.Scene{constructor(e,t,s){super("PlusNode"),this.father=e,this.gameR=t,this.selected=s}create(){this.add.rectangle(0,0,WIDTH_WINDOW,HEIGHT_WINDOW,0).setOrigin(0,0).setAlpha(.5),this.add.rectangle(0,HEIGHT_WINDOW/2,WIDTH_WINDOW,HEIGHT_WINDOW/2,3487290).setOrigin(0,.5),this.createNode(),this.createButton()}createNode(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW/2,s=WIDTH_WINDOW/3,i=HEIGHT_WINDOW/10,h={font:(i/1.5).toString()+"px stencil",fill:"#e2e2e2"};this.add.text(e-s,t-i,selectWord("ATTACK","ATTAQUE"),h).setOrigin(.5,.5),this.add.text(e,t-i,selectWord("MOVE","DEPLACEMENT"),h).setOrigin(.5,.5),this.add.text(e+s,t-i,selectWord("CONDITION","CONDITION"),h).setOrigin(.5,.5);let a=this.add.sprite(e-s,t+i,"attack").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("attack"));a.displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e,t+i,"move").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("move"))).displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e+s,t+i,"condition").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("condition"))).displayHeight=2*i,a.scaleX=a.scaleY}click(e){switch(e.toString()){case"attack":this.father.scene.add("AddNode",new AddAttack(this.father,this.gameR,this.selected));break;case"move":this.father.scene.add("AddNode",new AddMove(this.father,this.gameR,this.selected));break;case"condition":this.father.scene.add("AddNode",new AddCondition(this.father,this.gameR,this.selected))}this.scene.launch("AddNode"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}createButton(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW-100,s=this.add.image(e,t,"cancel").setOrigin(.5,.5).setInteractive();s.on("pointerover",()=>s.setFrame(1)),s.on("pointerout",()=>s.setFrame(0)),s.on("pointerdown",()=>this.cancel()),s.displayHeight=HEIGHT_WINDOW/10,s.scaleX=s.scaleY}cancel(){this.scene.resume("Game"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}}class RectangleNode{constructor(e,t,s,i,h=[]){switch(i.toString().toLowerCase()){case"attack":this.rect=new Phaser.GameObjects.Image(s,e,t,"attackNode"),this.node=new Attack(h[0]),this.canAddNode=!1,this.line=s.add.graphics();break;case"move":this.rect=new Phaser.GameObjects.Image(s,e,t,"moveNode"),this.node=new Move(h[0],h[1]),this.canAddNode=!1,this.line=s.add.graphics();break;case"condition":this.rect=new Phaser.GameObjects.Image(s,e,t,"conditionNode"),this.node=new Condition(h[0],h[1],h[2],h[3],h[4]),this.canAddNode=!0,this.lRect=[],this.scene=s,this.line=s.add.graphics();break;case"waria":this.rect=new Phaser.GameObjects.Image(s,e,t,"logoWaria").setInteractive(),this.canAddNode=!0,this.lRect=[],this.scene=s,this.scene.add.existing(this.rect),this.scene.input.setDraggable(this.rect);break;default:return void console.log("Création d'un node echoué")}"waria"!==i.toString().toLowerCase()&&this.rect.setFrame(this.node.getFrame()),this.option=h,this.type=i,this.rect.on("pointerdown",()=>this.click()),this.rect.setOrigin(.5,0),this.rect.displayHeight=HEIGHT_WINDOW/6,this.rect.scaleX=this.rect.scaleY}getSelected(){if(this.rect.isTinted)return this;if(this.canAddNode)for(let e=0;ee+=t+","),e=endLineJson(e)+"],",this.canAddNode&&(e+='"lRect":[',this.lRect.forEach(t=>e+=t.getJson()+","),e=endLineJson(e)+"]"),e=endLineJson(e),e+="}"}setLine(e,t){this.xOrigin=e,this.yOrigin=t,this.updateLine(!0)}updateLine(e=!1){!0!==e&&this.xLine===this.rect.x&&this.yLine===this.rect.y||void 0===this.line||(this.xLine=this.rect.x,this.yLine=this.rect.y,this.line.clear(),this.line.lineStyle(10,16777215,1),this.line.lineBetween(this.xOrigin,this.yOrigin,this.rect.x,this.rect.y+this.rect.displayHeight/10)),!0===this.canAddNode&&this.lRect.forEach(e=>this.addLine(e))}addLine(e){e.setLine(this.rect.x,this.rect.y+.9*this.rect.displayHeight)}getNode(){if(void 0===this.node){let e=[];return this.lRect.forEach(function(t){e.push(t.getNode())}),e}return this.canAddNode&&(this.node.clearNodes(),this.lRect.forEach(e=>this.node.addNode(e.getNode()))),this.node}sort(e){this.canAddNode&&(this.lRect.sort(e),this.lRect.forEach(function(t){t.canAddNode&&t.sort(e)}))}destroy(){this.line.destroy(),this.rect.destroy(),void 0!==this.lRect&&this.lRect.forEach(e=>e.destroy())}delete(e){let t=this.lRect.indexOf(e);if(-1!==t)return this.lRect.splice(t,1),e.destroy(),!0;for(let t=0;tthis.click())}click(){null===this.circleRange?this.drawRange():this.eraseRange()}addShield(e){this.shield.increase(e)}setX(e){this.x=e,this.circle.setX(this.x),this.life.setX(this.x),this.shield.setX(this.x),this.drawCircleRange()}setY(e){this.y=e,this.life.setY(this.y-this.width),this.shield.setY(this.y-1.5*this.width),this.circle.setY(this.y),this.drawCircleRange()}setTarget(e){this.target=e}updateTarget(){this.verifyTarget()&&this.setTargetPos(this.target.x,this.target.y)}setTargetPos(e,t){}setDamage(e=this.damage){this.damage=e+DAMAGE_BASE}setRange(e=this.range){this.range=e+RANGE_BASE,this.drawCircleRange()}setSpeed(e=this.speed){this.speed=e+SPEED_BASE}setSpeedReload(e=this.speedReload){this.speedReload=e+SPEED_RELOAD_BASE}increaseSpeedBonus(e){this.speedBonus+=e}decreaseSpeedBonus(e){this.speedBonus-=e,console.log(this.speed)}advanceToTarget(){return this.verifyTarget()&&this.advanceTo(this.target),!1}advanceTo(e){if(e.x!==this.x||e.y!==this.y){let t=!1,s=!1,i=this.getVelocity(e),h=i[0]+this.x,a=i[1]+this.y;return i[0]>=0&&h>=e.x||i[0]<=0&&h<=e.x?(this.setX(e.x),t=!0):this.setX(this.x+i[0]),i[1]>=0&&a>=e.y||i[1]<=0&&a<=e.y?(this.setY(e.y),s=!0):this.setY(this.y+i[1]),!(t&&s)}return!1}fleeFromTarget(){return!!this.verifyTarget()&&this.fleeFrom(this.target)}fleeFrom(e){if(this.target.x!==this.x||this.target.y!==this.y){let t=this.getVelocity(e,!0);return t[0]>=0&&this.x-this.width/2<=0?this.setX(this.width/2):t[0]<=0&&this.x+this.width/2>=WIDTH_MAP?this.setX(WIDTH_MAP-this.width/2):this.setX(this.x-t[0]),t[1]>=0&&this.y-this.width/2<=0?this.setY(this.height/2):t[1]<=0&&this.y+this.width/2>=WIDTH_MAP?this.setY(WIDTH_MAP-this.height/2):this.setY(this.y-t[1]),!0}return!1}getVelocity(e,t=!1){let s=[],i=e.x-this.x,h=e.y-this.y,a=Math.hypot(i,h);return s[0]=i/a*SPEED*this.speed*this.speedBonus*SPEED_GAME,s[1]=h/a*SPEED*this.speed*this.speedBonus*SPEED_GAME,t&&(this.x+this.width/2+s[0]>WIDTH_MAP||this.x-this.width/2-s[0]<0?(s[1]+=s[0]*Math.sign(s[1]),s[0]=0):(this.y+this.width/2-s[1]>WIDTH_MAP||this.y-this.width/2+s[1]<0)&&(s[0]+=s[1]*Math.sign(-s[0]),s[1]=0)),s}attackTarget(e=0){return!!this.verifyTarget()&&(this.canAttack&&this.attack(this.target,e),!0)}verifyTarget(){return!!this.haveTarget()&&(!!this.target.isAlive()||(this.setTarget(null),!1))}attack(e,t){this.canAttack=!1,this.missile.setPosition(this.x,this.y).setVisible(!0),this.missile.setRotation(Math.atan2(this.y-this.target.y,this.x-this.target.x)-1.57),this.scene.sound.play("shot");let s=this.calcDistance(this.target)*WIDTH_MAP/1e3/SPEED_GAME;this.scene.tweens.add({targets:this.missile,x:e.x,y:e.y,ease:"Linear",duration:s,onComplete:()=>this.finishAttack(e,t)}),this.scene.time.addEvent({delay:SPEED_RELOAD/this.speedReload/SPEED_GAME,callback:this.reload,callbackScope:this})}finishAttack(e,t){e.beAttack(this.damage*DAMAGE*t)&&this.setTarget(null),this.missile.setVisible(!1)}reload(){this.canAttack=!0}beAttack(e){let t=this.shield.decrease(e),s={font:HEIGHT_DAMAGE.toString()+"px stencil",fill:"#ffff00"},i=this.scene.add.text(this.x,this.y,e.toString(),s).setOrigin(0,1);return this.scene.tweens.add({targets:i,x:this.x+30,y:this.y-50,alpha:0,duration:DURATION_DAMAGE,ease:"Sine.easeOut",onComplete:()=>i.destroy()}),this.scene.sound.play("hit"),console.log("HIT"),t>0&&(console.log("Shield Broken"),this.life.decrease(t)),this.die()}isTargetInRange(e=1){return!!this.haveTarget()&&this.calcDistance(this.target)<=this.range*RANGE*e}calcDistance(e){return Math.hypot(e.x-this.x,e.y-this.y)}isAlive(){return this.life.value>0}die(){return 0===this.life.value&&(null!==this.circleRange&&this.circleRange.destroy(),this.circle.destroy(),this.shield.destroy(),this.life.destroy(),!0)}haveTarget(){return null!=this.target}read(){for(let e=0;ee.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){newGame(this.father),this.scene.start("Game")}}var listBonus=[],LANG=navigator.language.substr(0,2).toLowerCase(),SPEED_GAME=1;const MYSELF="myself",SHIELD_PER_SECOND=5,COLOR_ATTACK=16711680,COLOR_MOVE=255,COLOR_CONDITION=921102,COLOR_RED=16711680,COLOR_ORANGE=16744192,COLOR_GREEN=32768,COLOR_RANGE=32768,COLOR_SPEED_RELOAD=8323327,COLOR_MYSELF=6711039,WIDTH_WINDOW=$(document).width()-20,HEIGHT_WINDOW=$(document).height()-20,WIDTH_MAP=WIDTH_WINDOW1/3?e>2/3?(e=1,this.percentBonus=1):(e=2/3,this.percentBonus=1.5):(e=1/3,this.percentBonus=2),this.percentRange=e}do(e){return!(!e.haveTarget()||!e.isTargetInRange(this.percentRange))&&e.attackTarget(this.percentBonus)}getFrame(){return 3*this.percentRange-1}getOptionJson(){return this.percentRange}}class Bar extends HealthBar{constructor(e,t="",s,i,h,a,n,r=new CategoryBar,o=1,d){super(e,t,s,i,h,a,void 0!==d?d:r.valueMax,n,n,!1),this.name=t,this.scene=e,this.scene.input.on("pointerdown",this.doDrag,this);let l={font:i.toString()+"px stencil",fill:"#e2e2e2"};this.text=this.scene.add.text(this.bar.x+this.width+10,this.bar.y,this.value.toString(),l).setOrigin(0,0),this.categoryBar=r,this.setValue(0),this.categoryBar.setValueOf(this,o)}doDrag(){let e=this.scene.input;e.x>=this.bar.x-10&&e.x<=this.bar.x+this.width+10&&e.y>=this.bar.y&&e.y<=this.bar.y+this.height&&(this.scene.pauseScene(),this.clickOn())}clickOn(){this.onMove(),this.scene.input.on("pointermove",()=>this.onMove()),this.scene.input.on("pointerup",()=>this.stopClick())}stopClick(){this.scene.input.off("pointermove"),this.scene.input.off("pointerup")}onMove(){this.setValWithX(this.scene.input.x)}setValWithX(e){this.categoryBar.setValueOf(this,Math.round((e-this.bar.x)/this.width*this.valueMax))}draw(){super.draw();let e=this.value/this.valueMax*this.width-5;this.bar.fillStyle(9868950),this.bar.fillRect(e,0,10,this.height),void 0!==this.text&&this.text.setText(this.value+1)}}class BonusAttack extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusAttack",h)}useOn(e){let t=e.speed;e.setSpeed(t+this.value),this.scene.time.addEvent({delay:this.time,callback:e.setSpeed(t)}),this.destroy()}}class BonusShield extends Bonus{constructor(e,t,s,i,h){super(e,t,s,i,"bonusShield",h)}useOn(e){e.shield.valueMax=e.shield.valueMax+this.value,e.shield.value=e.shield.value+this.val,this.destroy()}}class BonusSpeed extends Bonus{constructor(e,t,s,i,h,a){let n;switch(h){case 1:n="bonusSpeed0";break;case 2:n="bonusSpeed1";break;case 3:default:n="bonusSpeed2"}super(e,t,s,i,n,h),this.time=a}useOn(e){e.increaseSpeedBonus(this.value),this.scene.time.addEvent({delay:this.time,callback:()=>e.decreaseSpeedBonus(this.value)}),this.destroy()}}class Boot extends ManageLang{constructor(e){super("Boot",e)}create(){super.create();this.add.text(WIDTH_WINDOW/2,HEIGHT_WINDOW/3,"WARIA",{font:"200px stencil",fill:"#e2e2e2"}).setOrigin(.5,.5);let e=this.add.sprite(WIDTH_WINDOW/2,HEIGHT_WINDOW/3*2,"playLetter").setInteractive();e.on("pointerout",()=>e.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){console.log("Play"),this.father.scene.add("Type",new Type(this.father)),this.scene.start("Type")}}class Category{constructor(e="undefined",t=!0,s=!0){this.name=e,this.single=t,this.lBtn=[],this.lValue=[],this.obligatory=s}add(e,t){0!==this.lBtn.length&&this.single&&(this.lBtn[0].clearTint(),this.lValue=[],this.lBtn=[]),this.lValue.push(t),this.lBtn.push(e),e.tint=15718407}getValue(){return this.single?this.lValue[0]:this.lValue}validate(){return!(0===this.lBtn.length&&this.obligatory)}remove(e){let t=this.lBtn.indexOf(e);-1!==t&&(this.lBtn.splice(t,1),this.lValue.splice(t,1)),e.clearTint()}}class CategoryBar{constructor(e=VALUE_MAX_BAR,t=1){this.startValue=t,this.valueMax=e,this.point=this.valueMax}addPoint(e){if(this.point+=e,this.point<0){let e=this.point;return this.point=0,e}return this.point>this.valueMax&&(this.point=this.valueMax),0}setValueOf(e,t){let s=t-e.value,i=e.value;this.point>=s?e.setValue(t):e.setValue(e.value+this.point),this.addPoint(i-e.value),this.draw()}addText(e,t,s,i,h){this.text=t;let a={font:h.toString()+"px stencil",fill:"#e2e2e2"};this.textScene=e.add.text(s,i,this.text,a).setOrigin(0,0),this.draw()}setTextPos(e,t){this.textScene.setX(e),this.textScene.setY(t)}setText(e){this.text=e,this.draw()}draw(){this.textScene.setText(this.text+this.point)}}class Condition{constructor(e,t=!1,s=!1,i,h){this.shieldFilter=t,this.rangeFilter=s,this.shield=i,this.range=h,this.myself=e,this.lNode=[]}addNode(e){this.lNode.push(e)}do(e){if(this.doCondition(e))for(let t=0;t=h&&(s>h&&(s=h,i=[]),i.push(t))}}),i.length>1?i[Math.floor(Math.random()*(i.length+1))]:i[0]}function toJson(e,t,s=!1){let i;switch(typeof t){case"string":i='"'+e.toString()+'":"'+t+'"';break;default:i='"'+e.toString()+'":'+t}return s||(i+=","),i}function endLineJson(e){return e.length>0&&","===e[e.length-1]&&(e=e.substr(0,e.length-1)),e}var tree=void 0;class Game extends ManageLang{constructor(e,t){super("Game",e),super.addOtherScenes("GamingBoard"),SPEED_GAME=1,void 0!==t&&(this.tree=JSON.parse(t),this.loadSave(this.tree))}create(){super.create(),this.doLine=!1,this.gm=new GamingBoard(this),-1!==this.father.scene.getIndex("GamingBoard")&&this.father.scene.remove("GamingBoard"),this.father.scene.add("GamingBoard",this.gm),this.scene.launch("GamingBoard"),this.scene.pause("GamingBoard"),this.selected=null;this.createButton();let e=WIDTH_WINDOW/4*3,t=WIDTH_WINDOW/10;if(void 0===this.tree){this.initStat=new InitStat(this,OFFX_MAP+WIDTH_MAP+5,OFFY_MAP,200,30,10),this.initStat.addBar(DAMAGE_BEGIN,5,COLOR_ATTACK,["DAMAGE","DEGATS"]),this.initStat.addBar(SPEED_RELOAD_BEGIN,5,COLOR_SPEED_RELOAD,["R.S","RECHARGEMENT"]),this.initStat.addBar(SPEED_BEGIN,5,COLOR_MOVE,["SPEED","VITESSE"]),this.initStat.addBar(RANGE_BEGIN,5,COLOR_RANGE,["RANGE","PORTEE"]),this.tree=new RectangleNode(e,HEIGHT_WINDOW/10,this,"waria"),this.tree.addRect(new RectangleNode(e-2*t,HEIGHT_WINDOW/3,this,"move",[!0,!1])),this.tree.addRect(new RectangleNode(e+t,HEIGHT_WINDOW/3,this,"move",[!0])),this.tree.addRect(new RectangleNode(e,HEIGHT_WINDOW/3,this,"attack",[1/3]));let s=new RectangleNode(e-t,HEIGHT_WINDOW/3,this,"condition",[!0,!0,!1,1/3,0]);this.tree.addRect(s),s.addRect(new RectangleNode(e,HEIGHT_WINDOW/1.5,this,"move",[!1])),s.addRect(new RectangleNode(e-t,HEIGHT_WINDOW/1.5,this,"attack",[1]))}else{let e=this.tree.getJson();e=JSON.parse(e);let t=this.initStat.getJson();t=JSON.parse(t),this.loadSave(e,t)}this.gm.addRobot(new Robot(.1*WIDTH_MAP,.1*WIDTH_MAP,.9*WIDTH_MAP,.9*WIDTH_MAP,this.gm,MYSELF)),this.gm.addRobot(new Robot(.1*WIDTH_MAP,.1*WIDTH_MAP,.2*WIDTH_MAP,.1*WIDTH_MAP,this.gm)),this.gm.addRobot(new Robot(.1*WIDTH_MAP,.1*WIDTH_MAP,.1*WIDTH_MAP,.9*WIDTH_MAP,this.gm)),this.input.keyboard.on("keydown-DELETE",()=>{this.clickBin()}),this.input.keyboard.on("keydown-E",()=>{this.clickPencil()}),this.input.keyboard.on("keydown-ENTER",()=>{this.clickPlus()})}update(e,t){super.update(e,t),this.doLine&&this.tree.updateLine()}loadSave(e,t){this.initStat=this.loadInitSave(t),this.tree=this.loadTree(e)}loadTree(e){let t=new RectangleNode(e.x,e.y,this,e.type,e.option);return void 0!==e.lRect&&e.lRect.length>0&&e.lRect.forEach(e=>t.addRect(this.loadTree(e))),t}loadInitSave(e){let t=new InitStat(this,OFFX_MAP+WIDTH_MAP+5,OFFY_MAP,200,30,10);for(let s=0;se.getX()-t.getX()),this.gm.modifyNodes(this.tree.getNode()),this.gm.modifyValue(this.initStat.lBar[0].value,this.initStat.lBar[1].value,this.initStat.lBar[2].value,this.initStat.lBar[3].value),this.gm.resume()}changeFrame(e,t=0,s=0){e.setFrame(t+2*s)}createButton(){let e=WIDTH_MAP+OFFX_MAP,t=WIDTH_MAP+OFFY_MAP+5,s=OFFY_MAP/1.5,i=1.1*s,h=this.add.sprite(10,10,"back").setOrigin(0,0).setInteractive();this.play=this.add.sprite(e,t,"play").setOrigin(1,0).setInteractive();let a=this.add.sprite(e-i,t,"speed").setOrigin(1,0).setInteractive();this.pencil=this.add.sprite(e-2*i,t,"pencil").setOrigin(1,0).setInteractive().setVisible(!1),this.bin=this.add.sprite(e-3*i,t,"bin").setOrigin(1,0).setInteractive().setVisible(!1),this.plus=this.add.sprite(e-4*i,t,"plus").setOrigin(1,0).setInteractive().setVisible(!1);let n=this.add.sprite(e-5*i,t,"mute").setOrigin(1,0).setInteractive();this.linePlay=0,this.lineSpeed=1===SPEED_GAME?0:1,this.changeFrame(a,0,this.lineSpeed),this.father.sound.mute?this.lineMute=1:this.lineMute=0,this.changeFrame(n,0,this.lineMute),h.displayHeight=h.displayWidth=s,this.play.displayHeight=this.play.displayWidth=s,a.displayHeight=a.displayWidth=s,n.displayHeight=n.displayWidth=s,this.pencil.displayHeight=this.pencil.displayWidth=s,this.bin.displayHeight=this.bin.displayWidth=s,this.plus.displayHeight=this.plus.displayWidth=s,this.play.on("pointerout",()=>this.changeFrame(this.play,0,this.linePlay)),this.play.on("pointerover",()=>this.changeFrame(this.play,1,this.linePlay)),a.on("pointerout",()=>this.changeFrame(a,0,this.lineSpeed)),a.on("pointerover",()=>this.changeFrame(a,1,this.lineSpeed)),n.on("pointerout",()=>this.changeFrame(n,0,this.lineMute)),n.on("pointerover",()=>this.changeFrame(n,1,this.lineMute)),this.creatBtnOutAndOver(h),this.creatBtnOutAndOver(this.pencil),this.creatBtnOutAndOver(this.bin),this.creatBtnOutAndOver(this.plus),this.play.on("pointerdown",()=>this.clickPlay()),a.on("pointerdown",()=>this.clickSpeed(a)),h.on("pointerdown",()=>this.clickBack()),n.on("pointerdown",()=>this.clickMute(n)),this.pencil.on("pointerdown",()=>this.clickPencil()),this.bin.on("pointerdown",()=>this.clickBin()),this.plus.on("pointerdown",()=>this.clickPlus()),this.input.on("pointerdown",()=>this.clickNode()),this.input.on("drag",this.doDrag),this.input.on("dragstart",()=>this.dragStart()),this.input.on("dragend",()=>this.dragEnd())}creatBtnOutAndOver(e){e.on("pointerout",()=>this.changeFrame(e,0)),e.on("pointerover",()=>this.changeFrame(e,1))}clickPlay(){this.scene.isPaused("GamingBoard")?this.resume():this.pauseScene(),this.changeFrame(this.play,1,this.linePlay)}clickSpeed(e){1===SPEED_GAME?(SPEED_GAME=2,this.lineSpeed=1):(SPEED_GAME=1,this.lineSpeed=0),this.changeFrame(e,1,this.lineSpeed)}clickPencil(){if(null!==this.selected){switch(console.log("PENCIL"),this.changeFrame(this.pencil,0),this.selected.type){case"attack":this.father.scene.add("AddNode",new AddAttack(this.father,this,this.selected,!1,this.selected.node.percentRange));break;case"move":this.father.scene.add("AddNode",new AddMove(this.father,this,this.selected,this.selected.node.toward,this.selected.node.enemyBot));break;case"condition":this.selected.node.shieldFilter?this.father.scene.add("AddNode",new AddCondition(this.father,this,this.selected,this.selected.node.myself,[this.selected.node.shield,"shield"])):this.father.scene.add("AddNode",new AddCondition(this.father,this,this.selected,this.selected.node.myself,[this.selected.node.range,"range"]));break;default:return}this.scene.pause("Game"),this.scene.launch("AddNode")}}clickBin(){null!==this.selected&&(console.log("BIN"),this.tree.delete(this.selected),this.changeFrame(this.bin,0),this.tryClick())}clickPlus(){null!==this.selected&&this.selected.canAddNode&&(console.log("PLUS"),this.father.scene.add("PlusNode",new PlusNode(this.father,this,this.selected)),this.scene.launch("PlusNode"),this.changeFrame(this.plus,0),this.scene.pause("Game"))}clickBack(){console.log("BACK"),this.father.scene.stop("GamingBoard"),this.father.scene.remove("GamingBoard"),this.father.scene.stop("Game"),this.father.scene.start("Type")}clickMute(e){console.log("MUTE"),this.father.sound.mute?(this.father.sound.mute=!1,this.lineMute=0):(this.father.sound.mute=!0,this.lineMute=1),this.changeFrame(e,1,this.lineMute)}tryClick(){this.pencil.setVisible(!1),this.bin.setVisible(!1),this.plus.setVisible(!1),null!=this.selected&&(this.selected.deselect(),this.selected=null)}}class GamingBoard extends Phaser.Scene{constructor(e){super("GamingBoard"),this.listRobot=[],listBonus=[],this.father=e,this.end=!1}preload(){this.cameras.main.setViewport(OFFX_MAP,OFFY_MAP,WIDTH_MAP,WIDTH_MAP),this.sound.add("shot"),this.sound.add("hit")}create(){listBonus.push(new BonusSpeed("Fusée",this,WIDTH_MAP/2,WIDTH_MAP/2,5,2e3)),this.add.image(0,0,"background").alpha=.1;for(let e=0;et.addNode(e)),!0)}modifyValue(e,t,s,i){let h=this.getMyRobot();return void 0!==h&&(h.setSpeed(s),h.setRange(i),h.setSpeedReload(t),h.setDamage(e),!0)}getMyRobot(){for(let e=0;ee.addShield(SHIELD_PER_SECOND)),this.time.addEvent({delay:1e3/SPEED_GAME,callback:this.upShield,callbackScope:this})}}class InitStat{constructor(e,t,s,i,h,a){this.scene=e,this.posX=t,this.posY=s,this.width=i,this.height=h,this.category=new CategoryBar(a),this.lBar=[],this.lText=[],this.category.addText(this.scene,selectWord("TOKENS : ","JETONS : "),this.posX,this.posY,this.height)}addBar(e,t,s,i){this.lText.push(i),this.lBar.push(new Bar(this.scene,selectWord(i[0],i[1]),this.width,this.height,this.posX,this.posY,s,this.category,e,t)),this.posY+=1.5*this.height,this.category.setTextPos(this.posX,this.posY)}getJson(){let e="{";return e+='"lBar":[',this.lBar.forEach(t=>e+=t.getJson()+","),e=endLineJson(e)+"],",e+='"lText":[',this.lText.forEach(t=>{e+="[",t.forEach(t=>{e+='"'+t+'",'}),e=endLineJson(e),e+="],"}),e=endLineJson(e),e+="]",e+="}"}}class LoadFile extends Phaser.Scene{constructor(e,t,s){super("LoadFile"),this.father=e,this.son=s,this.nameSon=t,this.father.scene.pause(this.nameSon),this.father.scene.stop(this.nameSon),this.father.scene.remove("LoadFile")}preload(){let e=this.add.graphics(),t=this.add.graphics(),s=WIDTH_WINDOW/2-160,i=HEIGHT_WINDOW/2-25;t.fillStyle(2236962,.8),t.fillRect(s,i,320,50),this.load.on("progress",function(t){e.clear(),e.fillStyle(16777215,1),e.fillRect(s+10,i+10,300*t,30)}),this.load.on("complete",()=>{e.destroy(),t.destroy(),-1===this.father.scene.getIndex(this.nameSon)&&this.father.scene.add(this.nameSon,this.son),this.father.scene.start(this.nameSon)}),this.load.audio("shot","assets/sounds/shot.ogg"),this.load.audio("hit","assets/sounds/hit.ogg"),this.loadImage("en","flags/",!0),this.loadImage("fr","flags/",!0),this.loadImage("bonusSpeed0","bonus/",!0),this.loadImage("bonusSpeed1","bonus/",!0),this.loadImage("bonusSpeed2","bonus/",!0),this.loadImage("enemy","robots/"),this.loadSprite("playLetter",550,150,"buttons/"),this.loadSprite("cancel",550,150,"buttons/"),this.loadSprite("add",550,150,"buttons/"),this.loadSprite("modify",550,150,"buttons/"),this.loadSprite("home",550,150,"buttons/"),this.loadSprite("next",550,150,"buttons/"),this.loadSprite("retry",550,150,"buttons/"),this.loadSprite("duel",269,262,"buttons/"),this.loadSprite("last",269,262,"buttons/"),this.loadSprite("team",269,262,"buttons/"),this.loadSprite("flag",269,262,"buttons/"),this.loadSprite("map",269,262,"buttons/"),this.loadSprite("play",100,100,"buttons/"),this.loadSprite("bin",100,100,"buttons/"),this.loadSprite("plus",100,100,"buttons/"),this.loadSprite("pencil",100,100,"buttons/"),this.loadSprite("speed",100,100,"buttons/"),this.loadSprite("mute",100,100,"buttons/"),this.loadSprite("back",200,200,"buttons/"),this.loadSprite("shortRange",300,150,"buttons/"),this.loadSprite("mediumRange",300,150,"buttons/"),this.loadSprite("longRange",300,150,"buttons/"),this.loadSprite("shield0",300,150,"buttons/"),this.loadSprite("shield33",300,150,"buttons/"),this.loadSprite("shield66",300,150,"buttons/"),this.loadSprite("shield100",300,150,"buttons/"),this.loadSprite("myself",300,150,"buttons/"),this.loadSprite("enemyBot",300,150,"buttons/"),this.loadSprite("bonus",300,150,"buttons/"),this.loadSprite("moveToward",300,150,"buttons/"),this.loadSprite("fleeFrom",300,150,"buttons/"),this.loadSprite("attackNode",180,190,"nodes/",!0),this.loadSprite("moveNode",180,190,"nodes/",!0),this.loadSprite("conditionNode",180,190,"nodes/",!0),this.loadImage("background"),this.loadImage("bullet"),this.loadImage("logoWaria"),this.loadImage("attack","nodes/",!0),this.loadImage("move","nodes/",!0),this.loadImage("condition","nodes/",!0)}loadSprite(e,t,s,i="",h=!1){this.deleteLoad(e),h?this.load.spritesheet(e,"assets/"+i+e+".png",{frameWidth:t,frameHeight:s}):this.load.spritesheet(e,"assets/"+LANG+"/"+i+e+".png",{frameWidth:t,frameHeight:s})}loadImage(e,t="",s=!1){this.deleteLoad(e),s?this.load.image(e,"assets/"+t+e+".png"):this.load.image(e,"assets/"+LANG+"/"+t+e+".png")}deleteLoad(e){this.textures.exists(e)&&this.textures.remove(e)}}class Looser extends Finish{constructor(e,t){super(e,t)}create(){super.create(),super.addTitle(selectWord("GAME OVER","PARTIE PERDUE")),super.btnRetry(super.createButton(WIDTH_WINDOW/3,"retry")),super.btnHome(super.createButton(WIDTH_WINDOW/1.5,"home"))}}class Missile extends Phaser.GameObjects.Image{constructor(e,t,s,i){super(e,0,0,t),this.visible=!1,this.setOrigin(.5,.5),this.setScale(.02)}}class Move{constructor(e,t=!0){this.toward=e,this.enemyBot=t}do(e){if(this.enemyBot){if(e.verifyTarget())return!0===this.toward?this.moveToward(e):this.fleeFrom(e)}else{let t=chooseTarget(e,listBonus);if(void 0!==t){let s;return(s=!0===this.toward?this.moveToward(e,t):this.fleeFrom(e,t))||(t.useOn(e),listBonus.splice(listBonus.indexOf(t),1)),!0}}return!1}moveToward(e,t=e.target){return e.advanceTo(t)}fleeFrom(e,t=e.target){return e.fleeFrom(t)}getFrame(){let e;return e=this.toward?0:2,this.enemyBot||(e+=1),e}getOptionJson(){return this.toward+","+this.enemyBot}}class PlusNode extends Phaser.Scene{constructor(e,t,s){super("PlusNode"),this.father=e,this.gameR=t,this.selected=s}create(){this.add.rectangle(0,0,WIDTH_WINDOW,HEIGHT_WINDOW,0).setOrigin(0,0).setAlpha(.5),this.add.rectangle(0,HEIGHT_WINDOW/2,WIDTH_WINDOW,HEIGHT_WINDOW/2,3487290).setOrigin(0,.5),this.createNode(),this.createButton()}createNode(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW/2,s=WIDTH_WINDOW/3,i=HEIGHT_WINDOW/10,h={font:(i/1.5).toString()+"px stencil",fill:"#e2e2e2"};this.add.text(e-s,t-i,selectWord("ATTACK","ATTAQUE"),h).setOrigin(.5,.5),this.add.text(e,t-i,selectWord("MOVE","DEPLACEMENT"),h).setOrigin(.5,.5),this.add.text(e+s,t-i,selectWord("CONDITION","CONDITION"),h).setOrigin(.5,.5);let a=this.add.sprite(e-s,t+i,"attack").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("attack"));a.displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e,t+i,"move").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("move"))).displayHeight=2*i,a.scaleX=a.scaleY,(a=this.add.sprite(e+s,t+i,"condition").setOrigin(.5,.5).setInteractive().on("pointerdown",()=>this.click("condition"))).displayHeight=2*i,a.scaleX=a.scaleY}click(e){switch(e.toString()){case"attack":this.father.scene.add("AddNode",new AddAttack(this.father,this.gameR,this.selected));break;case"move":this.father.scene.add("AddNode",new AddMove(this.father,this.gameR,this.selected));break;case"condition":this.father.scene.add("AddNode",new AddCondition(this.father,this.gameR,this.selected))}this.scene.launch("AddNode"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}createButton(){let e=WIDTH_WINDOW/2,t=HEIGHT_WINDOW-100,s=this.add.image(e,t,"cancel").setOrigin(.5,.5).setInteractive();s.on("pointerover",()=>s.setFrame(1)),s.on("pointerout",()=>s.setFrame(0)),s.on("pointerdown",()=>this.cancel()),s.displayHeight=HEIGHT_WINDOW/10,s.scaleX=s.scaleY}cancel(){this.scene.resume("Game"),this.scene.stop("PlusNode"),this.father.scene.remove("PlusNode")}}class RectangleNode{constructor(e,t,s,i,h=[]){switch(i.toString().toLowerCase()){case"attack":this.rect=new Phaser.GameObjects.Image(s,e,t,"attackNode"),this.node=new Attack(h[0]),this.canAddNode=!1,this.line=s.add.graphics();break;case"move":this.rect=new Phaser.GameObjects.Image(s,e,t,"moveNode"),this.node=new Move(h[0],h[1]),this.canAddNode=!1,this.line=s.add.graphics();break;case"condition":this.rect=new Phaser.GameObjects.Image(s,e,t,"conditionNode"),this.node=new Condition(h[0],h[1],h[2],h[3],h[4]),this.canAddNode=!0,this.lRect=[],this.scene=s,this.line=s.add.graphics();break;case"waria":this.rect=new Phaser.GameObjects.Image(s,e,t,"logoWaria").setInteractive(),this.canAddNode=!0,this.lRect=[],this.scene=s,this.scene.add.existing(this.rect),this.scene.input.setDraggable(this.rect);break;default:return void console.log("Création d'un node echoué")}"waria"!==i.toString().toLowerCase()&&this.rect.setFrame(this.node.getFrame()),this.type=i,this.rect.on("pointerdown",()=>this.click()),this.rect.setOrigin(.5,0),this.rect.displayHeight=HEIGHT_WINDOW/6,this.rect.scaleX=this.rect.scaleY}getSelected(){if(this.rect.isTinted)return this;if(this.canAddNode)for(let e=0;ethis.addLine(e))}addLine(e){e.setLine(this.rect.x,this.rect.y+.9*this.rect.displayHeight)}getNode(){if(void 0===this.node){let e=[];return this.lRect.forEach(function(t){e.push(t.getNode())}),e}return this.canAddNode&&(this.node.clearNodes(),this.lRect.forEach(e=>this.node.addNode(e.getNode()))),this.node}sort(e){this.canAddNode&&(this.lRect.sort(e),this.lRect.forEach(function(t){t.canAddNode&&t.sort(e)}))}destroy(){this.line.destroy(),this.rect.destroy(),void 0!==this.lRect&&this.lRect.forEach(e=>e.destroy())}delete(e){let t=this.lRect.indexOf(e);if(-1!==t)return this.lRect.splice(t,1),e.destroy(),!0;for(let t=0;te+=t.getJson()+","),e=endLineJson(e)+"]"),e=endLineJson(e),e+="}"}}class Robot{constructor(e,t,s,i,h,a="enemy"){this.speed=SPEED_BASE+SPEED_BEGIN,this.speedReload=SPEED_RELOAD_BASE+SPEED_RELOAD_BEGIN,this.range=RANGE_BASE+RANGE_BEGIN,this.damage=DAMAGE_BASE+DAMAGE_BEGIN,this.speedBonus=1,this.name=a,this.height=e,this.width=t,this.x=s,this.y=i,this.life=new HealthBar(h,selectWord("LIFE","VIE"),2*this.width,this.width/3,this.x,this.y-this.width,LIFE,32768),this.shield=new HealthBar(h,selectWord("SHIELD","BOUCLIER"),2*this.width,this.width/3,this.x,this.y-1.5*this.width,SHIELD,255),this.circleRange=null,this.canAttack=!0,this.missile=new Missile(h,"bullet",this.width/5,this.width/4),h.add.existing(this.missile),this.addScene(h),this.lNode=[];let n=new Condition(!0,!0,!1,.5,0);n.addNode(new Move(!1)),this.addNode(n),this.addNode(new Attack),this.addNode(new Move(!0))}addScene(e){this.scene=e,"enemy"===this.name?(this.circle=this.scene.add.image(this.x,this.y,"enemy").setOrigin(.5,.5).setInteractive(),this.circle.displayWidth=this.circle.displayHeight=this.width):this.circle=this.scene.add.circle(this.x,this.y,this.width/2,COLOR_MYSELF).setInteractive(),this.circle.on("pointerdown",()=>this.click())}click(){null===this.circleRange?this.drawRange():this.eraseRange()}addShield(e){this.shield.increase(e)}setX(e){this.x=e,this.circle.setX(this.x),this.life.setX(this.x),this.shield.setX(this.x),this.drawCircleRange()}setY(e){this.y=e,this.life.setY(this.y-this.width),this.shield.setY(this.y-1.5*this.width),this.circle.setY(this.y),this.drawCircleRange()}setTarget(e){this.target=e}updateTarget(){this.verifyTarget()&&this.setTargetPos(this.target.x,this.target.y)}setTargetPos(e,t){}setDamage(e=this.damage){this.damage=e+DAMAGE_BASE}setRange(e=this.range){this.range=e+RANGE_BASE,this.drawCircleRange()}setSpeed(e=this.speed){this.speed=e+SPEED_BASE}setSpeedReload(e=this.speedReload){this.speedReload=e+SPEED_RELOAD_BASE}increaseSpeedBonus(e){this.speedBonus+=e}decreaseSpeedBonus(e){this.speedBonus-=e,console.log(this.speed)}advanceToTarget(){return this.verifyTarget()&&this.advanceTo(this.target),!1}advanceTo(e){if(e.x!==this.x||e.y!==this.y){let t=!1,s=!1,i=this.getVelocity(e),h=i[0]+this.x,a=i[1]+this.y;return i[0]>=0&&h>=e.x||i[0]<=0&&h<=e.x?(this.setX(e.x),t=!0):this.setX(this.x+i[0]),i[1]>=0&&a>=e.y||i[1]<=0&&a<=e.y?(this.setY(e.y),s=!0):this.setY(this.y+i[1]),!(t&&s)}return!1}fleeFromTarget(){return!!this.verifyTarget()&&this.fleeFrom(this.target)}fleeFrom(e){if(this.target.x!==this.x||this.target.y!==this.y){let t=this.getVelocity(e,!0);return t[0]>=0&&this.x-this.width/2<=0?this.setX(this.width/2):t[0]<=0&&this.x+this.width/2>=WIDTH_MAP?this.setX(WIDTH_MAP-this.width/2):this.setX(this.x-t[0]),t[1]>=0&&this.y-this.width/2<=0?this.setY(this.height/2):t[1]<=0&&this.y+this.width/2>=WIDTH_MAP?this.setY(WIDTH_MAP-this.height/2):this.setY(this.y-t[1]),!0}return!1}getVelocity(e,t=!1){let s=[],i=e.x-this.x,h=e.y-this.y,a=Math.hypot(i,h);return s[0]=i/a*SPEED*this.speed*this.speedBonus*SPEED_GAME,s[1]=h/a*SPEED*this.speed*this.speedBonus*SPEED_GAME,t&&(this.x+this.width/2+s[0]>WIDTH_MAP||this.x-this.width/2-s[0]<0?(s[1]+=s[0]*Math.sign(s[1]),s[0]=0):(this.y+this.width/2-s[1]>WIDTH_MAP||this.y-this.width/2+s[1]<0)&&(s[0]+=s[1]*Math.sign(-s[0]),s[1]=0)),s}attackTarget(e=0){return!!this.verifyTarget()&&(this.canAttack&&this.attack(this.target,e),!0)}verifyTarget(){return!!this.haveTarget()&&(!!this.target.isAlive()||(this.setTarget(null),!1))}attack(e,t){this.canAttack=!1,this.missile.setPosition(this.x,this.y).setVisible(!0),this.missile.setRotation(Math.atan2(this.y-this.target.y,this.x-this.target.x)-1.57),this.scene.sound.play("shot");let s=this.calcDistance(this.target)*WIDTH_MAP/1e3/SPEED_GAME;this.scene.tweens.add({targets:this.missile,x:e.x,y:e.y,ease:"Linear",duration:s,onComplete:()=>this.finishAttack(e,t)}),this.scene.time.addEvent({delay:SPEED_RELOAD/this.speedReload/SPEED_GAME,callback:this.reload,callbackScope:this})}finishAttack(e,t){e.beAttack(this.damage*DAMAGE*t)&&this.setTarget(null),this.missile.setVisible(!1)}reload(){this.canAttack=!0}beAttack(e){let t=this.shield.decrease(e),s={font:HEIGHT_DAMAGE.toString()+"px stencil",fill:"#ffff00"},i=this.scene.add.text(this.x,this.y,e.toString(),s).setOrigin(0,1);return this.scene.tweens.add({targets:i,x:this.x+30,y:this.y-50,alpha:0,duration:DURATION_DAMAGE,ease:"Sine.easeOut",onComplete:()=>i.destroy()}),this.scene.sound.play("hit"),console.log("HIT"),t>0&&(console.log("Shield Broken"),this.life.decrease(t)),this.die()}isTargetInRange(e=1){return!!this.haveTarget()&&this.calcDistance(this.target)<=this.range*RANGE*e}calcDistance(e){return Math.hypot(e.x-this.x,e.y-this.y)}isAlive(){return this.life.value>0}die(){return 0===this.life.value&&(null!==this.circleRange&&this.circleRange.destroy(),this.circle.destroy(),this.shield.destroy(),this.life.destroy(),!0)}haveTarget(){return null!=this.target}read(){this.verifyTarget();for(let e=0;ee.setFrame(0)),e.on("pointerover",()=>e.setFrame(1)),e.on("pointerdown",()=>this.clickPlay(e))}clickPlay(e){newGame(this.father),this.scene.start("Game")}}var listBonus=[],LANG=navigator.language.substr(0,2).toLowerCase(),SPEED_GAME=1;const MYSELF="myself",SHIELD_PER_SECOND=5,COLOR_ATTACK=16711680,COLOR_MOVE=255,COLOR_CONDITION=921102,COLOR_RED=16711680,COLOR_ORANGE=16744192,COLOR_GREEN=32768,COLOR_RANGE=32768,COLOR_SPEED_RELOAD=8323327,COLOR_MYSELF=6711039,WIDTH_WINDOW=$(document).width()-20,HEIGHT_WINDOW=$(document).height()-20,WIDTH_MAP=WIDTH_WINDOW0?this.createButtonModify():this.createButtonAdd()}addButton(t,e,s,i=new Category,a){let h=this.createButton(t,e,s);return h.on("pointerdown",()=>this.click(h,i,a)),i!==this.lastCategory&&this.option.length>0&&this.option[0]===a&&(this.option.splice(0,1),this.lastCategory=i,this.click(h,i,a)),h}createButton(t,e,s,i=this.heightButton,a=null){let h=this.add.image(t,e,s).setOrigin(.5,.5).setInteractive();return h.on("pointerover",()=>h.setFrame(1)),h.on("pointerout",()=>h.setFrame(0)),h.displayHeight=i,null===a?h.scaleX=h.scaleY:h.displayWidth=a,h}click(t,e,s){t.isTinted?e.remove(t):e.add(t,s)}newCategory(t,e,s){let i=new Category(t,e,s);return this.lCategory.push(i),i}addTitle(t,e,s){this.add.text(t,e,s,this.style).setOrigin(.5,.5)}createButtonCancel(){this.createButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/15),"cancel",HEIGHT_WINDOW/9).on("pointerdown",()=>this.cancel())}createButtonAdd(){this.createButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/15),"add",HEIGHT_WINDOW/9).on("pointerdown",()=>this.addNode())}createButtonModify(){this.createButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/15),"modify",HEIGHT_WINDOW/9).on("pointerdown",()=>this.modifyNode())}verifyCategory(){for(let t=0;ts.setFrame(1)),s.on("pointerout",()=>s.setFrame(0)),s.displayHeight=HEIGHT_WINDOW/9,s.scaleX=s.scaleY,s}btnRetry(t){t.on("pointerdown",()=>this.retry())}retry(){this.close(),console.log("RETRY"),-1===this.father.scene.getIndex("Game")&&newGame(this.father),this.father.scene.start("Game")}btnHome(t){t.on("pointerdown",()=>this.home())}home(){console.log("HOME"),this.close(),this.father.scene.remove("Game"),this.father.scene.start("Type")}btnNext(t){t.on("pointerdown",()=>this.next())}next(){console.log("NEXT")}close(){this.sound.stopAll(),this.father.scene.remove("GamingBoard"),this.father.scene.remove("Finish")}}class HealthBar{constructor(t,e="",s,i,a,h,r,n,o=COLOR_RED,l=!0){this.bar=new Phaser.GameObjects.Graphics(t),this.width=Math.floor(s),this.height=Math.floor(i),this.valueMax=r,this.value=r,this.color=n,this.colorMin=o,this.draw(),t.add.existing(this.bar);let c={font:(i-=4).toString()+"px stencil",fill:"#000000"};this.nameText=t.add.text(a,h,e,c).setOrigin(0,0),this.nameText.alpha=.5,this.setX(a,l),this.setY(h)}setValue(t){t<0&&(t=0),t>this.valueMax&&(t=this.valueMax),t!==this.value&&(this.value=t,this.draw())}decrease(t){this.value-=t;let e=0;return this.value<0&&(e=-this.value,this.value=0),this.draw(),e}getBar(){return this.bar}increase(t){this.value+=t,this.value>this.valueMax&&(this.value=this.valueMax),this.draw()}setX(t,e=!0){e&&(t-=this.width/2),this.bar.setX(t),this.nameText.setX(t+5)}setY(t){this.bar.setY(t),this.nameText.setY(t)}draw(){this.bar.clear(),this.bar.fillStyle(0),this.bar.fillRect(0,0,this.width,this.height),this.bar.fillStyle(16777215),this.bar.fillRect(2,2,this.width-4,this.height-4);let t=this.value/this.valueMax;t<1/3?this.bar.fillStyle(this.colorMin):this.bar.fillStyle(this.color);let e=Math.floor(t*(this.width-4));this.bar.fillRect(2,2,e,this.height-4)}destroy(){this.bar.destroy(),this.nameText.destroy()}getJson(){let t="{";return t+=toJson("value",this.value)+toJson("valueMax",this.valueMax)+toJson("color",this.color)+toJson("colorMin",this.colorMin),t=endLineJson(t),t+="}"}}class ManageLang extends Phaser.Scene{constructor(t,e){super(t),this.name=t,this.father=e,this.otherScenes=[]}addOtherScenes(t){this.otherScenes.push(t)}create(){this.createFlags()}createFlags(){this.diffXFlag=0,this.createFlag("fr"),this.createFlag("en")}createFlag(t){let e=this.add.image(WIDTH_WINDOW-10-this.diffXFlag,10,t).setOrigin(1,0).setInteractive();e.displayHeight=40,e.scaleX=e.scaleY,this.diffXFlag=this.diffXFlag+e.displayWidth+10,e.on("pointerdown",()=>this.setLang(t))}setLang(t){t!==LANG&&(LANG=t,this.father.scene.add("LoadFile",new LoadFile(this.father,this.name)),this.father.scene.start("LoadFile"),this.otherScenes.forEach(t=>this.father.scene.stop(t)))}} \ No newline at end of file +class AddNode extends Phaser.Scene{constructor(t,e,s,i=[]){super("AddNode"),this.father=t,this.gameR=e,this.selected=s,this.lCategory=[];let a=HEIGHT_WINDOW/14;this.style={font:a.toString()+"px stencil",fill:"#e2e2e2"},this.heightButton=HEIGHT_WINDOW/8,this.lastCategory=null,this.option=i}create(){let t=HEIGHT_WINDOW/(4/3);this.add.rectangle(0,0,WIDTH_WINDOW,HEIGHT_WINDOW,0).setOrigin(0,0).setAlpha(.5),this.add.rectangle(0,HEIGHT_WINDOW/2,WIDTH_WINDOW,t,3487290).setOrigin(0,.5),this.createButtonCancel(),this.option.length>0?this.createButtonModify():this.createButtonAdd()}addButton(t,e,s,i=new Category,a){let h=this.createButton(t,e,s);return h.on("pointerdown",()=>this.click(h,i,a)),i!==this.lastCategory&&this.option.length>0&&(this.option[0]===a||this.option[0].length>0&&this.option[0][0]===a[0]&&this.option[0][1]===a[1])&&(this.option.splice(0,1),this.lastCategory=i,this.click(h,i,a)),h}createButton(t,e,s,i=this.heightButton,a=null){let h=this.add.image(t,e,s).setOrigin(.5,.5).setInteractive();return h.on("pointerover",()=>h.setFrame(1)),h.on("pointerout",()=>h.setFrame(0)),h.displayHeight=i,null===a?h.scaleX=h.scaleY:h.displayWidth=a,h}click(t,e,s){t.isTinted?e.remove(t):e.add(t,s)}newCategory(t,e,s){let i=new Category(t,e,s);return this.lCategory.push(i),i}addTitle(t,e,s){this.add.text(t,e,s,this.style).setOrigin(.5,.5)}createButtonCancel(){this.createButton(WIDTH_WINDOW/3,HEIGHT_WINDOW/(16/15),"cancel",HEIGHT_WINDOW/9).on("pointerdown",()=>this.cancel())}createButtonAdd(){this.createButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/15),"add",HEIGHT_WINDOW/9).on("pointerdown",()=>this.addNode())}createButtonModify(){this.createButton(WIDTH_WINDOW/1.5,HEIGHT_WINDOW/(16/15),"modify",HEIGHT_WINDOW/9).on("pointerdown",()=>this.modifyNode())}verifyCategory(){for(let t=0;ts.setFrame(1)),s.on("pointerout",()=>s.setFrame(0)),s.displayHeight=HEIGHT_WINDOW/9,s.scaleX=s.scaleY,s}btnRetry(t){t.on("pointerdown",()=>this.retry())}retry(){this.close(),console.log("RETRY"),-1===this.father.scene.getIndex("Game")&&newGame(this.father),this.father.scene.start("Game")}btnHome(t){t.on("pointerdown",()=>this.home())}home(){console.log("HOME"),this.close(),this.father.scene.remove("Game"),this.father.scene.start("Type")}btnNext(t){t.on("pointerdown",()=>this.next())}next(){console.log("NEXT")}close(){this.sound.stopAll(),this.father.scene.remove("GamingBoard"),this.father.scene.remove("Finish")}}class HealthBar{constructor(t,e="",s,i,a,h,r,n,o=COLOR_RED,l=!0){this.bar=new Phaser.GameObjects.Graphics(t),this.width=Math.floor(s),this.height=Math.floor(i),this.valueMax=r,this.value=r,this.color=n,this.colorMin=o,this.draw(),t.add.existing(this.bar);let c={font:(i-=4).toString()+"px stencil",fill:"#000000"};this.nameText=t.add.text(a,h,e,c).setOrigin(0,0),this.nameText.alpha=.5,this.setX(a,l),this.setY(h)}setValue(t){t<0&&(t=0),t>this.valueMax&&(t=this.valueMax),t!==this.value&&(this.value=t,this.draw())}decrease(t){this.value-=t;let e=0;return this.value<0&&(e=-this.value,this.value=0),this.draw(),e}getBar(){return this.bar}increase(t){this.value+=t,this.value>this.valueMax&&(this.value=this.valueMax),this.draw()}setX(t,e=!0){e&&(t-=this.width/2),this.bar.setX(t),this.nameText.setX(t+5)}setY(t){this.bar.setY(t),this.nameText.setY(t)}draw(){this.bar.clear(),this.bar.fillStyle(0),this.bar.fillRect(0,0,this.width,this.height),this.bar.fillStyle(16777215),this.bar.fillRect(2,2,this.width-4,this.height-4);let t=this.value/this.valueMax;t<1/3?this.bar.fillStyle(this.colorMin):this.bar.fillStyle(this.color);let e=Math.floor(t*(this.width-4));this.bar.fillRect(2,2,e,this.height-4)}destroy(){this.bar.destroy(),this.nameText.destroy()}getJson(){let t="{";return t+=toJson("value",this.value)+toJson("valueMax",this.valueMax)+toJson("color",this.color)+toJson("colorMin",this.colorMin),t=endLineJson(t),t+="}"}}class ManageLang extends Phaser.Scene{constructor(t,e){super(t),this.name=t,this.father=e,this.otherScenes=[]}addOtherScenes(t){this.otherScenes.push(t)}create(){this.createFlags()}createFlags(){this.diffXFlag=0,this.createFlag("fr"),this.createFlag("en")}createFlag(t){let e=this.add.image(WIDTH_WINDOW-10-this.diffXFlag,10,t).setOrigin(1,0).setInteractive();e.displayHeight=40,e.scaleX=e.scaleY,this.diffXFlag=this.diffXFlag+e.displayWidth+10,e.on("pointerdown",()=>this.setLang(t))}setLang(t){t!==LANG&&(LANG=t,this.father.scene.add("LoadFile",new LoadFile(this.father,this.name)),this.father.scene.start("LoadFile"),this.otherScenes.forEach(t=>this.father.scene.stop(t)))}} \ No newline at end of file diff --git a/Code/src/js/level2/AddCondition.js b/Code/src/js/level2/AddCondition.js index 9af1d5f..9737c04 100644 --- a/Code/src/js/level2/AddCondition.js +++ b/Code/src/js/level2/AddCondition.js @@ -13,23 +13,41 @@ class AddCondition extends AddNode { super.addButton(WIDTH_WINDOW / 3, HEIGHT_WINDOW / (16 / 5), 'enemyBot', c1, false); super.addButton(WIDTH_WINDOW / 1.5, HEIGHT_WINDOW / (16 / 5), 'myself', c1, true); let c2 = super.newCategory('shield', true, true); - super.addButton(WIDTH_WINDOW / 3, HEIGHT_WINDOW / (16 / 9), 'shield0', c2, 0); - super.addButton(WIDTH_WINDOW / 1.5, HEIGHT_WINDOW / (16 / 9), 'shield33', c2, 1 / 3); - super.addButton(WIDTH_WINDOW / 3, HEIGHT_WINDOW / (16 / 12), 'shield66', c2, 2 / 3); - super.addButton(WIDTH_WINDOW / 1.5, HEIGHT_WINDOW / (16 / 12), 'shield100', c2, 1); + super.addButton(WIDTH_WINDOW / 8, HEIGHT_WINDOW / (16 / 9), 'shortRange', c2, [1 / 3, 'range']); + super.addButton(WIDTH_WINDOW / 4 * 1.5, HEIGHT_WINDOW / (16 / 9), 'mediumRange', c2, [2 / 3, 'range']); + super.addButton(WIDTH_WINDOW / 4, HEIGHT_WINDOW / (16 / 12), 'longRange', c2, [1, 'range']); + let line = this.add.graphics(); + line.lineStyle(10, 0xffffff, 1); + line.lineBetween(WIDTH_WINDOW / 2, HEIGHT_WINDOW / (16 / 8), WIDTH_WINDOW / 2, HEIGHT_WINDOW / (16 / 13)); + super.addButton(WIDTH_WINDOW / 8 * 5, HEIGHT_WINDOW / (16 / 9), 'shield0', c2, [0, 'shield']); + super.addButton(WIDTH_WINDOW / 8 * 7, HEIGHT_WINDOW / (16 / 9), 'shield33', c2, [1 / 3, 'shield']); + super.addButton(WIDTH_WINDOW / 8 * 5, HEIGHT_WINDOW / (16 / 12), 'shield66', c2, [2 / 3, 'shield']); + super.addButton(WIDTH_WINDOW / 8 * 7, HEIGHT_WINDOW / (16 / 12), 'shield100', c2, [1, 'shield']); } addNode() { if (super.verifyCategory()) { - this.selected.addRect(new RectangleNode(this.selected.getX(), this.selected.getY() + 200, this.gameR, 'condition', [this.lCategory[0].getValue(), true, false, this.lCategory[1].getValue(), 0])); + if (this.lCategory[1].getValue()[1] === 'range') { + this.selected.addRect(new RectangleNode(this.selected.getX(), this.selected.getY() + 200, this.gameR, 'condition', [this.lCategory[0].getValue(), false, true, 0, this.lCategory[1].getValue()[0]])); + } else { + this.selected.addRect(new RectangleNode(this.selected.getX(), this.selected.getY() + 200, this.gameR, 'condition', [this.lCategory[0].getValue(), true, false, this.lCategory[1].getValue()[0], 0])); + } super.cancel(); } } modifyNode() { if (super.verifyCategory()) { + this.selected.node.shieldFilter = false; + this.selected.node.rangeFilter = false; + if (this.lCategory[1].getValue()[1] === 'range') { + this.selected.node.rangeFilter = true; + this.selected.node.range = this.lCategory[1].getValue()[0]; + } else { + this.selected.node.shieldFilter = true; + this.selected.node.shield = this.lCategory[1].getValue()[0]; + } this.selected.node.myself = this.lCategory[0].getValue(); - this.selected.node.shield = this.lCategory[1].getValue(); this.selected.rect.setFrame(this.selected.node.getFrame()); super.cancel(); } diff --git a/Code/src/js/level2/Attack.js b/Code/src/js/level2/Attack.js index bd04498..61fc937 100644 --- a/Code/src/js/level2/Attack.js +++ b/Code/src/js/level2/Attack.js @@ -25,4 +25,8 @@ class Attack { getFrame() { return this.percentRange * 3 - 1; } + + getOptionJson() { + return this.percentRange; + } } \ No newline at end of file diff --git a/Code/src/js/level2/Condition.js b/Code/src/js/level2/Condition.js index 6ae99e7..31cec09 100644 --- a/Code/src/js/level2/Condition.js +++ b/Code/src/js/level2/Condition.js @@ -26,12 +26,7 @@ class Condition { doCondition(robot) { if (this.shieldFilter) { - if (this.shieldCondition(robot)) { - if (this.rangeFilter) { - return this.rangeCondition(robot); - } - return true; - } + return this.shieldCondition(robot); } else if (this.rangeFilter) { return this.rangeCondition(robot); } @@ -39,11 +34,13 @@ class Condition { } rangeCondition(robot) { - if (this.myself) { - return true; + if (robot.haveTarget()) { + if (this.myself) { + return robot.calcDistance(robot.target) <= robot.range * RANGE * this.range; + } else { + return robot.target.calcDistance(robot) <= robot.target.range * RANGE * this.range; + } } - if (robot.haveTarget()) - return robot.calcDistance(robot.target) <= this.range; return false; } @@ -82,13 +79,18 @@ class Condition { } else { line = 1; } - let shield = 0; + let image = 0; if (this.shieldFilter) { //shield - shield = Math.floor(this.shield * 3); + image = Math.floor(this.shield * 3); + } else { + if (this.rangeFilter) { //range + image = 4 + Math.floor(this.range * 3 - 1); + } } - if (this.rangeFilter) { //range + return line * 7 + image; + } - } - return line * 4 + shield; + getOptionJson() { + return this.myself + ',' + this.shieldFilter + ',' + this.rangeFilter + ',' + this.shield + ',' + this.range; } } \ No newline at end of file diff --git a/Code/src/js/level2/Game.js b/Code/src/js/level2/Game.js index 1c1f023..ae9ccb1 100644 --- a/Code/src/js/level2/Game.js +++ b/Code/src/js/level2/Game.js @@ -69,6 +69,12 @@ class Game extends ManageLang { this.input.keyboard.on('keydown-DELETE', () => { this.clickBin(); }); + this.input.keyboard.on('keydown-E', () => { + this.clickPencil(); + }); + this.input.keyboard.on('keydown-ENTER', () => { + this.clickPlus(); + }); } update(time, delta) { @@ -269,24 +275,29 @@ class Game extends ManageLang { } clickPencil() { - console.log("PENCIL"); - this.changeFrame(this.pencil, 0); - switch (this.selected.type) { - case 'attack': - this.father.scene.add('AddNode', new AddAttack(this.father, this, this.selected, false, this.selected.node.percentRange)) - break; - case 'move': - this.father.scene.add('AddNode', new AddMove(this.father, this, this.selected, this.selected.node.toward, this.selected.node.enemyBot)) - break; - case 'condition': - this.father.scene.add('AddNode', new AddCondition(this.father, this, this.selected, this.selected.node.myself, this.selected.node.shield)) - break; - default: - return; + if (this.selected !== null) { + console.log("PENCIL"); + this.changeFrame(this.pencil, 0); + switch (this.selected.type) { + case 'attack': + this.father.scene.add('AddNode', new AddAttack(this.father, this, this.selected, false, this.selected.node.percentRange)); + break; + case 'move': + this.father.scene.add('AddNode', new AddMove(this.father, this, this.selected, this.selected.node.toward, this.selected.node.enemyBot)); + break; + case 'condition': + if (this.selected.node.shieldFilter) { + this.father.scene.add('AddNode', new AddCondition(this.father, this, this.selected, this.selected.node.myself, [this.selected.node.shield, 'shield'])); + } else { + this.father.scene.add('AddNode', new AddCondition(this.father, this, this.selected, this.selected.node.myself, [this.selected.node.range, 'range'])); + } + break; + default: + return; + } + this.scene.pause('Game'); + this.scene.launch('AddNode'); } - this.scene.pause('Game'); - this.scene.launch('AddNode'); - } clickBin() { @@ -300,15 +311,17 @@ class Game extends ManageLang { } clickPlus() { - console.log("PLUS"); + if (this.selected !== null && this.selected.canAddNode) { + console.log("PLUS"); - this.father.scene.add('PlusNode', new PlusNode(this.father, this, this.selected)); + this.father.scene.add('PlusNode', new PlusNode(this.father, this, this.selected)); - this.scene.launch('PlusNode'); + this.scene.launch('PlusNode'); - this.changeFrame(this.plus, 0); + this.changeFrame(this.plus, 0); - this.scene.pause('Game'); + this.scene.pause('Game'); + } } clickBack() { diff --git a/Code/src/js/level2/GamingBoard.js b/Code/src/js/level2/GamingBoard.js index b1723e1..98cf18e 100644 --- a/Code/src/js/level2/GamingBoard.js +++ b/Code/src/js/level2/GamingBoard.js @@ -47,7 +47,7 @@ class GamingBoard extends Phaser.Scene { if (this.listRobot.length <= 1 && !this.end) { this.end = true; - this.time.addEvent({delay: 1000, callback: this.finish, callbackScope: this}); + this.finish(); } } diff --git a/Code/src/js/level2/Move.js b/Code/src/js/level2/Move.js index cab09bc..ddce3da 100644 --- a/Code/src/js/level2/Move.js +++ b/Code/src/js/level2/Move.js @@ -51,4 +51,8 @@ class Move { frame += 1; return frame; } + + getOptionJson() { + return this.toward + ',' + this.enemyBot; + } } \ No newline at end of file diff --git a/Code/src/js/level2/RectangleNode.js b/Code/src/js/level2/RectangleNode.js index e58b933..fcaccfa 100644 --- a/Code/src/js/level2/RectangleNode.js +++ b/Code/src/js/level2/RectangleNode.js @@ -37,7 +37,6 @@ class RectangleNode { if (type.toString().toLowerCase() !== 'waria') { this.rect.setFrame(this.node.getFrame()); } - this.option = option; this.type = type; this.rect.on('pointerdown', () => this.click()); this.rect.setOrigin(0.5, 0); @@ -96,22 +95,6 @@ class RectangleNode { } } - getJson() { - let json = '{'; - json += toJson("x", this.rect.x) + toJson("y", this.rect.y) + toJson("type", this.type); - json += '"option":['; - this.option.forEach(option => json += option + ','); - json = endLineJson(json) + '],'; - if (this.canAddNode) { - json += '"lRect":['; - this.lRect.forEach(rect => json += rect.getJson() + ','); - json = endLineJson(json) + ']'; - } - json = endLineJson(json); - json += '}'; - return json; - } - setLine(x, y) { this.xOrigin = x; this.yOrigin = y; @@ -183,4 +166,20 @@ class RectangleNode { } return false; } + + getJson() { + let json = '{'; + json += toJson("x", this.rect.x) + toJson("y", this.rect.y) + toJson("type", this.type); + if(this.node !==undefined){ + json += '"option":[' + this.node.getOptionJson() + '],'; + } + if (this.canAddNode) { + json += '"lRect":['; + this.lRect.forEach(rect => json += rect.getJson() + ','); + json = endLineJson(json) + ']'; + } + json = endLineJson(json); + json += '}'; + return json; + } } \ No newline at end of file diff --git a/Code/src/js/level2/Robot.js b/Code/src/js/level2/Robot.js index bbd70d2..42e3c1a 100644 --- a/Code/src/js/level2/Robot.js +++ b/Code/src/js/level2/Robot.js @@ -306,6 +306,7 @@ class Robot { } read() { + this.verifyTarget(); for (let i = 0; i < this.lNode.length; i++) { if (this.lNode[i].do(this)) { break; diff --git a/Code/src/js/level3/AddNode.js b/Code/src/js/level3/AddNode.js index d460a99..37edae8 100644 --- a/Code/src/js/level3/AddNode.js +++ b/Code/src/js/level3/AddNode.js @@ -28,7 +28,7 @@ class AddNode extends Phaser.Scene { addButton(x, y, texture, category = new Category(), value) { let btn = this.createButton(x, y, texture); btn.on('pointerdown', () => this.click(btn, category, value)); - if (category !== this.lastCategory && this.option.length > 0 && this.option[0] === value) { + if (category !== this.lastCategory && this.option.length > 0 && (this.option[0] === value || (this.option[0].length > 0 && this.option[0][0] === value[0] && this.option[0][1] === value [1]))) { this.option.splice(0, 1); this.lastCategory = category; this.click(btn, category, value);