From e3b9e3165a7b204c795b0bed349f6378bb4866da Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Sun, 8 Apr 2007 15:57:10 +0000 Subject: [PATCH] Added fade effect --- jinput-dx8.dll | Bin 0 -> 13824 bytes jinput-raw.dll | Bin 0 -> 7168 bytes log.txt | 1 + raw/media/font/mirrored_font.xcf | Bin 0 -> 53678 bytes raw/media/font/org_font.bmp | Bin 0 -> 66616 bytes src/ei/engine/effects/BitmapText.java | 5 + src/ei/engine/effects/Fade.java | 99 +++++++++++++++++++ src/ei/engine/effects/Particles.java | 5 + src/ei/engine/effects/ProgressBar.java | 6 ++ src/ei/engine/math/Vector4f.java | 132 +++++++++++++++++++++++++ src/ei/engine/scene/Entity.java | 3 + src/ei/engine/scene/Node.java | 16 +++ src/ei/engine/scene/Sprite.java | 4 +- src/ei/engine/sound/Sound.java | 6 ++ src/ei/engine/test/FadeTest.java | 44 +++++++++ src/ei/engine/texture/Texture.java | 27 ++++- 16 files changed, 345 insertions(+), 3 deletions(-) create mode 100644 jinput-dx8.dll create mode 100644 jinput-raw.dll create mode 100644 raw/media/font/mirrored_font.xcf create mode 100644 raw/media/font/org_font.bmp create mode 100644 src/ei/engine/effects/Fade.java create mode 100644 src/ei/engine/math/Vector4f.java create mode 100644 src/ei/engine/test/FadeTest.java diff --git a/jinput-dx8.dll b/jinput-dx8.dll new file mode 100644 index 0000000000000000000000000000000000000000..038401b8ff061674ea14f57259983144b7e57d19 GIT binary patch literal 13824 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 literal 0 HcmV?d00001 diff --git a/jinput-raw.dll b/jinput-raw.dll new file mode 100644 index 0000000000000000000000000000000000000000..043783aa856a3a8da0969aa1f671a43c913c5aac GIT binary patch literal 7168 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 literal 0 HcmV?d00001 diff --git a/log.txt b/log.txt index e69de29..49a141e 100644 --- a/log.txt +++ b/log.txt @@ -0,0 +1 @@ +2007-04-08 17:55:07:843 # Loading texture: data/units/tank.png diff --git a/raw/media/font/mirrored_font.xcf b/raw/media/font/mirrored_font.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ac089a8b6a1051793fd543f668f2924a740bb2d6 GIT binary patch literal 53678 zcmeI53y>vOdEd{S+1;7d&T1P6w5u0tKu9Ygi58XwNC>v11|%WdLFO6*E(;L7YXu=; zNzKF9+;wbYu5n?f>~eB(QgL{s?2A)QoTuAyq2eKsNxJ+>LgA##!7k!*Qf=Z$J2Q74 zo!|dE-S_sL8ELmHtyYLTwP(9;_vzE;obUZOr;pwJp7(|yxa(+m^zM5S=Uk^QcJdtk z(3QVKS-j~NmOr7w`Ex0|DA!WXsn1pKdDOp{V{nXSue|#`?>LrRdF=kX-^C?0*jYUM zz=I#WCkgMq_rc`;2a>xUy!*a;AGqwS!$*(Zb>BVr-5(yd!kr&_ z^ymZ0gX0eB>Ft;NmFY({AN617tIjR_mUCzSwsQv$I(N~$bC+E1+!bGN?i$LC?{@B{ z|KZ%N*E{#d_dEB4|IfKQN6sDnuygl**17jDHZ9o{8{8aixP9OI!3Q4)k@@UV|d)O8qxy9cguQ&bhgdGyH!@ z`IN7uE~(6Yo$?LJUs3*s!jR{wKTjX$zl(An<%JZcYW`)E>lxBT&h7pe43+xM^@7t} zmX5kn8oMNMFL4|FgxMQasmn6A&yC{LrCoQf+sIN~FA_Hx==vaWML4;h#V$>`zE*@` z;m&KSC!vdDX7)swrd2x3)6gBVd*{04FwL^G7^G^1x1aAu!>%g>Ju<*MG&t!^`O zSGZ2P9TvP4RiOw}VTIWmB>ldg%h%H~)JaMMQJL%hYLfT!ZqC(F zFsyjlc};H?7*4F$?{z1lVpwF((agDStt!h%PY%<5&Q$E7Ln|(+VwVlBp{$szh~|qo$E%0O`Vv{|>s< zK~Ys@N{x+lz$~s=M;6?2T2w{a=h<`Jrbf3B2SDRDTF`id+vvvjVCW*Z78gw29=A3q z`+?iVy_21-)?zNKG10={4N#W<8OPc7KNDXjVP(&3yR{ZN7c!2yc$B9xD9Mn@KAl<@ zqz}2dYy@6riLQeYT<_8n$Z0LDCsnAf4GLi>mpIRd8bwrf$CuW^65Ly)pR|0HFw^F~ zQ*3tK)ovpQnV-$b9d1qHhulV#xL46;;%;D)i^n}b&+V?%ou=M?*NHa+dT0lxi91}Y zHbsbb*lX>bz4aRPn96_w9p>eQJHUYZ?lK0Ka8Ca&ceJrM?j-!{cwIQSBX!}>Fi7L^ z`zJj9MOSmv!6EJMv~v53Ki;wvx7T~?zs0xvlW~XX+v1NS=srRD=hOEVzrwvgpnQ$; zXOzFBe2cQ;1=L=o%wG8U-b0j-au{LtIp>yMiuD0#u4<7B^MXsO;_O^ofbt9R&w=qzM#M!!e^FN_ zgC5{U+)t{S+G^T33nVJ+c^>FA#3^!w`mt3dHF5MKcR`SgQ;8%n|u=}GV&EQI4M^zy4 z{XE7n1NxG85rLJaJcai$rIi7GSZKyUf_h^7{Bj%UOYW*m%ylTZ`^Uvnxj(eW`-OFR zAV^u=Rd9Gfb$}8BKw&97Q;f8!F{;3dE{~1UDg!jMFWDg3fign>0-OKtmid3!t#%P- zLzD4IQ8Avw0(=6Zn;`9i11WF5)OynK*q!@94!F9K&~eq**!|!n&yAZx3ql9_G^hr- zp)5TU##P&^BxObanPj1GP*@FN8;$6|jcyr*xxHy60J{oihF%rcVo~ZfUG%iWf)>I;Uk;WRd!!0o4bnDPmGNgmL69WQv(5 zBodd6_6fH#WVVYmK$%;iHkwPHQ%GlynFSfb7$pR>|1J+*m{mAnTF!Cn z88mT#o&tJC%2gU!aC=fJFQ7{3Hc;+@5}>xf4f5$WRA9HkNQTU>q(B^B2(L*?NJ(TP z8uynMMadaW)^{(k>k&Ozv)a5PL{mNBI>|v8U?{;Tp4i*MA@z>ltfQ@(HtCT;c{3+$nDgT>-op)dj zE{OpZ@JxUW9-L2kk#o=aYfSQ=#oWG3E%hXxPG{K-ETx)?Ijnb4YR_`>*~UoaAyrnYLEOzjQCQ9Z8Q`#q(1~LRCCy-iLXawl!|bIhnzZ=W9-%@P zR9eQsk*Q+Ul2ZC~T}_+<#Tov%GJGjA zW(4c6Hge&=DBV}e-GFXU3DHb_aT|3k%CI_kqt!b>kIKP70%W(_%&YloQ$p7dfY-^I z*zZnY7DZ{0AQX0i?Yt8XAs*;oCmy)q`91a$TqJN^dj&6^Q++XVYtriq>p9}4BSynC zqu)y9phNJ(c_=UEDuXeGzQWxiV;WxB$jilf2g|e*=mRn^B|GtZ>-{ zLtXUKrvDd^Y)D2aM#79Z#_|>@x#b4J%SlyuGy_MA^t!34APt|W3ifztqT+EIS*ubs z&9gLAiIk}qtW^cC@Jb_t;(SX5nir07m3uqZppO{U65KmhQRg)bsTtd=$RU7YC4OX- zl(rQNo??pCYnV`#d$q^EWL=%QlzHtf9^6JbUd(MUXs|lWOhZOtr1u!!g21p=gw&Q~ z{AwiSPI%F&Mj_|sIuOMNgE9Ak+g0e!K(VG%$@Euu@pQLIJv zXbzreOwV4uTm?8`hIPdR%<~nwNyRYHaufq9bk(@W-Ea0AOW@l zm0Psrr8PH&iRM;nRczBzyCQFgk5duTVkkW2v>_$CJb+lyqmv31LE2B2_6ulyy5=fk ztIVV_kK&@jAVAfoCJqA6!kQLG471F5<62T8TN;vS6OplSxSA|8IybJ;q95xQo=fVO zPk}B&@h!r!3ZXr{k^lwiS-v5>y+$@N25QcjBGdP{Rl1!q|2SIXZV7Y_VPV8LDlg1verBHaqR4J3$n&(-HSOK=DT4Bro(gxI%hWE2T`B%xp)JyhC0wlTEGaS z-R&^f15G>19#41;D3$smp5|@jaa9dQd>ZMk*88;HNxc+m*91TSl&4^=_;TS#F+IV) z+1@C+q2BM{)~cDqip-t9V@JFW#Ir29+;wZckPKDBbBLB%vRwN?fNWMTK#^GcqL6?vmG9&W0v%3h_{ zX8G&#ia_3nM9!0;iZ6QU;%TV5604$897J(YI0(6Znu95790tHuu$bbAP=Lw3rn73oz>%<{|Ubg7cb} zy$a@0WMK9y9ey?Z1^fQ~7WjM#v{sJ|N|*6N7SUWP!MNXT1_T=DmR@VV11vO!k>oYf zZ=1rp243zAZWJr>lQ0?fBL(JP{Ib2Nwq-6L_HgynVJox*zvk>I3-zs zjVhjQSzqyvon*bDuJzwVzv)lfvi_p45GW=Rddc&r?}g80rZ1peOu2%>Ai`HsV#@85 zH#zr$pK$Jl$n}eX%8UOS<$qEhqpd}?)ssAaGG*y!A^o8tKa%G~)b-I=<(fhmDYKfi#GWEO-&=u+KL8@}gs zC)6CDLj+b{&>=%ZS`xn1(1@+Y-c!nEI4Zl zxdv@kjHv}Jm$52!hH@n~V&9+1?%u$q>YEYRYDaGCY!J`KqR>XT>d6&ED+-f()yZ-B zsSlG&$d|O6<#nGme-b`cNp}bhYBcg`M1IU&g<0g}5i?rtS7pL=cp=upEAU`o4*<}) z*8F}1_7KC)))Qnp{96Z!yGHBdjvnET4xYDq{(gm_==3?z1U;p0;P;V&u$fkK-a&1e zltLpONn=HEYt~NVUIIvC!d$MztwQ6V><)N^1BYhb>Pt*u~ zLD~n_7gHa0=!?b_$^vglWT$swlA<@N)?q)+SGZBvxnW6?&;-vvA_){Dr;t57(1@?e zxpDzwJZ+Nvm~7*T78?+nd!$mW4CnK}OkHsUn`rbh$=;BF_oSYsVwiO~nQe4Eu+2C@ z7n;=T?Zpn|vaZ@p##nEs&QnCKckP`;n?Hp*R;cT*mqe8{=OrE{0x=G;quo##JB`6bG)Qa+`& zo|K4`c-{LEAv$c^{I3#xgnP|_&ABW(SYHX~8m7{PDKgE57;)*VW_j(q85AKB%iBwm zgL1Kg!^Y)h9I0K16b_5)IiqsJrghUJI}ce!kp*fTugH$9&9*BA<>qh25r)w zx2cADvDzc>BvB;ph&}5~NzeYXrV63~JJ?vbI6$9#9`gqDIkx+y02t`(`xRK958FGo zpZDhfd@82Y+bh9mxgT`qdheti50Fdv?{kb$0@|c6A>1{ip(MYb6aDX*GIoo13vXag zP#40CfFowvPIZ?R>xTCSs!DJm#cNOY(DtefTz&-Nz8IL~HDys1kl(dqMdAcljH*bb z(vb$$coCRMI*R_HSFB|PT7m3FUfjnSg2*XyQ>%+n7xly{CCE}$$~d5Z2x??IbSf+v z%kH8UQn$phAx$h~sJ&gVo2gLz@3{3Yqq?4iroxW$u87r3vMvv>g=ty_u~K?a@y+1g z%&J|L$3@;1nN&4-!8V!`BdFWi2tm`oD{Qr+L6_lE_1PP`v_z zQkRLh_vXK_Wp+QRATQcky4iJC%GarLX+Brz2YtiKu)`^o(_EdLGPyFaJJCgY)|4Pc zMMyv^GEyUyCueP1JtQP^oR<@{;Ev74d#O?7X4O0 zzBm8P=^=_IK0$%y9*( z{1fM{#E*OBUr_!Jp~F{zeV;g<4>HxXQhD4H0r@?wZfh^jWa^0joj>)s!0*rfD^ zN$^h$6`nV?WhSPeFxwMc!*Iv83_@gL5~_vidXp5GTJ!em>y}D5PP|DYQ)+A{!X>uW zlUV~}oS2Icwo;_VELJjOzgvN8)fVF#n)Ntf+i94r32txWFo4F0q-DIOxni~&mJ(_G zl+>mUL^(DmEe!)V-1QjI~NVnfp_1MqGP@=S>(El^nFXq7@xqRIfFCSRyl*2fMBOn#?=_;G%fq521b2A zq9Fs(9_qQDK%sr+rEY8PcRFo^V+#U1oyvL#YR$yAV9+|H+uhob$8S5H`Nun_uQnkm zmJPET2qr;P>d-|a=qT6Gf3!mB46$O+!B9By9{VfgH&3k3M_iQNj)e zjs>;>lRTMZp2zN%G3{vDys6Ya!%mfWpCTRbOX5`MR-bzD%RG)f0g%j&=i{1V@)2=0 zq|`p2)bs?Tc)SS7AH7{Ikl;qNLcSfn8PC7e)EX31r@mRahrBC55ZHR=>+}|PO;7%= zZ^FH>3QeJi%>{tIqRAAwkenYO`Yam@BTK)#ur^Z;YPwPCi^zw5a+fE&G9t~P#X(sw z+|}XoNovbD$HgGASB?W|Qe-_UJ}^G<^Wp#JVw1~KpS15XLy9VRFW30g54oAuaRv)> zh>~T=EYmfb)D=<;>Lix-eXvyTFdfF+`K@1G3-fOR-ZWpQtPo?F{Mb?pzT;C>#z7m1 zzqg2|rcE7BAp4~k@OQi}IzLhu4r8%8&yRLa^vn5u+U5VZc*joiAKz^AckK@H|61h# zjToLc-sx*KgShrjSXYJozZUs_E%N``M=8kv>yZD~A^)#?u5&N{oO7>a<;)G_Qs4O9 zlp82FQ{JGqo=Ay0m3yA}#mW#iFYz3UEDyzS4&kd*N{VQ5%)5N5&1T5m)f9c$tk5yz z5?Pblm}9UK5ir^zAV#*d>|O$XOya*q~S?)M)B;vULbe zR5~DibLTp8>M2hawWmyDpG3UKm z_<&MDu);Rw2yJGlw}fe6Yjd3Y0WV0Dw`rWr#EPVYiF|0 zuG2nm*J+0h{|+Nc$f1{2Is*0i$2u*qgVXRhQDPEQKh&t-XpXG}i5eydze}caAtu+)F>|yr z%iC!XlR6rYpSQP%(WSvz5T48>o zZ`e~Jal4LJ&~*#g6rkuTQs0TN=*TMIp^><#+R*d{1x`n5Ehi|qE&=ZFeJbz}T(K{g zWnGib8Gu-k7x*B@s9%;~Dns@!6(0{(i8)OQ=2tT&JEgu)#sV}4+%)HMzi^)}aGzB& z311U_CD4yUB2yh0UEtDizI;BO~A z1%0CVdv$%@=psyxdo^=-)0ZfJ=xa6iUj5_T`)SJ0Q+}E9k13y~{3hk!Q2rwk1%4l? zc$PAarY#z5pgj++N zO+t2Lj?0|~{vL8CPyz<3t1x#bInQkl@o;XI{DR0Kv2%G_iT_aRgL%C=xC$L;6fej8 zrqghf-V&=JY9Zfqj~I>I0Cu9dh(VDS23p%%Pc7Ws>?;#ps`@A{yVSrw>6hvPhDlg2=WRS=M3=gp(69MQGn@?45y$@@FX=yfCZIz&v z$TutA6tk2BvJt^$)v#MJGJHSGjdDTAf@4Iy6eVlGeOlS&Hc0mDRBNT;3&@>BD{w3i zhU?^32;Lmq~k-F>`-A|W~b;f8OyBp z$#`Dw4haNk8R5`ddf#MfJMg`Fy{vL=U^ZAL%&SuBn7e>yVd;Gqm%=2(%4{iAzqE)X z43w$pYVL(ZjKFx2K~gMF(6pPg)9Q)&Cn#PbA1xQW+e2`^IC2zj!4>38e;3i z&EhO8$?%cGO|z}FGc*pWfphc~GhXab$Y(wly;Xi6>RjP-<-}t%{Ke}r`B`)^0qDJ@ zW336e-tZP}UlDLzOA2G~3r9S&Zis7CA{da4KCkq9@K&w^rAJBGM<_)@i_yx%0+KU3 zTq8_lX;E^QStb>;Lq7*LrPcsQH!yP<--$xEh*}xBn?K@D8m=mid-EsR?%{=$tETVWjM;GW3Cbp_DSeO6cJ8%_bFYJ& zzW$re-SQ0z9^qU5hBD%L+Pd{D3YO@t=c%pUNhY$lABI4_1v(1OMmU}~7c7NEtd%?+ z;Ebum`q5H~iSYqLUfg|IngeR|o^ohmCDY;Ls?ZZL(qDXmh4tP~Y8*%DH>+g0s8UTO z@EDO7?}uAj01#AjC~BZG|8rX_yg{f$p(}JNQJrHEANSE~z@k7wEZn%>$)!+-{Eyr= zoL%jbfD0Mp`mhu`!f5IQYmxfUJp3$4#lX$$B;JBHq_?nI5TnNeM@^nF&rd{fSNjY2hc!1!Qxw^6U{*D2Rmmq#>5LS$ ziY%c{$!nNS;#rJK8fPslCraZ17;OC@&66{X*pl36u{H89&8m%< zQ2-0Ta(nYC07k~Cj@W@_gZE43z-O3aCPI|&m?`l)J8TvjlDw8i)Kt-wOT1D=NsVy3 zP;+YYn6vMK&na19%2Vliro~BSflV0Y8Z4%~SD5J~0dnjATA=ywIb7bjK}V^@(ou2Zp<3`9lnQY@86p~F zCh95p(64xeO2$%=dpHI>{jtEA6T1UL7v@On!o9^^u_hwv%CB!t)HQTc+fD#UOZktQ9O2`@BGzpaBF5lS=55R=XTy%wnww@vmd_Y_6u zAT!L$B8gwkj;&P>$RMTP35o;UL5l;XkmO`M?d=2IGl<%XwS#6zEy6lxdK;C+A7rvK?_(EY-R}j}SF1eh1 z+8_EJS&*__VSSLZt(#U_0HoMS$<^+11FA;V1})4RA^RN`Bx8>K7(7E0f2`3MeNdX7 zF-Y`Gv?j?j*aB&qtfKao!Lm%_UVr z$(DWYG2Wi#bdiOmyVW~w9$=Am%u>;rrOJynQWsAp7>{}?S09`R51?8?rv)QbN3Hhh z0U>j^7MbXMCWNbx5{+fO7&8gRv%r*vbeafGiWmq3DR(=jo3rgh>O&^rdxkY91w8Vto5Xf3c0)H{J zLCY-0zw{~|(Jl00&`%Q3gjocDSW{Ax&?`GgPk3lat=P>Yx+NaiDObUeAy=7q4<1$E z6pJ+Q7wNvL%FM#+4HN9`QkKXTphZA=q=3CC7qLi72yBhQn+>dU)d&-e8ssA(H`5SQ z)u@+aa1x|7`czi(8o$(~#{^;4W0rkYLxeh_N|J15^q5^Dl+%q^z7n^6s5@M@lN zS*U1{FFOY-GNc7`&(h`;aR%uKA8TC?*pp4%Pn8n8$2}&fSRRxhHbQI;%?od{QY(Fs zci4xlAR?RFxoQ>1ljQY|KX#YIHyJm8#QBC_l5T9w)IwUX4%Oli6909pdZ2e~mnv^;j4QhQ- z6&h>Mc~A}Q+*70x8Pi50YTfoWE(qTAoGf$&c$|7-f*9mu0Q{s9FVxZ|Hue#5yp{Uq_J zBhJ0~cc}lXluuDUOZnH7-=%zk@>R+otF4pH@@`{XFa~HuiUR7SS0hY$Pzvp`CY?&Xtc%9I_^G6)M_C`6dJhB&o|1fD3Z zY>*9R*AWGhqRU~-9)S#rtJV)0cMv_jl821<(K)P2(JdL6V6rDTFL&e-vZzc1snl#w zyovQT&}0TTf`}%vN9>;HMv)PmG@i!-ckQf!h^9J=*%U4e<%)}tEg9>$*qElY(P;0% zwJ!M;h^tGXGT<%erbO3nh%uLt$^n}nF*FTR%%!M=oUMzoav^Ijtiai!<4kZ4nK}E% zk4GiSSYu(rY~DQ@qC*lqBPAo|(MLlJhY(jofp*4|=nwEmKOa&$ERR7W^9zX-&Czxq zE6fNSOl%4cB8jFDGn^6-^N83c(_9wvVd!a|K(xl5oi2xwTo=Ue)NG@VpgO@GLmUD? zCGV3B%qEXau9~cM5P zgO_&EWDSG@Sqnlm3~<%!HDD$TKLK0{WErXiFbh$FfeI?Epn^dve1?>$&mIF(6Hw;m zn@7lNp{7omZ~zvS=m@n2f;q^jWPoDxqg0DHI*FEV%K2zeGXI3R89{MN-VLOXW9kAS zOj)9J&=^0>>ji{J!LrE)D%>8Hc(`<%seo)`XiH#uV6e#~LOa7mHMu<+PrJ-ueprsM zUj;PM?DmDvM&k9f1AtQVWZn=llp7SJBvlM!o(Iq>7GJkz;$b-fG{(pokCv>$5y&jI zPOd=%y2ZfFT}&9G*3s}80MtyLSn%3ck&dHayi@RnGCFY z(ArrZGY$JG!Nsih0EdRjFSWuijpZsH7LKie!Wregj z!;_G^J)Y(7cwKaUq%IuB5^bB|{xa@@U1!E{zfdpte{cCG{y6R_hWlHPqj!FTg6^%q z=H6R(JNMT8l;=@s#y?IF?qnW`txF^^S+b2x+G`^lTVXCI zv6)$g+!>w1=FN;KXc@IZ5>!jVZ5tgfL9{Zy)sXJP`(;*%KUUjJftWzlFHHrK$2v37~q(RZ^i7&ikqAEQ}Vl3puRK&c4ab@Cfw zLNmK;duK=nYW0?0JDGp?HOzWj2f_a=rZ5D>9mwcB>yxncSLHSp!s@P%=lOVmze>>3 za90{7x)^-A%aov^;H>I$jp&5=QOv)Ln+a^;D)9{;F`i2;bZqu762Zj5DyZC!U0%IakEYH)#_Jqvugrc72ts7B%+V++#DC96#?Qs$}oEXX(7Aq^o|6{D$c2W}y7Aue-M-C(ab{ZP9E-Lo_Xtv=M+^Km5hARl( zpfW6h>C`{n*8u|HMf{K?Gfht;8P6~JGOh&N-~3CMS#uhMiGcy_5*^Sy>!z=d14WPF zOAvbzhcP!C`n^*u9AMD4LP90$y{0(J$(Zv=?!(`Y*M);SQWp-50HG&a{MV$Eo;fji zkzVfq-u`KS9QSn2xwk*W=J!V__fOw@2SK5Ce$ctQ$WuwK;yz;h=-Cvatw*0vxrCzY zEDAdMYRc;<-%I%c$`7lp-u@qhKEO~+AJ$lV>4i}#ehs|9H}Dn!E8bxqgQ6(8>bLFo zvJ8|nmJK`B4cf`FTzrq^F;c(9gtiMdzedcqq9uq|<_TLINy%++b|T-vNkeV@PrOXa z&o|JX^{$Din{Z{XoRT}0WMSOZR=4WOl(ZAe7MED%WPrYjvQIa0G+VPIrqn`DyqI&b z2)H6V!vriwpS)v2USfPar}PMIcZ*nivG3oevMOLR;CSxt0<~)mZ$FeJP65M^sd{}a z1kI{N@S^8)6WdU>;5z%~tAPYmrT>_-n4R_;_cu%RBn>qPKrxhGT%Ig>$#Gp{6~Xwh z{_p|NFU$^1R753n!RizK7ypplh53-`V{p^PbER^6Y7nrVvfbgUUm8wYX1jCKm`{(@ox{uVZ2Qe{xh7y>yFFnI-N zzzPt>tWKh(C6Pb9(65w2QVpmH>Z2(RN(%yFC3&vTcE!95*KlL?J_-fW4z9kw5MNP1 zvwF8$T1+Hw1XB!igtz1_$;vi=y7k^Nv{KCuO_8wzWNi0bx!+;PTtShG9a=_%wCrqx zeV*Jc88XIrE&9%fnb3N$6um@;-v_@NC_@oZC@%dnv)yf zCj(Lvn?9(3p$4;Hc9gzUu_KeIkHm2Z!P|rqehN`REvt#{(W=jH*bJnRNA+gXmPnH* zFLf=H;&cU@Qp;A9*No2LReJekTqltsy(f7e=6bv?98OIJU89=taBvXqhq73oOBn2} z&p9waUq|QrTIaybp4D~Cqw)Cx&eaw)_P7~3FVKDeckHk~wq?+?+uijDQ}>BKjm$dyD0CbJV5yn<)4Jmu*u;5cC#yV%sKXQY7JV>DS zYg$wgF;}zMi7g_@X8N_*k5+2ph=P($%GIou^OiBvm~@hB$}MQI)UgEucWdlAx*%T~ z3-KC`%9V))f^ZpIclEX%q#_#A^gMN9gPdtEL}ATUP0<_MA^7hmW}g&Y z@*xUw>E$tNg^xFO2+HTg{)1b{$U#)a>^6ljtEopP8< zM5s|5kCOBWSN9NGkH~hD6Q$7SLEsJASsh>x`9zAmrxO57ol0va#R9&DpBuJdCZt3) zs2w}GCw9W#Z9CNS832DoG$58s0v}F2KW7^w3 z)Xfhnn-zJL}5F~L%{u%1(>s6(&7bq-6ElNXuByTf4?X}bpc zUdu(r`Zfh7i~4Z}3~|YWm_p=Egm+gy6iepzCv8YIP5?+bLorfM?AS8;Yd}HM5CV)> zS!;HJ$qrZ$-25*TD){b^T=31A4{LKDc$g-Yq4w&&#Wa)?=@nHk_`NG#+STN2JnKw# z0{~1@;;;R2h6sl0_!qFQtSDNK=f|_n|zz z?;lZqjq>Z1e@Xcdl!qu^q5J{mYm`5u{H5Bu1qERMr({=gRv^iSV%=n*kEOuiA~Eth zYX_&PDfzNoSJNWaMrGp87_B}}hh6J1RG?-ylO$3Vq|z9=vNc-iILbg!4k0P`2wLO% z%9*!KK38?8Flh=Z`_vp|jbJUv(+dZse!&JuY#k%}3#Tszv9ucPUQZebUZ6;p1<^3Y z=TWIqqdOJs*L!xnBY2XbW0oPRyj(`Mx-uJNiTp4oo_zR>Ax<1QwwfTpBPwgbEawr% z3hEV)$i<2CNWl`g=2Vu!W8@R!m7!llYCa0@A^wMeW#IA(vqFLasuPn;okz8AKx$6n z0LxPWA8cbrDc2Hd9ykREq_v&L_}3d*WQs#!`HeKw6&GW_8`xA^e?ajQwXsL1`^;V);W&e`o`y1*Y2Kmb~YQ#^R=LV~DiR_40s8}@;mei+iu8G+D%Wdr4#oEjhnu%ujt7J z17l=@Z?K6h(kW+M<~U7ZH;IIhrltCH*+*}y#cpbjTtRX_)dU)XD;l!-R_TX#fH3im z<=!as@~cYR7`}@Xy^|HJ6zRhTc*dLX5<0*K82aEfZ?y9hqDcHI7?psbvF3r6G<);G ziXP~sM63_aC@~USn%$D+Cm0*|tQ^+^O7DRsNLtff(ICl@80(Q33H7~=k0)HYjf&aw zS`7HT3dX!7sZS(lXx$v^N$ypG^o`YjU7Z(4V#3t2AQF}V zfj7e~F>63<0w@YeQX955z_+e2WtNDQOUWlk-Dl5%9)w@?E_{NxmLhlvL)kRqG&)s~ z*!K3)hL=i5WiP9NWjBJ)2}2h*g@Y4!kTK@PwyDM35vwv_5VtKATtoj6F+lBXkIu*T zc=2PvL*M=p%WIrQI17{pLT%9uz8?D=q9s^q$Z&TlB9@|sKPHgb8 zg$c^v3Fi@jP!-Y5m9!$zEyn|Sv2h-WltJ_WtA;B0sqk3JD}jGd>G^~d&~$>eU~boDZK(`ck}mt7EbD~tyjGN5$FE!S16yH zzW0IWIrrgR&i(Xl&ix#Yl8@i&+%I3?+$Si%_D<(M^SjP{_IsTBS5Vu(!&#BN#kq%Y zP(1uv=l;{(YAb=IJsUr4+Ia&gj;%QRh97DJYYoYvk%FhN@YDGXzYazlT)8miX7)X) zZ>#S~v0hf+{xT0qfGo7{{>?tqflmTE%=TuYpZbrOcFv!D1g~aRKBlPcSn@W`2) zeH2Kx5mukiqLooE3ix*VD3JTKNs-&kVTh-IJb~G#>6Hg_il3(Mx!)p$CCgh$6{FcV zlu6}*A^9(CJo#@ZyPt=qECSB|voC9!PwdQoS+jFs_SG7aow}J^}N1$ewddRd?P~N^}CEUsQOU(W<($hR?u^wdlrB69G8^l3+eA&^0TkX+IkO+ zW+D%MDJAD*n^d^5pRr$+bze2L=R5N|dlwu3cpWC}?2~WA3UK%kI8vI(_>*sQ76T=# zR@p;R^=2RXiO6{%+@~<{Q}Ur7_c1s7WQ78@3e`T-KUsl(!Oqqs=*>15e@1RF?$}i( zV9!8SP|rS236EM~=cn+g`8Xvzys|h$+q?IqG@$ySW<$2KZ;?HzZ;^G_;C1%Rn`Y;$ z@#k;Oz&CH+N=^vt5eRq9zDQug*esb^FgNEuP>8da>+N%dH(6t3L}{`5)DM^tb=iVL z4~$Qhi^COdKW|*B`2s`hGX$+u<;g4aOgdP+%_p%p1sr~l)*tf!WkAT7;(T%;rkG5f5dNJF`CKAlWU`EZWcNOE;e-Uxy`Cld0jKA|JfbB&vt4cRcCZ|d zHIlaf&$r#KwwKf#`4Qx5MPy?%`%ss*w0M#q>gs$LbDdR&EQ6bUHb<)+Z7Y<&-Dh)< z0x+7{=Nwo8hB5UF{hUMRE81w1&8KF2VJja>d#?a2zeXHu_nEdAw)>)I``?it5$wDN zDQ8Qh+3kd7(Z%fBTjclPrDtV2d((Dq_v`y-Ut(dqg|0g@Ut;NexduWPg@3j={b}2r zo*fd&7wL7LsoxUq{Dk(FWQj%bo$>iQDSNXo4voX_&*(1>b$*{bxM$OM9B!^{;fEEg zoqaPvJco=6+YXA=40Es1CMdQ6(`=7v_WdDY`YGOHT4HFng{plZ;~Bq&>WAHI2fJ_E z9qinfYPE0n>654Z(xzXT>*(v?!Qt*4gJD q>_ZUk%v{*BeM$Lg|NH|fYO}qtpRT>IZ!u=c9?ZwcL?s1?_b^N?yAb{ zWcT*H$KA2{y|&~UGdclJaB7V+)FwvR#g+cs3h>pULdyac_BK|L*gAO`~ z{_p?(kB)GJBhbMIA52F);t}acM>-N6`N&76qa5WZbkw6Bm5z3_qtVfiesnsZAD>Qef)mgQPk2H)(TPq(CqD6s z=_DsP37zz$C#92}>|}KElb@VUaf(yWDNlJyI@PI8MR}gnsZV`sI?ZWLL#I9MY3X#Q zI~|?=^rxpYoZ$>~#xtIg&UB_T(V5SDW;)AR&O&EB>sje+XFD66{p@F_bDZNGbk1|0 zlZv9CbDis4bnbJXo6d8d^U!(EdtN%<`OZh@KmYmZ0vEUdUGRbzqzhf>LUiE^Uzjd( zk&DnpFM3hB*u^eJ7r*$$=@OT?1YPoym!wNw>QZ#+OJABUbD7IfS(bF!%U+f)ce%^a zx)NRa%2%eVT;(cs)vI2Wu6DJn(bcbhb-Kniu0hwl<~8YB z*SZ#6``Xv0>s;qLR8s{}9bp7jJpKfr28_*4Jctg6;jc!CYzVVIeCO5eW z-Snn6rJLRCW_0tL-<)o7i(AkwZ+T0))vaztx4!kQX*QeDZEkZLy6tUmOSik-?dbNm zzdhaI4tJnC-tmrfr#sz=?tJGv(_QXz7rN_R?@D*O+ui8ycfUK`;~w{*d*1V&bgz5e zi|V?jd*A!sbf5d&hwgjd`_ldHcR#xS{qIi?c)$bbfe(BjJ?KFXq6a_t!Ss-aJcJ(l z(1+5)9`-PL_`@Ggk9fo*=#h_nBt7a;kD^CE`qA{5$2^7}``E|Qd_JegJ??Sz_{Tq< zp74Yx&=a5dM0(PbouJ46|bOIzVemys#m>=Uj6D<(`#Py8d@%w^xD_HmR|R|*U{@=|9X1E z8{R-~eB&GGO>cS=z4^^=rnkK1E%es6zLnngwztvS-~M)b$2;CZ?|kPw>0R%77rp!4 z@21siMeljfd+5FIeJ{Q5eea|9zyJO8fe(CuKKQ{8(uY3uA^Px#KTIF_$Vcd-AN?qO z>|-CJkAM8*^odV=fQ}!?U;EnE=<8qqI(_3C-=J@P^PBXoZ+(lt{q1kl zcfRu-`tEnXOKscI_rCW%`u_L7Pe1s<59o(K{2~45M?az;|MQ}#_U;p~o^qb%OhPtk!-~RTu^t<2vj(-39-_sxd@CW+i zAOA>y`qQ82&wu_i{pBxzp}+q1uk^RS{f++q_rKFW{_zj`=Rf~R|N7Uz=->bTH~r^7 z|DnF`^IHKhL+5bc;0E7UAoIXZ5m|4KQ>- z-w$Ytwr}dP>AR&5X!<^{T_1&Vie=xg1d1s*U-j*(@5@jh3)8Z1LLC2Qi@smR)I@dL zcZ*OsRn4+P<*Jw?1Ma?WLxsx40`ZGH#uvz&EsF>fHLU=sUUk?p7NLH1KL>(-UN3#3 zS=Z!czd$byMP?l$SN$U3n1ZS9m!N17DY7tO07PuS3fy&*`l#sJdfvqr%KIMmZA6Z& zLxM%1pIT1eb`h>Xz_PDHb@4k3r1-Gfb$v)NL&;eu>f<^e*}DNn>8i%b{4)iE{)~!% z9(gQGP2Y-Wa-=P~JmN>o6{0u{mqO9t2^f-7-*pAXP|Qyl(f!bwK8+%eaWCp_IUBl{ z&{zHmZP2!5vs$dcmAI$yt=9yUQ!wy@fK^D&bM=cz9umhoD(sVuYr>vTb-WwyU8)nu3W- zp9gHnW#AdZOLW@s_{ydX4o)B!SNBa9%g1cR6B_`@d2pr-dDkubdBD!Uax?-&-(X6t za*iS@n;O%*t<#iiSF=7(Yjn|dbF4|Iw11}Hx?NJW>hqA^z_S&j;#oeVSh}XFV}rY) zgBlF^QQQJ+xS$BUop=_=ULi@$U!yf#8;3*~4}F|Z2%LBLGYn&*e1Z8gU-lS8!-M9; z@SI12IYk>GpJM~O>N|8;8sG-T*h2XQsx%bnduPR!a*wNC9%8XS%&{jmi?||Ejigzu zEv7TjVNitp#8GA3KmcI17aK^4)e%qX(3o*}ne|P-s#kFcWlVb&2b@jLaIVVZ3KX&e zRBXyU^+kL|Ud6?MOg6xsswj?;(r7=7LH_)P6%)1$T8wyr~k+;Bkit5GEL@a)Hv z5Y}y3r}>JlVL^Epn}>;25O(lNr6<2<#4@m5s|@IowBz&0Xi8On%s9NDiDdo)974ND z8?H?bn0XfN#qgA>ze4Dizh$R5RvwG1uwElm(Y2v*Jqm0=viFKE?FO6x`DJ!m0$(G# z1F!@=&VBkfZ<>6cBHR_S8k=|RRzZ&jumpF7dyC9q7&cAGEpqJzA0Aqu1c!Ve>1f&m zTHG{gWi1x3>EydjQOpi#anseU)Lt;1ewQf>`?*VOyUw0jcFxG_*p0EB#?=w>cDF=O z*wCh67WWq-JtTNAC}Mv!_{qQqB+u?AZes!l=h;HSgcid$6kZj~@^%9OJCMWjsglGV!>kiR}swo&Ne5c2_ zfgvzMy(?QtG?sf!>NN&)UVJx7@RXG~rwq@sRSM`3Jp4L*?vIIxV6M<%@$JNZmGQ`} zVp@KIRaiW%EsCQX;TFb@3#*8bH>;JE=bNA%b7<>!HWL+CBmcuZD4x8<4kTdvI&Z64 zQdp1m2}RPyan`JvFNFFlU#^OU(@6%rr6Ly_eBAwA3JZs9@i#|hl|T*yf|vjpa&kFv z^1Dh86Y@e7uVG=Ef#2cS<#8~O-e*>!1mUXz<(qmT&-u~xg}BmKdw*;t)*WgM2n zM*4$g71_DNGF^wb?nOH>q7E_U|3bzr@pk`((hmhi?rJhS{#x%I#3Geizz-ae+wlj0 z{Y!3VaIlf}tCQ+j25PRaDFU|oreuDl5j0X^@Ln_GUkg!GdoxCk($b$L(Rodav9Wa}l6pU1bPLJPT7Q7DTV*62PMm<6@ByP3 zy&RtE1|Vy5xU(dEk<94c#|Cx;D-l}(JihRx{`dJ4TBAQeb=dxys)+9F`Yg6LGGY#h z{n+>eFu$9$MO@56AalhAUlj*%0%;Ay^z0#SrSe0n`0KnQggu{Gb>$-?I-4_f&8#ei z2Fl`QScvFOzFejm(ASt^#AfQ@LF2$68z6717XAQOoplA;G+BM7D&cYgSa8IA%jWO^ z66;eeXn28a-$Epc4a5pKtY39R!O&`zYy@atR5%JWvz8ThX$l(s0Tgb_90Q;k?EA3p zVt;{4PSnUjIA9?^_w^b11FV1^252#j>wZW(P>>sVCdnVtZ2bf3Apa!~D>ja{ShHe- zU;ts2N;8=C0d3m_j9&j0*H27$W$)+cnOorfk_Q;w#ag&w2}DsXgOx`J5U7Pe056{@ zniC0U0G~$+qwC^*s(t!bbVp^Hf1j4K78%UnK>J+#m0w?${rND4d0G zci@ORPDX~H&xv!F;luw^#>sg2r*$2L|MMc?x<=Ux+iQVCVGB5Gf#5c#st9jvDVkE<$y53-)$9f|Ds)-^zD}0vB z;>9hSwNKK$6&Zy@kMs*^&v(iyksPuVxMlw53S{)XOB3)Hd_F+9f5v(ZFC%+C_*tVL zm`C);191%G&8LFGGWap+RC>s*yY z3-DY&8IAOHYCapwW5xgD7(5PrLNItDm@^PQssGCY3&vy&TB{$3v4i7uQW2~%*r!Nj z^Y;JbzK;M*CY8iM$RwlTDlVJD#4XZLenb%54@3oqgz?AP^VjJI>NH=S=0NBR z#s+(#3_u|;zvB;N!0<4BokT-Orvl*opQKGjqGGwL{l5W!&nKBu5`SDFOZtu>S^BZ| zd_D~z^#icqLuU|IKv*YvPs;-WmgNzj1~^OfVgV=}I-y@+2c$;mFs(tK-6s-y9t=xV zF_y;yj|AGT>bqIgk)SF#4Uqf~V4Q?Mf~;St`0#7(`Ov;#$rL*_6n4ElQQ`Fkyejy| z_zMgUGlR5`B-kKYOtRQO4!_vptU(|8ho~Lk5^x#{0STYh2LSV`gM(G5534tzp-%Yy z`2mrgtCTb1^$!{_Ump`gi`7O28xG5$4`XWcvIc)H)JZP246x~^3OB{A1I1~naWsZ+ zXv=Y=56M@njYbDpY*dFSJZtb{4OL0d!zsX~2mKoh*O=BpQaigY{=kQ&={l4>3OMj} z+ADFd1^yRWpvoySxBmHrD}!v6Z*waa6H@rlRyOfKiH{YtwJ$u zyAj(nftLk;mpX(UG(~GV0ZbeKm z5JS|uUzT@;Jm-~-Nni$c7C@5#{Yz*8N3>kFB@!`!LU61!SK2Um)CINwNV7H2IwtN^i!vl#-=hv|`dIaE)7 zqYr>9_i7<#TS61w+yVP44ncn&piNWC#fwFy=G82%;83N(0-P2Emt4x^ZmmlSB3xI1 z3a9iuz@3gU)(34R0)P)X3)ukH;B2P9ESqs+yr$6?3Q50EN3cdd%}{;*p4AnQ-i3!( z-r<0Kaw&pr>Wb1TEY_=EIhoW5Lh4 zP3A*<1$@w$@SqG24*bjZFyx_ZvEL$3x~wH2kiQsxcv_JK%aw4V^zm{A@d5h=!+5}g z9h{$G4!h;DWF@K(;O!iP8Gn5PF$_}Kr^e^!3>DH3`A6{_fJfAiGpFSUm%Ye1o(=(Z zATv#-5VH5X*8+Pju-5{6EwI-D|KlxCVgF7Z)GUsJXU2w`yLQRk<}3aE!O8?)1}Q>( z5I_ew3hW-1+zOoca6lklKg5R#uwy3yzjGyq{XOT?qv^DPL+99uVb6EM2y%2oFQRfC z^9LZpJ$UU4un>V+@uy3L`U1@L9P-VOoM2r*(cpkW5~m-i+vM-f_wxyph>M3kEr?h? zeR9}$u%w^uZ(!&`gTY{5=ivAASOX{j2Xu2*Cp1Za!02X>7=lAQtaZ>|Aj^QS1ek&S z3M>!91&$Yl;vkLUx&v`PAOsh1oZ!E}l<_mLTZtWZl8<259qSd*F}uZWn?wu`Cw`4# zVPE6(|EN!L_;Be{a;}4boZytJ02C+XX_r6M58xaJEFw$D(HImFcD$ju9}oudRl_F9 zKoT?a7?4~K_wfCIVE03Zq>^Gh=S-Ihn)?Ky5P&&2s(YM%01AXUa_|nnNC0F)fcMuW z2y1K9d#&obz?ltj**)h7WgHRaF% zJ|GF@oIFfFPGVqZiWTQYT)fI4to4++fu4|ibg4FspZhis-3JgSY(xfJpVrS3JXAjg z;3NVcfF9O6pqkRT7KTC#R2k;Co+S;9CRyhzpcnv38U!YJU7AUoN}|04$;FYrSR zGCU3z_zax0J^(^(Nbc?*)FQoxkWdByUD?P1;L8{2R_sAhg@8Hke-sEX-4KI89^&EO z;1pc3LRg%|dKu;ah>$(R#2FN?A6P}1)5A#yw=f1ri}fTd(0tsYhR~nx_bajdphjW5 z5w8{q7zT_($D3BD4;0A4yM#3jZJEKxZb%Q+LhtSm3{BcDrfE>GSkpG>&h6@b!4J^h`VTTSHw3yzV z4~d=U)`yaH0D(ZDf_6?2!0L-uWC(=p{qD8EUJLBCz+MX+np*(wuW@HQG}m*#)oq`j z2AF}F5KXG(?;sDx1Q~c2VI2UOPMQni5f!*j(8Me6QNDaQB6E!d+lzD;z~(GL7BJQA zLl95{>l4~IOV{6rp!hpWlJyXVEB<3FUb4QKgF}puaj1vz*e3BBsaEX%D@n*%V2|7i zEWfZOHHk#vuf5apP((5nx`5Ke&saP!Vs&876w)gPLtIbTIRNehf;;07@l>!k>EysC z(X)gptb3eQFz0}(ZYBLs8Cfn;K!JlNvV)u-GHK$k7{3;pmr0p|w0v4wrsw?L2Fq{! z%pz~;z^oMN1cabH#DH+4Q4JA{Z`}gnDu0K~iw4Qu&w)mw%2vr8#OL8Fufl`N4KN-O zy)InfbF|3;28*m1ZoVxAJ~TM^eTlD5vVlXcU_P%S`xox8{KWZ)9QeFID|@_=#rxh) z;xLz>Ap|U<`h%mC=hba79I?@JiLRt zTHP+k-#Wr0r#J?Ps18pkbpa_0^hq3M#7SBX#mrS3L%NXdyKIEGjnUKLfP(0fMYjrH zQyI|l6@=+=8aIIt7o?!a1Ojuvm%Z-`SN2C~4_KY}CiGW1#Q8jxhPNEYgG2>*0!sSJ zS_tn*KEvEL3xw{$tP$cinm38ouGn0+eu=)2;y-ZZ2uKSkx3z>--PZ%TypPf(QDq^H z$J-#e|j_P#~UMBE%IAv4dT-ywZ(NjLDDkWH?YF z)DsEMrZ+KMY%&v7`2%37y?K353mk4+SIaq64yp@TT_y)O)_dXKGjI%%UQ~zA+{FRs zhPzsz8NZyb(1^5^rDC7K?gJNgz20Zo_Ym#1z+MaNwZQ*W3p9xvK16hvL0Ro`shL$fdu@8a$scAM$<7rl@TXNL=kwID#*jxB@No$`4mMTw;OJBGF-kN3u>vRw zz0PydKsdsL6FMtB;RH^v0FeB&h;*;hGoY2?H(w{Nt~*Eb%Mr@*lI+2}#0jP79#3cs z%my__6*g3fzu=}G)gV~0mLfab3-O2+QCXbr?|F{~)kl0+S-fmw@tk3-pNOcp_kuGK8xz*5 zdGYO2;g9eAHN=XJ6>bI*E+DL%4EI%*X%mMxg1${1+ee%&K9^Rnm>m#<$Mm;!2MERP z=(pIsAEANe1O$P~A!OEPnQS0ufsQJvva955K)vR;F+#O>x}9ODb*40eP?xIdJ1@I= z{64A65u5>bM6^siF$2o9ydxKGtWW_wT=fVo8_bD-->R!Zc=}b?TyQ#0!r76-I3%KU&9H(i+ICZ|*H zI)&W3ca3bHAW-UeVALNRf&x9U)6?Z4tAibkn3K$puY=5ClMif)v)mfwJKEC!VbT5df@UT zj0@|bFo=&gCbx+NcE+bB@|SLKR6-)8g~;v9yWqA(el&n2A7#h7x8m>#OXVZRlp zp+j?}O#W?a*tc(rAHi8S7u`!h(1OX=>jDEeBrmqZ|KL>dYCLCKh3m5 zjZv=_meLl}d9 zCOwMa5ud0*$HIH56k72N`a5pJ$dt_C-ypt_KDFN2_$m6m?3d)nDf$_|I-tVcm8SuU z=nN}v9I|fi&v+3W9;C0ZLd3@x7(qCTci8{Z`hx{EBI8t3`<;z<_(dTG_S{eUB8vAu zS|%O5OP|I+m)|c1J!-78@)=cZ-Kcald0OQ+0f#$E0>z?gAxQt?f)X9DUmQ(tqG%Rg};W9nRFaN}Q&AX@+%1VnsQQ4x0|q%CLsPd)K;mkR}iJn}K|Sg!II zoiz(M0Ezv2l72Qvq~Y!Jr|BCJrx)f9Qi0B4O0FO&p?|~uj?$wH42tx)quHGQ$!C!U zF9%o1kZ*{`Y9tpVcfwRmP=5r>w6H{n1zswwa+oNVSOPaZ`iqR|GM5cmL{u@lfJ;Q; zb!5S;bbpWHb#~mPgMZ>-j$X8fh}lQ4%;O(=p0WpvCaVMPSTe{mYTvv+|yLKR<|hncM99eTl`b-4(WH7d8FgA(BC+H zS<+u6O1Ge&#bc=fDHpf`G_?oq6gCAq@mt`Zf_F+k5BN0vAs-mnRA(4WDbz7X>V$(H z|6CtAA12|r6md$(^2~e*{8KRJNws5WGt2`%4S#M64GT?~K$c2icacK4C>6L0b)M9b zv{M+31&5p@kB;!$@(esh?w{KXsLLImdyFtAmJsh062k{+;>2bh26(;_*hDKAdCxn9Q~F0 zijz#s|GD<}$h7zuiV43KAH2P!!xtyh2xcYWUwRO$^$VtaTt1l+K#@f9mLjfK4K*XR@GxDZ#?$m$nt`IS9DCnmQlXDgtR>IrDb zC*=RRZf+`6ZO4U7;hWGGU_|QiVahLZ!awoAz$2i;{VRlREpM0Fe`?)m&??0P+C7Z^xBZ>Q_W-`mrAD zNWJ1b)Wv#=^RcjaiBe4iEnyxE-T^L^`@T;~Z}kWGWVoyk^NzVNuQ*Gkb_rGf08U&H z2U?k4J>W<5YxQBO+4{F0{;J}F?z*ol3?Y%$(9esla-eLRT%;b^`!QT)hw^FiO1M*G z*n0h~Q~`;+IBY440SAH@OL*KJ7wqN{qC;C8QQ=<82$W-7V$y2qFbu% z%=iN!8%%mbZuhgZ{uiRQM3UaInZjHi=QG>a(ZwkqUw~+4>55bw{>U*1@IO2$uM08s z^Zf$Y0>bzME5`2kW$e-nrxB#N*ZKo6PN{zYXbPO3|BPeH2RB4Yb3cF4cBNKOYzR2w z7W3owP;7v4#`^s!k~8Xmug{zZg&XhPXuLdbi3@I@$~BTJV&o6t3y8(zW#7^-F(0CL zTb)CMWG9)X*T0=$+jZJaw)0&hUx(mOM*q4h?$@w6?qHGy$i)i0SuK?rGTq_k9ajWN zS`+~KvBc~>ht?M03(%GLG*MAb9ygnbw1U1qp3mxmStph-W54Ih$SY&4J>SyL+6$Q;^smaf zqDa#_rXLr~=n0Uh1Es53yILfDro}(C{#kpzlm6q^?zlVH0ly9U42%tE4`hED`~9H5 zPD2*jhJ{v$LcJi=Q=B30Eg_1^m-ZUNcihZxCz%82uN;=rCOB%K&p6S?zhz$ZLya68Yw zpL4K_s98_yXd!{Os^nGHRJ zgPZ7g$<-f&ZFK&g<0@PCB~OH2<#zd5hZ9@oM6<0=Py_$pthLe}CnQzKT>udmB@ z*-VW&e;)Ah@2=<{oxkVOa4ESgKo?=?ceFK;KsbA(uLA-J&ZiU3=S6fSOkdi^LDR3> z#$_APue)E`S+S})&Nz7UOE*t+xgBY{iZ*k$N?!_!yr$4%x>Xg3?> zEn&qS*ak&zhs6e%?$`9^j`9tk$YAbFtacu`pa}{MH9S!Td{ZG#;L-fI^f!=3(*%Gk z1ipXfE9IL6Uo+F4qb_$qn$Zlf^qcP2^b?aV%k!nCzo36E98kvex7bkfl%7Ahp&2s0 z{u%mtsqlwR918d*tuVx77F@6=u-o;57at*gb4o+M?S4Z))4rkm9kwia$dBpA@N-`+ z94d(~UWm>|pcpH$c4_>(+ijaT-!T+;KM*Dj+;6Dp!(I@*1$>cW^Kk)&e%t+qeh|N@ z`+aLBhorUV?=w-PzN~MOe%G@8)D>4AikT9lM_hTl>E! z{g(c+^=qI&C|@16ME~0J_mcj!cMn)L_P^gL(*zh8w`9QN#ZS`f&X%O{;>wWQF9J0E zqwcr#k9RLgzB~UfJ_WU$+OT}YWnoUV3p{12Bq#|>}T7?V8g zJ_eF*e9c|V^wY@6mfyAy{c^<8yLDZjUV)5$BO0I?uRt2zh41D4f7I7Ka9Sx z#GmNTH5DpSN9{p-EwI-DyKjN1E61lw*kOKs*kcO$HsUoxUeD7f)`tB_98zTg+{ttU zW;XcC`vN!`7V-FafjzNwdbh@6jBn868{H{AFZCjk&mY%+xZf&ugipFk1`w0pbJo)S z#oVgc5}bY`2|T>tQP|pP|SETlyiOK-duUoAdFm{^Ao2>7>X|0f$grnQH1|>0h5;WtyVjE#ZNDi@(PN zMuOB~7%#b?-|9C?DB$Z=n*XEo@mw__|Bqa!Tzt|W+4@*`ZGN3-ihdk$)cZkf3%uZa zz8KD8!1laZr1lu;Hx^9}2S0(roR5e86D|{ZOknQ|K>SRuNZtV~rT1{Eu*+XW`OT9q z`rj)QQhsoY$^gzu<@K&2E7#F|-dF7R2mr1`|46@q8&UKJ7tMKjmcEy9c|-~3z5tF7 z+yhsDVWkgna8v+}^K(;3{ej8vzG#!0&n3--!a`(q#k0RwF6@I&6(epawE7LswD;__ zz+tBa#AG<^RC*uQG%8c~4bH60cY%J7Lt_J!iQQ-vx#IvhcdGC2 zdVVzRDjrTWL3;0%Kcrz;aa>f|GhptK(mp57WF6UEpcD9N+_$dGYrLhU(mAVz5wx`f zRut@Fp;DN~RsrPZh8xX|;DZ2oQk`>jfMH@4!-AC3;9Y`Ok>^|CJ5a@{;DtYSFAw+v zJub9O#R0VRS{Ug~iy>2ZYNedv&|JBTxs$2!c&g8pIv=oNzI{9#IEEMhqv%JFU>8UC zn_;gP!aIm#Va6he<`aiswmt_K7}SgLF$~|t|7PPBa9D>w&eVi&ddVyFu)gt_9i9TNF{-+dy#+b=ya4;Viwr!Y@{k+9P*=$Hk{de{_aP#M8SfU> zE#S!)^jqrrv^n}LJlmlkE(;+!CU;pW0UTph(XXWe>Tp@CY%fN%kR5;zY7RtG zDrEmYLk9@;!mu8S_TI+&k2PJafU#okMNWhmBlaMt@RpxY$=A}a@h5d6Q0A@rK!Txv z*2YrPi*N{XZ71-#$>|Q!q~!bb&GknrkoRV_{IwuQ_8FX`a(N@sEJu2o0N#tL|1lnv zJPZy5OL}~Gg3c2H?t7`vuE38-^?S^>uU>fZnTZ1@xV}j*j|J3cqOcko@nj#ugyIim zh6acZ74gAs{=BE`w}gm$Bi+4vrb)OY(km zL4rAnNz{uJ_c&t2531BQUTi%kT>u619D>AeQ{VHTp{7US3c(TdDr%o`?UgX0a5;(R`Qc6P1zy zuumv{l7>;f6fijelzu4X^KS*1<+>?z8QynNL$Ivn{Kv?cfu&V4zs$Qv+R*wp{#2DH z4Z66dmj1RH8P9fpY^a2%8gC>0(AZU^Mzg!{G~&<8On#gVUte7E6c7#%G3oF!UK?~s zH%so*E{h%i7U2{;H2{nRr_tp#1bpdH4u2}q+OuYk+bv}l*xOWt$T;_&){Y@ciDOtF zo4M2%U<&M(hnW}vntqn|M1eUUH(oYL!h-@=(BI}bZ=gH7Y0US}lJmPG*eJx6b`c5k zs?7C@gc|McnHT_?ezdl!aGT2m6TW8G^91saxpLXB=3&ds7H(^VS7Chg`iNk4A2cT`+caPn-8_p~{fjW( yo0vlkZXN&%Ep~>xG;-WPVh}Edeu~I9(N2n6$8LnSUQd2>+9PfbB4g;{O3lY%bsc literal 0 HcmV?d00001 diff --git a/src/ei/engine/effects/BitmapText.java b/src/ei/engine/effects/BitmapText.java index 6c52c9c..4c81e51 100644 --- a/src/ei/engine/effects/BitmapText.java +++ b/src/ei/engine/effects/BitmapText.java @@ -112,4 +112,9 @@ public class BitmapText extends Entity{ // TODO Auto-generated method stub return null; } + + @Override + public Texture getTexture() { + return texture; + } } diff --git a/src/ei/engine/effects/Fade.java b/src/ei/engine/effects/Fade.java new file mode 100644 index 0000000..3d6ea92 --- /dev/null +++ b/src/ei/engine/effects/Fade.java @@ -0,0 +1,99 @@ +package ei.engine.effects; + +import java.awt.Rectangle; + +import org.lwjgl.opengl.GL11; + +import ei.engine.scene.Entity; +import ei.engine.texture.Texture; + +/** + * Fades out/in Things + * @author Ziver + * + */ +public class Fade extends Entity{ + // The entity to fade + private Entity entity; + + //Temp variables + private float life; + private boolean fadeOut; + private float fade; + + public Fade(String name) { + super(name); + life = 1.0f; + fadeOut = true; + fade = 0.01f; + } + + /** + * Draws out the fade and the entity + */ + public void render(){ + // store the current model matrix + GL11.glPushMatrix(); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + entity.getTexture().getColor().setA(life); + entity.render(); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + // restore the model view matrix to prevent contamination + GL11.glPopMatrix(); + } + + /** + * Updates the fade and the entity + */ + public void update(){ + if(fadeOut){ + if(life > 0)life -= fade; + else life = 0; + } + else{ + if(life < 1)life += fade; + else life = 1; + } + entity.update(); + System.out.println(life); + } + + public void setEntity(Entity e){ + entity = e; + } + + /** + * Set the time of the fade + * + * @param f The time of the fade + */ + public void setFade(float f){ + fade = f; + } + + /** + * Set if the object should fade out or in + * + * @param b True for fade out false for fade in + */ + public void fadeOut(boolean b){ + fadeOut = b; + if(fadeOut)life = 1.0f; + else life = 0.0f; + } + + /** + * Get the bounds of the entity + */ + public Rectangle getBound() { + return entity.getBound(); + } + + @Override + public Texture getTexture() { + return entity.getTexture(); + } + +} diff --git a/src/ei/engine/effects/Particles.java b/src/ei/engine/effects/Particles.java index 5c9ad72..3694626 100644 --- a/src/ei/engine/effects/Particles.java +++ b/src/ei/engine/effects/Particles.java @@ -272,6 +272,11 @@ public class Particles extends Entity{ (int)getLocation().getY(), (int)size, (int)size); } + + @Override + public Texture getTexture() { + return texture; + } } class Particle { // Particles Structure diff --git a/src/ei/engine/effects/ProgressBar.java b/src/ei/engine/effects/ProgressBar.java index 77da6ec..23286cf 100644 --- a/src/ei/engine/effects/ProgressBar.java +++ b/src/ei/engine/effects/ProgressBar.java @@ -7,6 +7,7 @@ import ei.engine.math.Vector2f; import ei.engine.math.Vector3f; import ei.engine.scene.Entity; import ei.engine.scene.Sprite; +import ei.engine.texture.Texture; /** * This class is a progress meter @@ -217,4 +218,9 @@ public class ProgressBar extends Entity{ return null; } } + + @Override + public Texture getTexture() { + return bar.getTexture(); + } } diff --git a/src/ei/engine/math/Vector4f.java b/src/ei/engine/math/Vector4f.java new file mode 100644 index 0000000..cd0b28d --- /dev/null +++ b/src/ei/engine/math/Vector4f.java @@ -0,0 +1,132 @@ +package ei.engine.math; + +/** + * This class holds 3 float values + * + * @author Ziver + */ + +public class Vector4f { + private float r; + private float g; + private float b; + private float a; + + /** + * Creates a vector whit the value zero + */ + public Vector4f(){ + this(0,0,0,0); + } + + /** + * Creates a Vector by the given values + * + * @param r The r value + * @param g The g value + * @param b The b value + * @param a The a value + */ + public Vector4f(float r, float g, float b, float a){ + this.r = r; + this.g = g; + this.b = b; + this.a = a; + } + + /** + * Get the R value + * + * @return the r value in the vector + */ + public float getR(){ + return r; + } + + /** + * Get the G value + * + * @return the g value in the vector + */ + public float getG(){ + return g; + } + + /** + * Get the B value + * + * @return the b value in the vector + */ + public float getB(){ + return b; + } + + /** + * Get the A value + * + * @return the a value in the vector + */ + public float getA(){ + return a; + } + + /** + * Set the A value + * + * param the a value in the vector + */ + public void setA(float a){ + this.a = a; + } + + /** + * Add to the vector + * + * @param i The amount to add + */ + public void add(float i){ + r += i; + g += i; + b += i; + } + + /** + * Add to the vector + * + * @param i The amount to add + */ + public void add(Vector4f i){ + r += i.getR(); + g += i.getG(); + b += i.getB(); + a += i.getA(); + } + + /** + * Add to the vector + * + * @param r The value to add to the r value + * @param g The value to add to the g value + * @param b The value to add to the b value + * @param a The value to add to the a value + */ + public void add(float r, float g, float b, float a){ + this.r += r; + this.g += g; + this.b += b; + this.a += a; + } + + /** + * Returns a copy of this vector + * + * @return A copy of this vector + */ + public Vector4f getCopy(){ + return new Vector4f(r,g,b,a); + } + + public String toString(){ + return "Vector4f["+r+","+g+","+b+","+a+"]"; + } +} diff --git a/src/ei/engine/scene/Entity.java b/src/ei/engine/scene/Entity.java index d49a7c4..cc8d355 100644 --- a/src/ei/engine/scene/Entity.java +++ b/src/ei/engine/scene/Entity.java @@ -9,6 +9,7 @@ import org.lwjgl.opengl.GL11; import ei.engine.math.Vector2f; import ei.engine.math.Vector3f; +import ei.engine.texture.Texture; /** * This class is the root class of all the objects that @@ -157,4 +158,6 @@ public abstract class Entity { public void update(){} public abstract Rectangle getBound(); + + public abstract Texture getTexture(); } diff --git a/src/ei/engine/scene/Node.java b/src/ei/engine/scene/Node.java index d65966e..e53fbe1 100644 --- a/src/ei/engine/scene/Node.java +++ b/src/ei/engine/scene/Node.java @@ -2,6 +2,8 @@ package ei.engine.scene; import java.util.ArrayList; +import org.lwjgl.opengl.GL11; + public class Node extends Sprite { /** the sprites of this node */ protected ArrayList entities; @@ -63,9 +65,23 @@ public class Node extends Sprite { * Draw all the Entities in the node */ public void render() { + // store the current model matrix + GL11.glPushMatrix(); + + //Sets the location + super.setTranslationGL(); + //the rotation + //super.setRotationGL(texture.getImageWidth()/2,texture.getImageHeight()/2); + //Sets the scale of the sprite + super.setScaleGL(); + for(int i=0; i