3Bq>hs=yeHN-3L&uC|25lCWG67AwMfO|TtFf@}&z zrL(oudQCc9kPeSX=V#Ej2oWJVq*4^K2@a1M*EkZp&pg5CnX9a~E3{NuE^94v;IJ>- zRR`!arGzmB29V>D?dduFy#=NiWtmjS*|h2+LJNd<6r(+&4A1jc?l;Ro$1886j#lrF zO$A1fY{*Snm)Y`Vo5Ht-__B{SC5FU@OKh48sp+HDF!bW)Bq@gQsAo4M#K1u$2II33 zhNC)j&@cpRIKG^7+2cbgtha;|Q9|b5Bc(xGl}{j{8`64}@#Ifyj)6vapqktB1{qlTaep-3*^oy&=tPb97Kn;am;G{}V#5=mW;*q$u0 zn-*$Aa1P HX2a=oQ=9-%S>=nL>gCLIbN z(XAz(F0h9ubf;&C 1&3sPweb5|i={ODd7dVb>19O@twkk9P1yJ(}a0axbv;+5J_JiFT0&H@QKTmv2Y1 zzI?D!5Gk8^M}hM|h{U$fr9((0Ei+g$lw#SzF5}P5XhJw$(cVABOhyD}NgGR4i8!!K z@%%nAb|fUydI}WX;VJR>oWgpP5x82=jTNz0M3qfjqz@UuA%YTF(UB7Ie1&~*n7u%n zny_9GHXGsq$I6r!I@-Xf!MaFQPDn~ne&7II>+EfrBF^<_Er`LByvwj{8dRzwf|Arg z92w%dC%t`!u1bQ^h_*#`tGt-Wofomz<^7l5Xf6YMeCM48XG>i-L@7{1X_N|mS$96V z5>rNfE|ofuqJ3e75S-7gAwxW4d{ow?;cG7LZZSNEl*7+Ux%o;-Lfb><@|sc#Q5D1s zyBR6bMM;PbQ)#NY;^^f!(3^xZhQ3{c@5p3t&ftYm#As2WL%(xOT&%Iv3NxQkl_Qb` zch=(0JMfaSnNZDUC}Z$45k#&Oq7oQmFnu80KSgYNio#%*3&gg2x0ESHWK$xHM&v4y z$^H!W%s!j#hB7Lw_rrk}^Id%5nK@inT1rwH_NRu;!xgfX2%QKa;a6K^?8!wmq$CxS zv4P w84k!>Go_ z+!m4^*By)8%yp5S$CMC8WsBe8;Yf&0N7%H8W=ae`_wXu_tp-CtYlAK%eb{pK;DFn2 zy~TqseS>R1@B;1ODe>$KIiG=4s1y-NpnPPzI3@TElj#K4TF!3Yp+7uDoNY0!CkZ$) z5atz=gFOyz98l~|*=*Jb7m&i_zoRhV1NQJ3eXxr*nsB;69qeD`91y`s^o3%jDM`{( zz2^%3H;yqr(gtkX)J5*J&eCLq$7ru%4@*PGGTP75gRYf5SCcUJ7bIJO* zU*@%6{TwG>evPJRkkb(%d6I}Y5phP6LZCZ3#l(n+j()w&UYH^SGciU~Q4o|wNQF&- z;>LvW!Gzd`EW{5Py7exQe0 qt;*~Q3+H~nT*F!*8 4H?e*HS*y*=vr zF6CrSHQix)<$x 0HB8<4U@Obg7dG1fa&B#Y=%rYGZopk02%oV6$<3W0Hf_H2Pk0-+Snt`MCY zGI)nHHRbwfdKuv4tmZ=WJ(Myj##|1}6gW#18Zl(L@8bGp_P9tXCtFDgRPXSoOQe+8 zVdqAdrJhKUOCGI23XCuqCyBkqT%S_yPcd6h+V=FpgMjYtF@?=0DRENa3YFQYAc!HL z3d49Z##x7)*4)_NBmF<$;EiAYEJrWDN&l5sSbyQG^sm2#xPJ;?x{Y|}1Y;CV4sYg= zI~r}Mo0`$6!BizdCd}@fTTeWRdh3{X{^@VgA8o0}b5atQ36U@w+x5g%OM%91+kAx$ zgs-v?0cT)*2H9=IWd{63Bsti^DZ`k*_>{Mqj${2|#Py;TFGvR7iw%1nY*fF#jQ9 zsAn^tC1lDV#s!HlavfY~#EwQghZRlk=kd9ZM-M+t%7J|MxwuD33ZJki=Y)%-!Dk9F z+JG8q5LshP^u)sC4tpDrGfi{z3Wu*fWK2Q3-7=rgvC9?a!5QY(HBuu`lbUq0$ GC3qL}&KcQbOD3TxufmVuewx(1S2=JXn z7e!t`A>>BALG>wJL|qx9cPr9^Em1c^{Vwrg5ICekiZn=)gp!CL5QRaUbl7!7%_Vxh zCD~jvXOKi7QjnKB*c%x{%t=&|fg~crXp~kI`%P|)4uU{H4&_fykMqB35a5|X)u^<= zJzQX|BT9%qpoGYnwa8K!S(Mq^OB At*&A3`VHoP^Jgf2{9_bX z=GdcS7WeLRc6`j~`8k{QDt|963Be mG!2Uw*tvC!U0d?Tzx*6*deo@Gk#hhk zB*F#yb(a5zwi~+e6Bj~5VT#O;O92y2vp2;%mqimHWT8d4C_RU?`vSci>SLueaUHR% z7HKphN|MVBcmhF;J+>Tmj{ >mCU+6weNN=!p!hFpCe@gtDN#*Lv$IDt-@{gdZ4;Qj_c?C< z>`(IKpZg(h{P2g6(}L~d9J}6fwpg& n-BzuIJ`DRM9dk#NM!ac#f)nw zkTGv4=LK=KK_KXZhM3z{QUvdpgsab-UIsW8`Xq{kN}0V$07m0tpqSO9y_#ful8e|l zz>AOJ#aip^sgV*!Wpcmo9PX_%MoH7RYebB>wbS{bflHE_5{eA}`QUSlXXm)`k@vH` zUf}vI!Y1ynPP3xZ!}^Uo_}dTBvY>p=4cu;njgjaQ(kX-&cyEb58<;pF2ohLsSrt9( zRfN0uGb*>g!}w3Wz|}wh15{UL`12*9ZE4pVy3GdP+kEULNY+u5B~@9HyyNQCYn;D+ zm&MC>nKa`(S%#sm_YU7~kuj2-y{v05pxYQCT9l9^dR`(b1tH;mW|U&g;)(C{h$(^0 ztes!kEGHsl@5?wKfeE_x^1)?**Z1DJC#oWfnD1VM$cPAuVpgE8j-d012<`$yPH@qS zCzQ U3E%b;$A-`u6smuByUkE=3`6goL!D8oF+TR4ThU;Z7FtZ_Wqp@uyh@T zmqhPboSx-3CP4f4L)NdnNjzOrUb%v~aUDh@qLf6D{ikzMl1T{TBo7bo;GUW>nKgvv zf+PZdRM82L^NL$P@p00@gw(e5n=Q7p*lm|Z20%!G;2mXEkP3yaD|X8{XJ3Ak)OMIb zBoPH@5~1%%&XTOns+0kmz2wz{#s`U 05O-`)N*KA*VoAqmN(QP)_z^pEiCO2e9qi`Y;R$K0T?IrprrtE$A8Qf|~ z@Bt}ua%gm!7w*h(_2Vz(($6Qhn+?5f>1>zB;SC9BN(oa}1Sy!$cCd%%9KU`KT~`D$ zy{eTWIY;a*!uzcG65^3kLx_QpNXU_<9M|9@e( &UC5J@(B47--)5ha%7--2% ztdKx#y}fbkdUu&cuY!NG3i3_m{RjILQAv>?JF#sX#Zz n`P}<~g8o?-& zdv&9rQ6*=pBRbFGrMs9HZj#zHGE8$ z?%&Z)2`b2olb=ONzdut}Bevq|+X`ILGVUq>YjU0x2Zis^jSXJ*p30=jl&;AHHh| zNL0}vTt0Q244CN*fB%^Ji9MR9ud?~(LueAc>o7qRT!qp)8=k~OAq%2#MCGWJp?~8H z_x>jd+GCu+iA3}fTqH$EF67cvWYcjCBpEOyls1UEB)NbaaCt4rb#?+7)zFd~^8AMg zDJg7eY1RSn1W66z3h7Bn(5&OBxH&z!46xG0sTxm@qCG>T1S*s5N-As!)VpIgPt0jw zIl LDTG`MintyR_irVNR&}Xl|3|4jCcXYE7I{fOW~RQ z$q#V-M?Zv(j kl!2?|Zx{vGmmH-5r=(Yn&A{ z9g+DR8ST(gA8MmD0z27cZ6rFYJ(| zK~1IvQ&H~jXO<)eLc8T$uGssj@8#+zKT5#i9-fg}M dOUz5B5DJzMeU9;<0g0hTSxLaGf&|$Nll0- zsd5>q4QbWVo-HY~Ar1`MB@-0Vz >jD> z35~@03|%TMa&DgTJzSWAu4}2vicYumGs*HBci8#rZOn&mve=w3+r5fix461M%|?XY zp++?%O(aoY*~cEA5L`!f>X8-9fAIa7C-&KV^&RY;Gq$TWh0XP)S0J>asz;dT_mJ<~ zXZnF#m=fao2|DTwvh2)|^D&~Vh$7~a1PCOQ)@YxIN+au%&|8w01fLgk7!arn<%+nN zx1sjLX0LxxPS>o8=lTB2PRE69-WW*}EWAPilQmzk=NNEB8|WYUythZPZ> zB1z=Hr4%y#DRYy6WEdZiB7%rWc?2##A#(2kfy^W4If?^7a-nGpDeon6xs)P^AW;ge zDXD{G+i$4)^vw%3Yc^q7E%CMfLsvDMs&%8(45_(RAUtB!;0RPN-emRCZRFMxs~%T4 zD)Wfq%UPnLZW=c23R4 j{1 TnVJQM$V^sS2i_j zG=> 01us?)B^Oeyg z;zju}h!TeKB^!n31V{>*$I6DB<;s|e`w#}8LWp6v4P6}reJEspT}%npdkll%aX5kz zkJK_3aAmH8GnI=-m%;*J#^|CXx)q}3n`Sn9J(TLPBU(h7QH>kTf3H8j`~9_J0yw zYMc?osHsIk#4`Gxr`WuFm$vWGWlvDqRVEA6hNTxGO;zDTZt 2ckL(0fFcz}KjdTUo+Tn->>}iGU;( zx=_dgkU$ztHAR*M$w#7yC@t~J4XL*|*^+`_EkZ%;di=UYDxFoVk9|D;5F#(;-~%xQ zG($!_1n4oP+VHhGYB6L9kVqN%^WG7*J)~il(_=sDF___U2j`CfF_RBULNEqVRM_>~ zBx}E5(i9dv+QGG+Qy06atIz(1x7o(NbOEAAj7Ee6VqUXZt(m@mkDd1%;LbKUAL(L` zb?x9&DRP;W0wlqtnUbPFE6HTk5Nm~6JKp$bpCg?olnN}54pFMf8l&Yo+lPnvuFqPg zm{p3!XhN~OgWQ=SW)ql A!OJoX8Lo490!9~DA?V3y zU<8y_#EUms4jUkbJR#K )H z1F5J{hYO_Kem+bbPAnb;c)MED9-k7+;xk2(tJp4awM49-QWa={s*2ob9RlT#zK=ph zSZr8FhwJ)B?8mU=($MlbnM@H$Qks&cY|zs&JX~=57k`6dtI xkX>ts*$J{Rn8}D@KBbz^s3v2|$%JY$qnb=8##796ik?lfle v5Lgb*k_bO=1AO&hjT-f=PElP67!f!`lIw=%hm zy5xfgoZ5v!0_8J?yp7n_B9y%3d@nF<;stXzXu%%49#RO%LXw&qZ5oX1Y1chzZ})ff zeu3O89|c% ceX*<9v`!}aycFoltk7grWv8m7mR-F{pf=U>EV*z zJFM#ogD&U-fDvSPQwYsyG)5vAl?`&zpm%l iZNa9jOsZ_Q)3}*}6;R(@NtjT0b+IDOYk5F17 zrQyz(UO}z>VDu)a2AgH0^}8}#Au@_&U3T*;M>TpjB3O$`xuFi7y)B6WVRWu|hiRvh z%y@Ybai?2S>vHxkMAkZIPKe8lJEfrq>|z|BK*WHqC3-xD@eZq#hv;?pnL3s u{%M_@g7j*@Cdi)TIy#p(R3*`+Rl2>qwFm1+n+|^A+y!7<+n_kNLXD !pRrkpnvH;dOpSn%c!W(QDQI{ZSok}5c3DQuQ|Go?RJ5>I;WWI(EErUn(;!J z&Ek^QM58km>pjWaeC_ltE^5Mghp_=6G+Jm I1iL(TCrinw8PmBIEhS38QK>0TH*Egl zXV`r51!kXofw2puw;r -;8w|9lbSKi_7XTQR%8PO+4sSQ AUNk8B;$ zTI!p7D4lm-5D<-`D63p!Hziu->5|ch{CgRbuYk2@b+SQ7g;5eM714$4K{C*VVql@- zP l(FO;Ftc@?oWU4H|yC>79|dke90VdhP)wRrUHNE+5go({Or$a z=W;*odW+tfqNfe*YDqa8qx+T(OAdbO1DqWlvN&8Yzhw}?)3+UEQ)QSAaVd0 JQw)Y}Um4hpfvAT^FdPLRNL|0RlqG5?GlA zU@vB@H)@e5hiZuy66GCfy`XRN=vfzg ;V$;4@boQtsE%F+ih`S7tDq(!O;E(Eq5I@8dS_9?y_xHtdWp zpGZm)KJv`3#M{6BYIXPQ`R>*Y!lp%!8}z85YCG1^Qt$7wxqAn$O?l$af1G#z!S7;@ z7Rc)wVOvu4RLz(q9v8fmHNR3)lod)VoXkV5W=7&o!}iT{?*GHjGX1_MnSaky)XyB? zWx}1V5NAtbSrF 0%A!XKeJBRh2v(<{74}TDIWkh#=P8|)s05i^a zw^RxWLktm>Ao=WgVB0n~o;_G1Ru(axVN^c$1zE80xbWS3Pa@$jR4RRo+?!Ay>=WyT zaQ-^wlL!B_s4DoD84lTuw0!i<5{}V)hQ0apFSIXx Ie4{53fZzQr%j3;A=iPDrg!HOY6hhZSoHP~*8jh^Ld%e-mW{m=p4 zc8tBE_Z~T}DC!!&wdnB}B~3nJog-P7v+=YcbOHC)85)5wLpQ&Vl%_%^nWar?m@ynZ zfq?T4i6FFr`l>?SdYW{!A^7l5Ci7=sjwd}t^&J8n xm!v@ZaxWd-><)$H#Tr z-N$Y>6!kC$ZZg51oMNV9jI)S)57_&}d)b^X@Sk~yZK{b^DztA&tB%olm|*rTI-?XL zGC*M}g4B$yp$I)&Et!uR`mU$@(jD3_z0KjRIn}Lw%4<{PZbLnppqmm(lPxEPYaj_S zK;t90fOUcOc8NUO5Kh*#_Yc|LJEC?l8%^kqVpLbub>4NQDXHpusJ(NEB7_1dvD=o7 zx1?={J3OTLsTUa^%yFk@AT&V q zRJagXuhxtvV=m?%#Pq1aJSK8tp)_SvQG^0x4ZU|%Wko-o(7Qlftm*FFrcDkt(rm{g z^teHe%A83L$66X_I{GY`p$nvKpmTi|F=)lu|EIXfSFigvw0`GidlJszQ&0&6XLI)&08d?E!;=vzu9@qGtD(!X*} zTqc-GN+pRt4$YrjE-YfaY@zjju*v8=>}d4+pCWG0u$%6S +I-1J(P!@4xH5`Nn@7PLC^ja0S2Fpv#J+z|2NCXGxvFKY5+z_B~u^nf&$drTzP# zNBrJB7SHWb?TnE=uv{)^>IPFar~z=#t1XMyQxXFxpsDH+WsG#eQ8`bP9%l@0HqM!; z542s+X0s#(57A!+BumOvruGK=18F2hQDstH8 &G;5 zgfI%N1kO6@vL3oha;fQ^BgBAD9@}RhY`fUdyf~+N@fo&nzk`X*f2*54IA0BQ;&%$L z`_`ugxGlwO|8D=@_x+FCSHAGK>)jhfI^y~aG2bH*(eoMh@Eqk7#ntO94j&Lp&2xYG z z2a7Xw)F3$w`Hbs0$%|ibF#&nRZk)Q9GRXlrbWGq!)p$ zjEqAV0FID(*T>pZGaEPfd 2T>HuIVSfDztMg;32whZ|gB@aN2wjWb-62Q;DJx{yv@{g-p-0Jx|Hg{-@rK=M zOd%^`P)Gtw4j!2aM2uM9lXS${j!s1CsKB z-~O4D2N{Q_-uHLy8!!LW={v97=$?Lt&DJrgEy84(NWHg1cYH=vFuA% kuXD~r!<~yW7 zBwjKv39@2yD9 5XssE|iyM}1yxYZi7H_s}=!cgqb=#Gymg+M%W1Alm*v0X9ytA7H! zQ*!)UxA8tv$dY r!PC^9w&|$R$fkVF-MFE`|YQ5a8M^eV yV|w%yK3!2R&6>wJ4?O+XZESldm4pzH`icx %r$0rZK|U&Tzhi*4w14CaM0ZN{>@)xK z;`TFtegF2|kCpG8(#ina4pWx|Z&8Jz+TEc$Jq9yn=in*&!#k|HB~SeH2dQ?(9De#W z>IWOrjwdu@>bfGhp0#xp&SQ+GC<;(AAH57j%Ai}zf^j*3?}_Xysj@f_c^RZ(B|P@; zV=Pb_W-(lz78gb>S^TC%?t<)Xo0FQD=uVd$ogOm!`1`r_$?v5ND^lN4_5#WheRYq{ zJ4lIoI>m`B%TdbUH+ft^sRhnky8CNZzyCHP(;zEDVGQ&EW6V%v=UU!bi*t@75^a}_ z-RK=n)3EacAEe!!Q;eIxYpN`=`wn(U?+!5Wj~ SC;%y3jfd+S13V*&O|M1vqQ0VxEnl9xMJYR(nbW?{VH`J~ySy zfg)kub9VXwyRW(NiI1@R!jrg79wje)z!oLV!4-m**chnhJE*42S@Qrl+LLpXbGX<; z>ezhgi1UB;hsb6^JsUGM70y}8!cgfZA5%urxjq}6$H21P=62H_e7EGrfA;5)@87?@ zo;NQPv-vi5-FMx+lY{RWcJSgmBw3F?QbP2O=DGL(r>oaq{bYIf?(_N?g^Y^0Xp!?8 z6@2Dtm7?0)p*vp^`WA68WmGG|{f88#<((k+bLaS^nlX=-)Xej4Is7Q2J^JszDIx zyDc4{ltycvN9CAIERY7t>d?$3E{Tl`iCaE+Wy)m|WY8kS?2H>@!VlI(kjZlwJl1;_ zt0k@7a_s{*xcbBI!`~XSSe#OLvb}{a8C}^S8bKc%>{qC<4z^0|xn}+lwf9h}fPk-iD(w!shlOtr;k*r3Q2An4*k1Q1R z-kff^BCIx;vL-$KB;C;o;pm8+4<0aiYM-+&yu$Ji?$RAEaMcz&t`XW$n3A&8C@B#n zymh2xaa~sM3$2DEN(@QS5LhW5*@s+k#YB7xmm;_%$Wqpn@F@{`i|j0`e#>Ut(OjFe z_h+7E_r>>MlP4aYQvtyzd{t9j+b4;L4W4Rep3PN4$W3Qb5w|^lwL)u2-?nJmbM~)Z z!`x5!YZG=ViMF0?ij14lkRRkqqH9~U(X9Fn);mmLNar2Jj$!nZ? ==4}08$l9b~DS!j|3Z45>g6sAB5lXt7k zh*cQwQgLD5H3;v7N{}vOZdvY<5V?0YdVF#OAF$37)-9>);Kr2cho9o$g{Kg^n)P-~ z^pV0Pe2A#gnCi+Ny#}8G^=yVJ3w-cEW}$=&bf;%15@K^orzPF5y~X)&-lm+-spcaZ zsj=2kH4SxHUp9zu+YL$Nu94I2k}^4Lsp#L_aO*$#0L9< e>dE^L9=_4uF+KUom`4sFd9mbq$F;8!g7P| z1F}{m0`_!8w_ej2jh>EKEPA?^ACUg=knNolIv*)T1Esi>*9rqB6=({i(Ik~GTNOq2 z{t%K#%q|5nkwPM>M2F4Ua|+-Ev6b}Qno1?A8#|;AUFFKNHz}`<>D(4pJpzG`fgqrq z%qV9wdh%q_YA1VV;awhkrxk=icYI0(Si3^T!1nX^c<{@wQB@7)tY%t_@jgp|ngRP3 zLeX`bd}T<%VzI bGzmf2^$wh^If8Um0Hg${#bp zK#IuO4$IYg=05$8U!E;iH~h6*n7t{kDJZA&p));@)F9@T3SlF0wWVLL&?bWouCr{m zr-=2MnWzbS6>BSSZ?Ca$o)F(&5D#1I#uAdJmWo&kT$OuqVPKHN<0aCCWOYz6x`cER z7yB%;Ep(>ZZq2FRvrqHnF4eRoY`6Hf&18B6FA}0OH1jD`71l@OXhb<3=f7 x`?>Kq=ob&(vE0|DF9E_RP4Z-DsB%{$NI|539?JS+^NJ6mMZgP*c5v;tT zyuV=Y?|p*wm;Ut6%vS1C_-}(8zk7ghd|=>%wfZ-`_OXW|ZdQ!;r;Ei$f9%J*-};wd z)~AQcrbxLz$HgUPI?ZZ}6p#@_$m&S3KcT1$cCo_R9#a=gtDD5CW3yclk5(XH{KS;% zsU7-mi#=Y^AGP#{Tl$k8mKL>XakfVc`lSnBOc*3gBDaQCrXU)H-%*r%Gt7QXd1Xv} zZJLK|X+_&^=}xwg1ThT4^GZ=q#)!t?BqS{;Co^P`N7;uo_-YzM@{#`dj50=4*VC(> z?Hebw|Hn75sbX}cWTz i@^4lZQqfkV7tw`SQtf$HQalZ>My-W^T{9j zIbWGi1?`F9kGFH*6=Z<)>YM-8UkC!GGah{9cmB%wbHDzN^h}awHz{^@agC&y&5^1A zZ$adSt?V42Nj~6LEn%}o+k_Yu*b>afq1PR@+tAu 8p_TRyWGCnZ!E3ra)(|mP`fpAIYoq&r;BNYLR{MYtC;X4oJ@H}aqDPT z>jBG71O#YF& u>z!UzJZj z_tSI^wh<}H?;empDoy~~2e179`eIT-)-?$OpZd(t+xx%wpZiJ0Sk6#a=GaOjs)}+n z$}-h781&|Tpa1|3TS-JgRD~pnk}NGnka~}AJ7{x25ecPqrs_mC3s1d+E|+1EJi<1F zFpPH_?%TxW+(DTHCP9=Er!`V!N>3JsRG6XpT%e35DV57FqmgBaEUQd5#N5#@FNm7L zK=kyh1){YWPj=*!j?L%qa{9}!5gAcm9Wx$PM3;w;jOr1p$dVxM9NTUSO3?N_)>@(z z^aae8Et>~NOn?3_zPA6fpL`*1yp^Nk+bGOGc5r9U3}nN<<<@`fTM+x6LP7jfAN@K1 z`PHm?_}br0<(B?1pym?@0%s$tE>WW }$gQ2pdWw((n+gA1`y%884uX^_kDVn0BuUDAph!V9I*+|AOm4Qja60jR zXv2Y|Wp=9F^n~>WgeBQN8>e{3{a=5B?Qh(s9M5R>8k)Mo+kl9X$#{~F<&fw@Pw%tE z<9d^8U9A*JN{kO|Zr`E)k3M;K|F8UoALM*t|G)OmJ;c)UuH&EQdEU!;&pC5uc4l^V zcC)*gP0}W*O`A XP|Tz cVyUvd(#6YvmoG6vUy( zFKT7Jpn4PLj68(+-G_`AkwCi~KPXUzM`?qpRuD>1%^Q}!d6Lnw1(=#3Yqx2oF{TQ` zXsuSe{?R~L7F5pQ@C=I~uB@<$!bA?FB|UP6^yfcuyz@to-=}+P{diD7v++(Nq92Ma zAeiuFR~1HU#795!d4DP@)!CC@j3!46hZ>ouBvWHVq}bA8k_J&TMWqSU16kom>cDu` zN8Du+K^h@_63$=e@FsL9uFvQw?>F>9L|tlgDpZD~sGZhS*pdYVLPMJ}wajZ+rIKJ2 zA_S2P 61#NcUUkh%O5zcJ3f+rN~%ORF+np(MTH*M>u21 z^Bh+ p^B`}@tdKoe6ftdO)CB<*p0!()pA+lWzVf@(Cv8SM R zQFM@-GC4}T^<6goQOhkl!n~BQ7P&dxSkGm90dWvq^<^1u+C_yl7G2~RYe|Hny4qvy zI~N%qxj-hzkaJTs8*#7@(4MiZO_HP_!boaamKbL!ZAD%bq0c#%xL7gU^DLY>PyFyb z-`@7+-+D+ZY`nNyf5xrBmJtkq5V)!&F^0k2ANqq;RldCA%*nq~ZVlD$;PWB*upnxU zAt#z>DqN}YBZH4+5MxQxkQu56u)%JW3&S&NS%r<>9NxZ-z3Ipj8+QyT-ue#$QD@t{ zcF18k|E(zzMTN>W&Xy2c7{coJUuX3E8LH(0W0N +ahc&!4R@a#t?Vch;G{b zmDP51eEj5V|Kz$0yRw}fY@AVbbL_&9sF4z99dri5NMvF0s>G!#NZ`j3A!3A2!m_UO zwt_I;xlv?z%N=Ah-y!j_uA5AlKvW)VkV7z|3U36`8icM8I>#3Sto6t^p(-5J(PftZ z`y9oo6}C5~= vUG=V*4C z$ZnU>(gkAGz>K$%Nh?Sql);HxM;<8~D3#SZ(+U;W4RIUW_1g*F^aiY(VTPtUkE=@X zK~>%RVBe<-jk6U-mv~Y85)K{ZsVgiUy~x7(MW%ep?%6%KR+HEVRaqG+qIMe@C15R; zt|)bdb`_=3lvRn5VO9wPLRfh93L`Cue*LFEyYI=zpX1ayoG1`e$y>Y9wglIVU?7}t zWr-w09=Q9nW- _N?isICnae)g-6jPr}g4R z%xwGe#OFTslk)bPPw?6mC< GPag2 |B4SA_9k%P~Us@zTvqEut5xZDoCK_zpwUf4piDVKc6%=G~eNV6! zSG$;xOdhu6%AlQrNTR$1Ld`lqdjV4! }nJDW6jwkT)Xbfm) (}Ky|6l=(QokrB$+0 zGB!4j*gHjAMu Hqn~dq)3xmj3PurlzKew`I)lY9VG6?Quog&JbCQXuRP^sPUm k* zYI4GZ&<<-nx(~iLgym(5#UaDRoZ@N^wQ5M6qS vXeq9fjFXSd#X0X znV^wI_%y+#Q5X~P>s>lQ+Rv5_Gc0k1#tjUj7s&CsCi03j&KMhOqjpN7Bq5QFV5q57 z(3)1N9+q>MB4=bvilPXz`_7RI9jtPsLZxw#=XVydvPLn;@!Pgx58nCI)FTi4ZfE=C znpo|_>s`e3j!j?0wOzUEc=rijM@=*fT^N+KZk_ut_we0^ddJS~E03K19esZOvChT$ zcBAJoX@|HHq^rS}M|h3#70x@1vy|R#gvHJo@F0aE5;18UBN{QCi4J}?Mkz^CL>u{O zsUkM|Xk8GF8Q2`Hbr1zN6&35s>fyapuRuniKou2SU7{+XciWA+b?COIwtwu7Kkk~r zl2Q_LWeK%wY;zF)uHwBTcpdAXyW7XLC4Q=Ne)?nkzu@lY$@!)EpUMCI#II(T79LKz zBc?_cH`^g 43q4*+;6*4)3Z0`@hS;G+Pmg1NeE-Yaf9%%3p1SLfXN<6ehOxNQ7x23h zg#1yODYhQ(J;61Cgdm7ffm`U)*fHV6{ttf5itKB9qp@v8cjYr{=g)oGpT2k~Us-9k zmkSbYsb)IJG^UX>YW-zU1d}ft36z7_DKw7KhfYLcG{!r$bO_^U7=cm2%vuORvji&z zHmWsh@{+<>WVfJ96I>@@?B)+#kaIUYx3+iuZ?--3z_A@#Qgv6+^NaXa E#0tc`Ox%oey3enny{7a G?G`grx~t1sO+z3-fO;-_91Kl;i`7Z2Qk zJG)9_&0t3(qCpAk-bmNUihV1tbAmTveG9h^KOCX13gXOTrMKB#w;jnYjgGuBzMaMK z9o%`$OfUS$;jv3UcVJ)AEAHGg-)q`ou6(Z;$^Izrm@;)rc$Y*@wA&`xIipYa7A}kZ zH=dvSw+r3b<}Ka%Up#R2wP&BEJ+TMw`!M$SE66LW$i>y5gVAbUcdPY%ypQ+s{|)~G XR^s>rICUE%00000NkvXXu0mjfD+-ua diff --git a/samples/Box2DSample/common.h b/samples/Box2DSample/common.h deleted file mode 100644 index 8c0cf9d6..00000000 --- a/samples/Box2DSample/common.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once - -#include "kiwano/kiwano.h" -#include - -using namespace kiwano; - -// -// Box2D dzõӦ /ǧ/ ĵλ, -// Ϊλм. -// ƽ Box2D Kiwano Ķʱ, Ҫ -// һЩת. -// -namespace -{ - const float GLOBAL_SCALE = 100.0f; - - b2Vec2 Vec2Convert(const Point& pos) - { - return b2Vec2(pos.x / GLOBAL_SCALE, pos.y / GLOBAL_SCALE); - } - - Point Vec2Convert(const b2Vec2& pos) - { - return Point(pos.x * GLOBAL_SCALE, pos.y * GLOBAL_SCALE); - } -} diff --git a/samples/Box2DSample/main.cpp b/samples/Box2DSample/main.cpp deleted file mode 100644 index 608e923d..00000000 --- a/samples/Box2DSample/main.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2019 Nomango - -#include "MainScene.h" - -int WINAPI wWinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ PWSTR, _In_ int) -{ - try - { - Application app; - - Options options(L"Box2D Demo"); - app.Init(options); - - MainScenePtr scene = new MainScene; - app.EnterScene(scene); - app.Run(); - } - catch (std::exception& e) - { - ::MessageBoxA(nullptr, e.what(), "An exception has occurred!", MB_ICONERROR | MB_OK); - } - return 0; -} diff --git a/samples/Box2DSample/packages.config b/samples/Box2DSample/packages.config deleted file mode 100644 index 96076339..00000000 --- a/samples/Box2DSample/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/samples/Box2DSample/square.png b/samples/Box2DSample/square.png deleted file mode 100644 index 3f7113189ff1941a3761ccbd5d03302835fc3d30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19791 zcmbSTV{>Iqw2paV+sTP-+qP{^oQXZLZFAzu#Gcrh*qRgDym@cc{R8(y_paL2Rb8ul zFFns%J4!`K8VLa(0SpWbNmfQe?duu)-++Vpn(O*Rg}}f_!DJ;wHN11r^1L#wB-1{H zJr)RF&vR)&coC)$;^?Lkxe=6zKZ2s8i- Lct6a}hB?HWA|?Wr1ZO zBSg)F%tZbFFNfL>?1b14Rzsko`lVihfe-}Yfb(6?t0+~%<}z-Bzg7IUrD{k_NFS3l zs4HaY{3o3EjLp08A72I*vxL(}@?L{N0=@{_>$`5@iq2m|ia4p-+Kqb$&1fA_ppL>V zB1SSO&0m@VuAlD?z92>pMOYC!Sq~2+ngV|&IXQ!6f0VVmK%70pdi+FmccRX6Jlmke zKLtoE`?ix3DB~ J@Prd0 z+AF#f)rur`*1bYxJE2}GxeaA6=r+Ab>}_`UpvJr}umK>+pziNE1zryp-mb<*R&W00 zgifM~k(No&jnN3b&M@fqBsVj61@&wN7%WT1hDyO(aw6URa@wup@BP}8V^c&fN`JKZ zZ8Bk&=hCEU3;2M_utp080dem|Z-<%tkh~32e57&_A3Cz~jdH3s8tUDm#~%+6PB_ zP0rdS0>x}$LJ2q_c_Q0QSIR{o3MZc>|5k&4Y~aBsH7?QY26X(KXDl0Pf>4Np@~Ly= z_u9NRx4V8-a-@)`85e<1hV0(B%?p$U?+hBwip%wR!RvC$TzMwU7UE(o!xV!Xr>CFe z$U8O-E$C`ZT6cce?)4uCgb}d`>B%P!`1a~Z7 ej@;x`J?wpM~#T_Oc{?Ji+msujlWL*?O&YzEQnzSNeAz7iR1B&gM|kE-?LxW8_en zY%Jz;3iuUMR#U=(dA#( #n#UhB2UE0b@TE#H{lSW=QE+1W4 zkr;NSsTqq1%1sfso1 ^U_s7GcafCi>7EH72fxwQFpv8H$zeC%r;YC~< zH5N+dA$}9Ez%gd&Ch%4v9RDPUj(piqT4>{JgI|gcDe!rKp^(Lz5^WN+`D&Um>yEIB z88ywtCGbYi)*ao^?jafc_$${bY^CvmHeJMZy8SVK?+1EhE)3&B#*Tf1yUqxd z*VV<-qYPWdp n19I7p>4#(Pxyxa-P`
Xd+AhcA%Y%Dns2h;G8ZzDv|m6FP2$czFC!p6B}9$n4P4qIp_q zeV>OIj2=aIAk|g$IRtNXQ?RS?!Qlk5Fs3 zt1i4D#8>Nvay)>0OOlPU>yvDx84N?}DS23gM$_mobf|30BxM@!>!f9w2lt}m*T-j> zGSg_njxD5dF <1G(HwDF6NkAw9vlYD{}{12VXtyWc1FI%=|p;=datpOUQ-v$+@4YH-CmUHhZ|E zb@1O;&h@_-%Y9d_Ss^cP=%f+#PW4PpoczZcobl<$?rr-c?D^sR(e>T2_t3teBPi#h z4Ox%BVITfq{d4Wif+LFC#x=e7_4|TMR?L&Mbo2`Dp>Mo+OGo}oW;}L0+RvbR|3kaj zRrVqVgm%If&!D1LuFXj+76utB*{%;h9Kl=DNgG}yG8eNnN?$(K$s~0rBot}M(eGpk zY%pwq@5n6z =A(J~XmW+F*n16mCg&j`Vcy6bi2C7U-uId0@+(K8)$jJx*Q+dY zWMT1uv?2wJ4S|TezWL_~=8KXNuORtpZ{b}VOmb19KpzU_o;SXcT7yZlOJTxN#Ow%w z-l)mwa _WpH$0#ICBf0CiY #17?*N`@V-9o5 zyH?}V`o81+d%G&}UIlo{Gp8AMA)Hebi2tw!YY})+FK5hxz5nI+F<*ZZ`uT=f!1JjQ z@clBcRM?;ELB1Zf8Zk*PfNfp)kv=R>yv^4hH+TSp?^{XoaeE#^Y%c<58Y)|14NBJZ zi%_x&SoUe(Lt%5I GL3;9KVp1Z#tL!w#=Ad{K(iMOMK(Ty}F| zaLvdj1BpFMo2+P_H~#=1eG&-8$YYOMfg^My|5u~{zjao>8+MvPHAA?=U>k~j;qbVz z1dREY6>a65D+bv=uX8xWVs{%9CNG2 ?C55C-M(Zl6Uapqg-HCUN~UQhD51e_!XHW;mKb+UxZ|5NNHd`#lv0I+OmA2C z<;+HaC h@zd9QHt|=K4PlI9STJ%{fByUd|AQKESD+YJ#50c*Xi# YpH*Gni;d?*1hBO78ehgca z%^@BkmJ|y@k}3;X@HILuL^BBE>FB;;-_k;!J|o}+0uI{5o`5bTTp~J6ns9QwSxelD z+0GjAUzD{OM0f>B&^z2Dskq#&E)Ak4JJ}M?3ys|4z{Rg8L31-zWK}=uRbGiw7`uPi zfh6$oHl0Q=R56!lBx-W=cx^|aIOs+`T(yCj)#JFvuUnjn<9*Yf+Yw`!Pfs9W2yl${ zV@HmOy;S85iDiu5gSz$4jzF;vq+=-w5LxA@Q-iC)`_x4Lt%| 8ww#2Hp ahf%HFJuJv0ie>)`Kj#$WbL2bA|VOwo6{9 z#V*6jxzU2bQK8+3@mftc0&r2va(LALkuS(@ROI&?_yM5?MF_(N+z^AVO1i3f8nN+p zurK~CHyZmx|13iIUEPSQjjybXRjB(zL3n(+5FfiZcBjFMGc`lnro(wd5ds2L4EDIV zbR@BSUS(Vo&{BAqj0z|ke)296U4ZH*t=(?OV$^TFx}FdM&yJs@QaSQY^(Gbh4o44F zF4<#pJ5-`f0r(MyyFgz@mNY)#c7mowJar;QRjoQ6CW9r{ywa>sCz54)WgyXlF*6=y z7|tlZAI}&kZ!+o49o~`U@V2Xm|M}#s(0gqEF)0lnW<^>i{%~$RS4+D4d@1dXUM435 z26u=KhqTrHL585{Hs@OPUQY4U8VhTLeFvroL||m52!{u9P>HVg>{>m|jKd?u(fPzG zV7&Y$-(w_Y(3oSbNDFcAXBlOPAY7l_tZ{&@3mZRS(M;2Xs|VAHz3Q*nzx$Q!Y#1}k znCcEcr4y_=2Q^-?I%^PT2uwVeXV)4*u!9`R 5r`}TV!wpvwk&l(N=NYyhl) 9(OPCM75Timn2 zK~5p0EQ{gVnW5 95!0uH(ea?vM>iD&S#eTO1)?jl#WP^8W1 z=Uxi8ErO=NwfqIQDItr(h%1WwuR&)>1 Y307V{p@uzH*(3~Ro}#NH?JlHb<*GzmckPjI_kvqAp%^~yDwo19 zBp-HMbhOwp>8RpeeA~jy8^-dOX|l)g6(Gd-6-(5{>c(-(*vU5j*!1`5fKATDH-s%F z2#c>Pej79rE$s@)@<1~ap=zip$#AC&w~f!!Cohv&;3!wBA4K)IV}XUX2$obLu-F1; z{4wjUHb)@?4&KW-3H^eh`@-KjJQ*|RF-rA%d=c~_gIuyjs<#cMsF)~g9;R?7^0y#Z zHmb5N%mt2)u1cPA7LYd}l3iz*sQd?y5m+~i>YYh`+Ib&-MU>|WH7T_{a=WzsriX}f z2!m<_M#hk;8mdzE$o}VMOPs)}G8uwQ5F#8vs~QhCJ+u&NBc^&xHCGxlKxHi 3ZBzSpR20eP`yocWf=jtbB(dNj)`$vAq$g#+ zuJq-En~xyE)CfKAUTtmc$aALRWe1xW43-a_y*{Je`9e)I;rg(ta}XR;aXLgZy|bn4 zT?C;Sf7A&;MR(b=Tkn$pV-O5;`0kFssu52clduz(@G#eC&UoydZ2j>7EYjg!l?W*x zhWW>202Pk}9`oDid(_32(SWAr&^kY`l ?;9uo2x_K;HIBSe_m6$%j#zzWZ;~0|#Q|;ZEd=l*w5xs;hJQKI zZ%{BVWO~DSy}hBZB(^2P(2612K^XCwGoXMMSkK3DS$EG8ypow&Oqhst@E5eh991m- zA_Hlaa0BDGa;R#P0Z~R&8*pvXWaP|qs9YP?XX}Cj3n=Pbkuo41!mfx2>*Jr_Q7tGY zxLk6_a9D+Um!@U6fGTLtyXl(XSYaAmWue5=M(vFuxM%fa<3JZKXJXB%xCCc1z1_}# z;=4%;4uc%u9?i#Pj@J#-etG=$@KBq6deudSlQe&gJwJ&M72*`Bz%YGoFR(a?#)#q? zk#SDAU7MKonYCi4E3svoN$dj((>)+vO5uyaVVVPI)7XtM;sI0f|$5EdeM17gu9{Z zm=JcsH`-u04X{mqLD%JNMSmu^IYJ(hzvW~;Jh!)^N^Lg~0}yN?LeR(4L^cuqJw26F z^LIQkGCYy03%L}1TCM&dMfc_i-Hgb$yOeC#?wn96%lq7u{~SWPcZh=x$49JNFHXX!%7LAy91 zbe9T_tnDy8=Xvw;Vz)l9E5k(*vVTo#Pv6-3zPf&HVKEBTtT#&Pb+FUV|MDg*f@6T= zzUN1Kdj{+$g}AFPw!K|$IwSR?VeTCbS4Uw5cS2=^bV6@VM?0BP51RtDf%HIbR5{^8 z*{iEwD&B(?9ffX()AtZYWg%$`DJo$9F#X4rSAI6kYF?f~4qpP}_O{rS*CxaJ8Aoo_ zt H; z5?8H%+8=4+P(0+M84K@|;|kb 3z&i zU(l>q8L<$R$}eM_`p2EhPFAx)XsW^(9mAp%`q| wF-sdxIbuM!WyljItFPC! z1|!nc=qUQ4tUocn`yhqq824p%nrLhvc;gG >@yF;C3@9@Zdx2-ZE_H#L-== z(RPJ|Y7&T`z^YooX~!oFyS$;)`P~ue>?a?Xt`$?VsL3@w3mkZvI_bvX9^u=aT!BV3 zQ_L9U2I@;mrdOKT0TUz-+p}*sG(-Ez7;Xs&$jd*fGvT<84syInvHq&$}0cz3ukb zm~zM^C=UsLe7>u#3dZSx^K1)QUwxk+oZCvpeWy^IRKD(wLa0(vGnL~6CJtsyl8VTM zC)x$ZKd@d4)3cc6BDiEGrb3n9^-@ET8SctT8X<4yWX=Na8HMYm9?vrcW4~!0R9}5w zA-$VcvF%6V;?E4bN r^daCXU_sb_2K?>5 z`r2S0H<^LR^|_n<8U`o*m`}0U$`pin=3pyI8_wl$u2g4Yeoj+aYYP!v_{*RBr--I% z LXW4aoGG}V92)EkY_iU)?FjKNlH|F@Jqf!NH;gbam1tOoxPmZ6tFTG304%C< z4F^3LGt(5r@M2`m znjQWjXKQfVc_H8f;76-;nj`Y}-xqboI1j7$Z0yXpTz`2i`m z2tb9a?1@%VZj1#V^PGM+8yIgtg&tT!QlcocCS{7Ac4(z ~H5k zzM-&PJM*$4Vf-kf@eFPb{(M=G7r5J?#;=Y6XWAxYUfR$ORijgDhgkM=!CJ_egj|LD z4)(CC^IKt|0O^m{+}c+6@_VC0TKt94r~`FQ{Q#SJK+iPpY)i4Q MSNUJ`lw* z7hds?1~U*wdW7DckGS&s@EUn!2ug~bGzWZcEM4)``z&cBbJc*~Cb3!&YB(kO!y ^=nrZNOOc7)K_mpUPJfx#K# %{t)cIHp(z(Ef3V_-`} zFaIRD1_U6%ARLS)7&f4IKA Q zH68$Z;N8NoBQ; wjtRSB^X?iBils!+*Cu8IA$3` zI>VQsWzcjCLYGlac@@BC?py?4`SYhFJK)9lJCFw%g2f~6WK9n> SU6)r+k+es|?}C-JYBS??z;iZuHeJ}V)h#cb~`^DebOE^Ch5 zVhR}j^g|<9)t2-+OiC2dlmJa7;10*+dfrlEVq67yvr2g0xdwx0N Cy?rRbB4d%_06LCT|oc4(T@Ig$DKOvnOLv_-xQ O}k zCpt6=S5H%VLcR}O>$z}=e8wI%{(gMd$vjh?{{V^Si>tx6V=@D`E%J^%AM|603cq*R zj rt<-rWFt2$B(m3fl|}ALURW^LfD0(9i1P>1mSSefA7t#2W3>dR z6rY#_+ W@oF;fgPSTGUkjpF9*VR*T1QO;N(#Chch;gBxk*#s0=;1%Rd+y_Z> zWM-RdpruhLI7163$x5B8_`icmL$P!*wD&L(b_O{qm_5pJma0KRRH%?%h8Vg44{krY zO;MB$I3i~>-jH|Nq7}BN^sh#-47yBX^J9 +3fbK<-a%*EYGZLI706Zxn(UQIsl0C|fS!mK zqn_nmvmnYXZ_4zUC8=JrnAS(L)7 MO4@nx;c5^C5y@994Bg-0v3ycy#e?@zsY{)<6{G3#CDDe|C{TB zpL}df4vcCG8#RxHO-BLMVn;K9K2_!=(1BtG`Dad$tADU6^cCegY{zIcDR@zlEyhA+ zgz4<|x? |aG@mh+Vv~48;Tcs%S zq9~FZ`Cd+GifoyR ;8S`b^NHn7q{P`0iM)^+W}^{JjW4i*f3_% z6yOsM(NSlP$$lc91k`*YAWjc+t2f9tb)4gfySYIi$4W!34pHF@vj+l2sq@G)rV=MW zDn$sNMwKu%wb|n?RQ)cvRMHiV);SLA)G1>sM2O87Q;rJ4=X64Ezdj4;u%%=(Y-aZk zl($Cj7V1iCIujDhUf( GOeg5Ts;2}TvfmG)urRQ}FhZna$sTPzw zvm^6$<;^`}9k}F+RB#V`k3Zi{3%;0L*Tm;CV(vCOu&5&2uJ*FHi@FcdJ#hJw8tb4< zL0M0a2egJ3QSKg)4@HZjEevaJ1QuMP+>p;*xVE?d;P=uHzoMYi4)3}cx^gn_I%%PT z5qhVPx9J?`t5NxS^mvJ?%Gx2Or>(8sDikWco}EsC*Sm#U|4xFr_ttvbd1MQ^L^D3M zcA2WeSH&Y)vFWngpOk^VwTO&r6RF1wV<1-wo7A-(EN*wap78+=4z(=8&Q2J(OPfL9 zG(J*MqwTGdTKD^kC%7WP_YsdxQAL%P!m`s{4mkl%ccLmxey_L %|T+=E;-6=9#>0K}LGk$j6z6E;drA_v~$Y{cC$BR{7 zch)
cP|@N!V3tCJ0TXu{{bMYzTiYjh?>|J6*DI6uYj46J1!_egp%`3m z?MHA?*7BxsM_gy1JHhWQA8t^<5qfKPGoIlxeB@wgH%q}x$_%KgwwgL+%4N8E|IyCt z;+z?+QV2 KVrs)ctt%QvMtKhg3=EBoiirMa-~8)yPRl zd^tg=el*W2Wrx!jOpiM(-V5+oNddXGi-N~Wkn5y}r@E?4WQ3JbDyR;MkhD_CRw-o{ z?H~Fj)VVuyn9H!paTqL9VIrU*gu{f}h(SR1d|&2pY`EH8FQZpZmaTZ|`;*aBV@b0s z6K23AZd`A2eS?+jy2M+{vj=>6iGZs9+h)STGm7~o6ijGnHytZ#MO{^txiTO0Ajj7m z?|djK+g!FZ?@zG0Qx#RsKeW~br@rbQd16ID=IejCxsraMnCLFSovRfS!9g_;5l~@S z8@sbceF%w(E+ojvCqT<17xi+78v+aA`=4=)71&sVoQ~S+$c | zhyd~X=0_R=Ny|pEZ>LA#pj-@bXsNDycxse{;%>&}tfsT%yO?`$kOo<1J^Xc4yxh;+ z5;}LyOF=%RYE@|axgZ}7#jI$o1{-Jl!EX)%%4)iXik6yKQQo;d`T70f*K)K93zX 8W-e{+gwgZ$~u&bPRnn0pq+=23BL2?-%WWDEezBcG&YTb@R-=8NNa zY!;Aqb+ZXWv(#{XR^|)e+{$-SyMEd^QKO~mH%XMCWHW;!R3{#8rZtnjkMq2XnSF~( zeSBjX99cq_>)v3AMe9W*lhW{H5OA9j z`FQ7ZyHacKA;#)hwp))!puZH>OD{vc2yrQs#HE`)tv_Zsa8U^cJ`wEa9CZi-E}Z{y zTqvT+L+dULvFVP`+0R7Nmca;L`G%u6OO<>Y&8^|YC1)4Fh213Tfzjxk!lFS}`Vk_0 z6UMQ{1XPrj_QwA1YDF9Ti;91s=A-7n*@MI>l_LF0ZEh;YxVHR6T{gs_IFNKid~GJm zb*ellefo278z) DL*?=7(H`txu`3 e1b>Pwl_qoB$t!$r@MvRX3?02Ax@*RS~;(T~G5A^nekU(QcRmZ%G&jauBO36gOB z$ek(;qd1*_*E;ZXu3ua~5{`*=T)1>t=f&8*MpUEol|g$3yt|(n#EUV>vlIg@7P{^- zwwr!YDP#W_!n7Ci=UkOQS8hKNV|KdW8RJuakZ7IfFI29o$}a+$&aB7TKx4 zPWp3pU$FHmJ#FaEQQz9K&o})8XnQO$!s}MPP%!yzqyG!GTNBguc^+*E+LK2A(;}uR z&>)XtHmYB90EgmoJcRM7XNu!+CYB#*tUCfffnq9dA6fq_^(`p_aD&BOadl_!?Ajky z6S-FQ25s*3_FyzEY>L$>C>*l2ILBK4{tIWnEC!>Rh6L%`?0$y&rmJvx(=jR0ofrfe zrc9KzRFW0cpi&7(%CfRwqQX4~#3p~#klAEa{a$>I^TFfq4XN8&Ac83MT;%Br5W3$b z%%z2JxiRVyv+d+!+hqfurlI{8q*rWff-dNKjpd6%;!v0{+pl3xQKGiZo*%tc7Las) z+=^PC5xmCLTx5mVb*&ZY6E69t!`oqdb3%XmCHz3`@j@jWY?MUFkN$j0pkot{nhEZ8 zY(a<$f@rLtG;KJjW5qL=d+Dd74{_s-Tu9Mu<#3m6ws+mg0)a7Tb%ccEmm#yzJ*5Zd zVM~h#YLrA4uQijJ>|dUx0$;046Ic4(55R8lGV8pcjS)5#z@Vmhln{e{J0{&pG=)no zGxfJ{`~^|OkH2iQ3sb^tUQLeg^6vMKq?^PXNaR>#9Gf^B4s=SFbw;Tn8u(j&*Rph{ zr!1kCI{hs9{Ed{=vbMM*o|!_v)an49mo^OVkFk+Rgbi~omW_+m V@ybW!UR z)9j&fdY;pxL7&@SaXj(o`p=(nJPv;ljC6m;!y0*Kg~O7F8PBko0;gecW^$sCCh6)) z(-h8%&i@)&{T-l+yc!-xx&zbSUfm_=GPlDQWm=lt!0DA(SktEs8w4IdW$6!QXkGCB zg%_P=OsvvZx*S=)*~# !%5go{V@WqPBjdFm^X6*Z*W{mq&M$ aXOOFj~}}Mt=;d~;d|4EzA(y brM|IhE+zLXo*WiE2SE(hU zkV`V&FD4X7*OsGqn^3?)#z?|uU7*w$aY(GEYh65T4h~gUgBh#SE)%$EsD%^i4eq*l z npxi|oQUfXYNEe&fk^Jk2g>%l?kcztfSgLbWX9!pDjZekY=+^4H*b(+F% zZrIe0qkiHBjs3fWh}zRCG;VuxN9O&cctWowT>#xK+>>HMiUkFIY#IcwJ rK@ zdj&w6cB&XpIU2uv1$=-;+V=?x_8Jx=Z|9kv`{KFg3uGv|=6>GpDm8or1k#*ZxB?$F z{+LzL FD zWY6<%x$djWy!Q8|27!ZEKQ00)f%{GJ_2&Eh{JO7K2}i_Nr%xN|%C2WoG~dQ`K{vYz z{$ZPWB?Vgem`r&R$A3(;n(~?>9nRVA5^DA)2@x?Dro|g_I^PnBooCQ1tj$MJZ@i zl@z>=7;x`A6-(M1a;i6+h )jNb57rpGZO^x##lP#`LKq;8%sP(z>5VkBi$U%|VjBon$I BOOS3{Xki=pQ%F5a$8>BpS6qC&N-N zUt+a<7Wky>%s1NOM6~@~uD1J7(%c(5`Y;^!KG;#-XyYkZVH_Y>{DJxLG9ulGJzaVl z?tA3B>y>!_=1A}9e(SvK7yCeSanQmZPu1%KTl@fZf}JO7=mA|66n@$^L`RoNj5xo( ztjwoPiXS(>wkF4dd+=qA#A*NF^gc;K1cNd6JnfkXmeLpfM7rO+e2H%f`~cW3Gii9- z2duNCPM*Ko%ee$a(|x{62YiPd8$wL{ZChPcx*x^g4oa^v(H1rlaZW}G?1`%bU5b`9 zD^%4}7X+rkI)Czk&FMhD>S5NRei7G{&29NHIZ7$MFQQG#o5}&}hzFg&Q^YAcJ7dmr z^v6b04v1hUCeYM;DDgXP;C%4_hatA2$`HSrL(i516E|M~?eTFI#)0XRCA}k#&cQYS zd2G0`voP#8q>)kw+!>E3PA+v`OKPn)KrV#GFS0AbE^itHB!fsB52U$&x;q^_b<*dl zcz>1h4hsazF_Ub<9G$!WL}-M3* iJyf zQC7*25P}yLLYhNA`@Y1b$LC)#{e*q`nuu^EAixjnge-s)f)%hRCvTi45!VXi#0+c^ zfjV3r6=SVmo-U3CIrZo(Y(yj_x2Aj6bziR=+%j)l8*THgd>|kHtS3DOe6NHE7r~x~ z$_<5U0CWBJ)stXt?1MLMSNQ{u4p>6`lu>Uuav5;VZsfh|6EAQB1k29J@j3nZdsvg? z{0GJE;;+k9@|5JHmoeuJ@a?ux!-Q>FH*us=Lj)rJQD 8ol>68w=lKZO4iNDw}xS!=KCWwhtEMYzSs^Bc*Q z*G$>}Mm+K7q;pAikYXd1d50v#X^(l*Vz`oN^>RP^;dEMBE)JBH-@Y;iOD6?!!tEscOrb6QvtRxoGJmY?!rPz>(a3Jk>jecNa Q zU0Kc3eD+r_>H1E)6UHBGV8;p(h|FE6xW_WDFTcLR$551;n+fJ-*F(8!UJ&7zHa@FP zXEHEq(i)w6)Q6e$;p?5-fM!cLaTO7P4!%)-m&hFKP;@(wdxC%8pI|A256f9MF{ONn z@@Gen(E`OOM~2n7(iuooC9r 2lUXCyy?#hieFGdwTU&F( z_sfBK%Kj$^+1YO`3KLDJVlGc;k!}yV*84uh#?Ry0Pm|U{;^N|v+}nQa@%vYY%z;^H z^xCc;&mgx&P2;^;aTLpclUYH+wa^g3bM)OP3Fj`CwQ30J%l#~<<;MgBRROUsSix2D zjS3UOr}F@lA4% S;XDZmH(dC z7*MH5-+sz)C{j4cybLPxXk~`{6_LyCaspU}PA1M3yW1*4DTde4B4|OAP34TX7gAg? zL6x`dC%L|F?O3681TS`tI@h9_RP-watJuh)UY?futhqb29U7~MAh~RnksKy``f%GX z;eq$_`2%yD$9>+@?4Ue9wRV7vk0G{fe$quW-Fz)ZYKjRBr0}v>WO6C3v&lVq>kI z$C=7twCq%gsZDwdH+$3I!!$;=l!qqoU#+J>iD@b1p}CU9qeiL9=;!qSEe$nYuA9VI zKc>!^I9Ng2s0gvJK{5o+$ixK`Yw2{k-vzeSD1rQ}l14QkM|)OwIz|RW@_6~7U&j~I zsBln~l?)UW)kmyQg73T=1`$#eu;fVIr5afERnQy~48^J#6Ze%`T#%6Q1$Jzr;@)a= zcC=JUHh5AjGDC`{-dvke0<5bu3?)e0ueycGoK51KYB-H7Kf!1zqR-{n{v0{8V3u0G zdcJ)B?tRuHoOp7&JA)!L^l-ke>o+U yQ15|4ikK1@HTe7_snE$@A# zi;hz!r;cOlX`cPqe&2<1MGEw&SUZ8<&!ZBbi)WC}(I4$huUWGfUtcsaR5+NGul^~X z_^JDX-egAS-ak$43k@OI&j#s;N`mS227%DUH7IoE20n|70 A3M&6nWdF#z!qe)RBwuq1 zPhVI~lAhRVX8*K;_dA-6*L7bYJv{{~z-19>+iW}*?@!pTYt#8>mJX*x1;Eb33Xc?A z86K*W2o~UM%aIh2nnPoRRV2(6C(%kmqe==)$&84%gjNNrjd8#-8V=tzj3F7nkTdFU zgOlO{it%7J4GqsW8bfD3ZmoGgyaSPv#F8fdH88|1)@VaEm=3~lIci-ppo zeIcsa1`g$^15FIV1;1C~cLo0#&*oeGNxC$bk^y k{omjwI@Ff^V4Hb)T{i=_p_iaN|DllJ&*iNw=`qc8+c&Sr zwT!K0cQA22vY{Y8Vi?R+UN;xhtDuQC^7tR|BUy0cdr9C)mhOp`Rvg9R5hVb0*2?}q z38{1w9al;+%2_mg^p2FR>duai&T9Mi^|x=QTh%92$0tJ~(^a6{($1Oplco2b*MRlc z?#tVT$11~8Pv?;Vav?TJ1@)EfTl5*>*B0#ulKL)~DNy~mi3yr|GBCQuqxI%K@QFN! zTPWy@AodT4h=d`-*&A3`#&Co)`^O;UZ_XX));JDL(jH5b?+qauv{=!da{rY*IIuR- zr74)<$M;&E72dkKwi9N#XMZJo8F2*Md$-SBmj$_U7%>uG04=DmAM(E(zEq92uII&0 ztO&L9@yu$Gwx+=`XKTwSJ3AXprefj0tVo`zz0{#b4_-0}4-emBrS*B5=yO_8SWnuB z8(s!NF*?Zk1gX|gnL-Y{HcIrP;qdo?{}kYq3wlB-Ny6O_)V} hXD=H;1!rRTa7TeFl3HULPv-4}nB8CF-!aLIGhfP<>;pVCovE&G`R8pe~ynb!!7#I$lt oirkW*#uyW(Lruxlg5S#%V;*IJ b&)Hft@i47%~2p=jwaEJ(1^h&*kY6doej D?hyeRFh zcU}S+=#)z`@lQP$Joy@(`b2$w*u~h*6i5q{1v44B)_-J&E^kdkGtMI&ODgH2i@nJ?Vqj} z+FC}ca?g5AlsK>r;l39e0I3BI*@^{+?=BR9Y dm(*7vKxh?$Mw)Pg78t=F=BeCsYc{(6zzv{NW@!KX%srp;{vn&T6 za<qOc0-fuh?%HWOHRUc(G|AzSk@lV9gn@Z>)WCO+ zrI%#Z^d>&4li=Zh*pp3F2FaEjk_SXcKVu(>b_Pk_NP!53hK5HSM&n^EIKwu4IPpP} zZd~7ejSo-k>jsWuX4eAnuZwVB(bFuUMEjP+{wh8$2(@RVF7;QgiF{u1tSUq}Z@vkZ zQ`5}(_3(ZVA|N%4*8SP07u%Ufk&ElH1Yd573NO9NpWn|h_56 mP zfXl(;_2Im9!IpfNW&caY^+{N8 Hb|ZA_7Fs^7aq_+V1zriLd^Q*=H%5VuC}ok zk)ZFVLf_>hUwz0vQKuzcxRWji2R9j wdl1oo(oZ7{%K+ce7R%0=XXAf{59u_$^ zRyO&IHVDgzgZRS3ibF83O%I#|;SV0hpNwG?Xd@=kBcze|m(aOw$s2?VMax=I+&kRA zza69W3`a8cLP{(D+4;;544+DH+V|z&027(L9N}<}{8`Kc@y^2yO{R-|2?hrE`0u{} zTrCp_ E_A9Fsl2>;=)(sbd8N?$`x~tj*q{gZ%YP$^$nd6;CCs& z_6b(<9dtXcmpj{}&iFsqy!}rr=lu_b MaEH9wj5_1&dQ!=bT&mF;_Hw2{`&gu{lokH!}IZczZS&Rdy{OPy9z>_wOMq% z2SzW#f00Pd8)c0C=iUvj>;bhahr1!>+7_3j_H%Q#3?I=>HH{0Qj=8hDJUqY15DXT* zSn@fnU(%Wcu}Uz*YUU`GSr;831Z_z vV6nD9fn?Try}PU{8%H#F1P-TAIhBhgyd7$B z{IE<^bGN00LxtJs>O%GlT)l};% J%-O0Wl?+1nYPqb-n7Uj zso6#jch`bBOk6_c*3|lk0^fdU+(CgOZ-4aUIeodPy-8p-NJ=XFtKiIa2)niBEHX!K zXV9PUQ9&aoMHIabnO(8DXCgZ0+aKNI+FfYwE{doYfeJSZ*Sz$*6D2CB{z}&Zj!lEv z+2m@s2ZSy+*eiV?ew%haKB~)o#WoYTl$3k2C;zi8f(e2UGjcF6Yjz|OtSpQDPkzZ~ z<_M?Z-9D)JjdO#>wH+XulSOpE=XRjSv)BWI4FjE6Hh$QK(Kn>D?~U6`z^lAYsL>pB zYC3J0n4LQW_5}qB8PGMR57clX@vruNR`Di*brB@@sGT=9HLIaz~8@{|KL)JjyS5k@Vw} z5Vp*(A8{L5F_bMF3I^R-eYw;ns?oISCafHu*r9esBM{~>&6iPG{Jo#(mnfbl%KHn7 zQbnI24SXAqrx4E^=ujp;(~1QMnf8R&Veb4Pf9MHZwCSabelR8qKulWb+3sM_mPY$K z=-oLz;OLiV$Pf+t_K(<4v^V>U^{9dROmX)~*t!w!nC kY*|-Rc%29F z2 Cv2jCXWlP_XD7OF{PgV3)~99e_Hdwh{G{@2B%vs#3r0=G%bq7t z7?sYX)u{W#gt+m*7D7@XQBErLf2^~#i-vL}^^o`w$EH$)K%OMw8^goH>vi@3z^yhp z%+q%*{{euOl5lHxZx_n&CBH22GFVfJ3J^KbSEQh% YCT6jXSKEGY zYay=Dvwu1t-guB$C6I|OIpsEFC0==(rqGyYs lq0+I`R@l^poiaG zgwHzuI+T>dGJ9!qHX79h>Sb^oAyi9sH7a%?FSjY9wvBnT*f7QkE)sDY{<%((A!ok1 zowUrHh727?>;I4yR4-%3S6j>Xst9S8AV>SY*~$)tAk~de@%IG6&R$RSt)=JqV4nq! z-6|z9XpKe}v}I-FNu9mDidU}P<~&_JK1UZvW5NV!66Cme$tDLru}|W>wBVs$>1k#v z8AdW!z!+DiWc`_-{gIiAP5^mt)z%?QI*0>3Ld?Q@SdimeAb08>k!68hd76dk&sQF_ z9*3KZEyH!OqqI8_Fs9-CvO-BL nRngYLPmmIHNc!KwR7Lj=sU$Xs#36R?TCpN$Yn*Cm1l%Vm`>fmF>~$7{%C%I> z=VpC0?}s%i+{-iNbUM%#>sxyohx3q&EBf(UqxC~)K;+(zK&r#7w#zj0D)Q3X<7)rp zv_yInE-jfO1L5+qK;|4;V#$I}^gsw(S?B82@!}G1uwl}UG$Hy3cSI$%5l4?rSkBqh zYNZi)9F?G-KHnBhKl}=b#Ymc-$n*%Rvlm>yrn&YOQ%6%c^l&GVShDZwvlYz-MsCVy zuY9kNfX#?yZ`yN8@_yd1%M$E;?E?qM*E?;5eO!C`RI)p4JATFW!ZQ;aL=}K2L{JDp z#h=7~DYq120;;GQ4x}G)CPO$>2bvI;?6kCGGI36z5Qf)P!bo8^`=H8WUswD&zSSdS z+OWOOQ~!s^2wplQ&R%UWf$Dy6SxFxY17)1vl}lvE%ehYP1}_nwiCQVvj?#lpnZ|?q z`}^XG*?MVWG|}ClmNT7&Irj9A26bC{1nw9_HHnRG5WP%BG3Lw16N9iwzreiUZF6y( z$$VlUtr%Wt-YLt6=iAH?3HQhbMn{IU1sB*&0xavC$4LA{%hYA3yQsUp&l&hD><(v+ zBD~q7{79Pv(?5E`|FpIg7`4~ulOnz%u16l1jRPpO2Q8>dU%nTVPv`2X8OVQ>B0{C~ z-I@4e(^JXB%xsN@nx^P&g{Q)|Z_M$%S-DEJ$iI{LZik|3Ogy$W=Ecm}MR-mq3)+rO zH*?I2-DJGq)C|T2l&aADQYfHnGpayuVu2*6pq8@--JFN-mwOueg+y1ABr1M=PHw`; zqIf(xt_>THz-4SNZrKZaFQH0M`aA&!rVJB<+`So}Yh2meRH-Bl z)-*+WVXCl}lA;!?rIqbCTv=}S?DHC8vv{N5aZQBo2tF?{G3g#UTQ6O-8^eYBLG?bA zWccT_ePFp?7Kei#&49MI6IqA1TIi9k%+)`!#w#h=b}3y=03nX#zw+A(Rs8%4KXfP} zwXE#59 vg5K4? &aePuV&@IjEQ;9`NhdzGw+TJ{t@-TyE413 z0dOv|gTB@BinJSobO3H1u)) b}@*S6(?F~@D5iLHC&bK zFytn&1WYJ00Q3Esk|=eRRaeJaFSTW_+jU#;Vfah&nGFoD1i4l}75wGff3Q}Q$0d@R znCK!g)ZVUz2cPp*pLg-+Q=pA9yzM#AcDW?)@AW6f;DFPz{7VMFxe>&Z$XzJ^yJVx= zm9oKW&LcQ@_B&b>3JRN(Q@^}CtqYs8WG9+Ec%#Dj;1An1l0#LCJ-Uoe_&YfgVPgU0 zsezFOYf^E=YJ~Od#FgW=A 1_8~?yp$nS zb;(n8!GGtc)=xQ_imd&qVYoWuLi2-%aO3gfDt~JAjsk+xIP;y|eNtIfRfYj*&&j{( z4b9H}t{6}9_yoaFGNo&KG_0m0<~B`$bYQ%Y(KL&WX(^<+Gqdzre!$WS1%x9v(c3<= zUXzv25QBk4eqLqT4a1CVT6H#{;n{~{6s(`Ebh!&g%)%_?k*mhmlZhOCey*VkdKewG z{SVDHA82V8W~BOE<_ia$hU`nBU#l59G|ZU^A4!zS)LjZDMVKsq6g*?#dMi^uQCnI6 z{wlzUgw6Ep_kbCv9hVI44CZVUyPE`qDt{;Pp!g}Y%JGc;UlWN{Q{O%9z$j!{qr-&W z=QU1mWY>hxMUjWBqE&QG*MvE{C%{t2x}4jX-n#Jr5nkQe(>!m7{JEWaU6ghMs%r|V I)^>^f9|nvnq5uE@ diff --git a/samples/HelloWorld/HelloWorld.vcxproj b/samples/HelloWorld/HelloWorld.vcxproj deleted file mode 100644 index 7b1b9e15..00000000 --- a/samples/HelloWorld/HelloWorld.vcxproj +++ /dev/null @@ -1,94 +0,0 @@ - - - \ No newline at end of file diff --git a/samples/HelloWorld/HelloWorld.vcxproj.filters b/samples/HelloWorld/HelloWorld.vcxproj.filters deleted file mode 100644 index 4327830c..00000000 --- a/samples/HelloWorld/HelloWorld.vcxproj.filters +++ /dev/null @@ -1,6 +0,0 @@ - -- -- -Debug -Win32 -- -Release -Win32 -- -{3561A359-F9FD-48AB-A977-34E7E568BC8E} -HelloWorld -- - -Application -true -Unicode -$(DefaultPlatformToolset) -- -Application -false -false -Unicode -$(DefaultPlatformToolset) -- - -- -- -- - -- - - -$(SolutionDir)\output\$(PlatformToolset)\$(Platform)\$(Configuration)\ -$(SolutionDir)\build\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\ -true -- -$(SolutionDir)\output\$(PlatformToolset)\$(Platform)\$(Configuration)\ -$(SolutionDir)\build\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\ -false -- -- - -Level3 -Disabled -true -true -../../src; -true -Windows - -- -- - -Level3 -MaxSpeed -true -true -true -true -../../src; -true -true -true -Windows - -- -- - -- -{ff7f943d-a89c-4e6c-97cf-84f7d8ff8edf} -- - -- \ No newline at end of file diff --git a/samples/HelloWorld/main.cpp b/samples/HelloWorld/main.cpp deleted file mode 100644 index 6f90bad6..00000000 --- a/samples/HelloWorld/main.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2019 Nomango - -#include "kiwano/kiwano.h" - -using namespace kiwano; - -class MainScene - : public Scene -{ -public: - MainScene() - { - TextPtr text = new Text(L"Hello Kiwano!"); // ֽڵ - text->SetSize(text->GetLayoutSize()); // ýڵСΪֲִС - text->SetPosition(640 / 2, 480 / 2); // Ľڵλ, ʹڵĻϾ - text->SetAnchor(0.5, 0.5); // Ľڵê, ʹĶĻ - this->AddChild(text); // ӵ - } -}; - -int WINAPI wWinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ PWSTR, _In_ int) -{ - // Kiwano ʵ - Application app; - - // ڳʼѡôڿ - Options options; - options.width = 640; - options.height = 480; - - // ʼ app - app.Init(options); - - // - ScenePtr scene = new MainScene; - app.EnterScene(scene); - - // - app.Run(); - return 0; -} diff --git a/samples/ImGuiSample/.gitignore b/samples/ImGuiSample/.gitignore deleted file mode 100644 index 56a9edce..00000000 --- a/samples/ImGuiSample/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# ImGui Configuration -imgui.ini \ No newline at end of file diff --git a/samples/ImGuiSample/ImGuiSample.vcxproj b/samples/ImGuiSample/ImGuiSample.vcxproj deleted file mode 100644 index f6245f56..00000000 --- a/samples/ImGuiSample/ImGuiSample.vcxproj +++ /dev/null @@ -1,98 +0,0 @@ - -- -- - \ No newline at end of file diff --git a/samples/ImGuiSample/ImGuiSample.vcxproj.filters b/samples/ImGuiSample/ImGuiSample.vcxproj.filters deleted file mode 100644 index f3f6c7df..00000000 --- a/samples/ImGuiSample/ImGuiSample.vcxproj.filters +++ /dev/null @@ -1,9 +0,0 @@ - -- -- -Debug -Win32 -- -Release -Win32 -- -{6152D36C-EA40-4968-A696-244B6CA58395} -ImGuiSample -- - -Application -true -Unicode -$(DefaultPlatformToolset) -- -Application -false -false -Unicode -$(DefaultPlatformToolset) -- - -- -- -- - -- - - -$(SolutionDir)\output\$(PlatformToolset)\$(Platform)\$(Configuration)\ -$(SolutionDir)\build\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\ -true -- -$(SolutionDir)\output\$(PlatformToolset)\$(Platform)\$(Configuration)\ -$(SolutionDir)\build\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\ -false -- -- - -Level3 -Disabled -true -../../src; -true -Windows - -- -- - -Level3 -MaxSpeed -true -true -true -../../src; -true -true -true -Windows - -- -- - -- -{a7062ed8-8910-48a5-a3bc-c1612672571f} -- -{ff7f943d-a89c-4e6c-97cf-84f7d8ff8edf} -- -- - - -- \ No newline at end of file diff --git a/samples/ImGuiSample/MainScene.h b/samples/ImGuiSample/MainScene.h deleted file mode 100644 index c2e96205..00000000 --- a/samples/ImGuiSample/MainScene.h +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once - -#include "kiwano/kiwano.h" -#include "kiwano-imgui/kiwano-imgui.h" - -using namespace kiwano; -using namespace kiwano::imgui; - -KGE_DECLARE_SMART_PTR(MainScene); -class MainScene - : public Scene -{ - bool show_demo_window = true; - bool show_another_window = false; - Color clear_color = Color(0.45f, 0.55f, 0.6f, 1.f); - -public: - MainScene() - { - // ImGui ͼ - ImGuiLayerPtr layer = new ImGuiLayer; - AddChild(layer); - - // ImGui ṩ Demo - layer->AddItem([=]() { - if (show_demo_window) - ImGui::ShowDemoWindow(&show_demo_window); - }, L"DemoWindow"); - - // һ - layer->AddItem(MakeClosure(this, &MainScene::SimpleWindow), L"SimpleWindow"); - - // һ - layer->AddItem(MakeClosure(this, &MainScene::AnotherWindow), L"AnotherWindow"); - } - - void SimpleWindow() - { - static float f = 0.0f; - static int counter = 0; - - ImGui::Begin("Hello, world!"); - - ImGui::Text("This is some useful text."); - ImGui::Checkbox("Demo Window", &show_demo_window); - ImGui::Checkbox("Another Window", &show_another_window); - - ImGui::SliderFloat("float", &f, 0.0f, 1.0f); - ImGui::ColorEdit3("clear color", (float*)&clear_color); - - if (ImGui::Button("Button")) - counter++; - ImGui::SameLine(); - ImGui::Text("counter = %d", counter); - - ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); - ImGui::End(); - - // Ĵڱɫ - Renderer::Instance()->SetClearColor(clear_color); - } - - void AnotherWindow() - { - if (show_another_window) - { - ImGui::Begin("Another Window", &show_another_window); - ImGui::Text("Hello from another window!"); - if (ImGui::Button("Close Me")) - show_another_window = false; - ImGui::End(); - } - } -}; diff --git a/samples/ImGuiSample/main.cpp b/samples/ImGuiSample/main.cpp deleted file mode 100644 index 1d235d7f..00000000 --- a/samples/ImGuiSample/main.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2019 Nomango - -#include "MainScene.h" - -using namespace kiwano; - -class ImGuiApp - : public Application -{ -public: - ImGuiApp() - { - // ImGui - Use(ImGuiModule::Instance()); - - // ʼ - Options options(L"ImGui Demo", 1280, 800); - Init(options); - } - - void OnStart() override - { - MainScenePtr scene = new MainScene; - EnterScene(scene); - } -}; - -int WINAPI wWinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ PWSTR, _In_ int) -{ - try - { - ImGuiApp app; - app.Run(); - } - catch (std::exception& e) - { - ::MessageBoxA(nullptr, e.what(), "An exception has occurred!", MB_ICONERROR | MB_OK); - } - return 0; -} diff --git a/samples/Samples.sln b/samples/Samples.sln deleted file mode 100644 index d3cda943..00000000 --- a/samples/Samples.sln +++ /dev/null @@ -1,75 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28729.10 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloWorld", "HelloWorld\HelloWorld.vcxproj", "{3561A359-F9FD-48AB-A977-34E7E568BC8E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Samples", "Samples\Samples.vcxproj", "{45F5738D-CDF2-4024-974D-25B64F9043DE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGuiSample", "ImGuiSample\ImGuiSample.vcxproj", "{6152D36C-EA40-4968-A696-244B6CA58395}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Box2DSample", "Box2DSample\Box2DSample.vcxproj", "{324CFF47-4EB2-499A-BE5F-53A82E3BA14B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwano", "..\projects\kiwano.vcxproj", "{FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwano-audio", "..\projects\kiwano-audio.vcxproj", "{1B97937D-8184-426C-BE71-29A163DC76C9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwano-network", "..\projects\kiwano-network.vcxproj", "{69DFBE92-C06F-4CF8-9495-CA9BF2E3BAF2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "kiwano-imgui", "..\projects\kiwano-imgui.vcxproj", "{A7062ED8-8910-48A5-A3BC-C1612672571F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{44D7EDE1-8C27-4608-8018-F891280A77B2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|Win32.ActiveCfg = Debug|Win32 - {3561A359-F9FD-48AB-A977-34E7E568BC8E}.Debug|Win32.Build.0 = Debug|Win32 - {3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|Win32.ActiveCfg = Release|Win32 - {3561A359-F9FD-48AB-A977-34E7E568BC8E}.Release|Win32.Build.0 = Release|Win32 - {FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.ActiveCfg = Debug|Win32 - {FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.Build.0 = Debug|Win32 - {FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Debug|Win32.Deploy.0 = Debug|Win32 - {FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|Win32.ActiveCfg = Release|Win32 - {FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF}.Release|Win32.Build.0 = Release|Win32 - {45F5738D-CDF2-4024-974D-25B64F9043DE}.Debug|Win32.ActiveCfg = Debug|Win32 - {45F5738D-CDF2-4024-974D-25B64F9043DE}.Debug|Win32.Build.0 = Debug|Win32 - {45F5738D-CDF2-4024-974D-25B64F9043DE}.Release|Win32.ActiveCfg = Release|Win32 - {45F5738D-CDF2-4024-974D-25B64F9043DE}.Release|Win32.Build.0 = Release|Win32 - {6152D36C-EA40-4968-A696-244B6CA58395}.Debug|Win32.ActiveCfg = Debug|Win32 - {6152D36C-EA40-4968-A696-244B6CA58395}.Debug|Win32.Build.0 = Debug|Win32 - {6152D36C-EA40-4968-A696-244B6CA58395}.Release|Win32.ActiveCfg = Release|Win32 - {6152D36C-EA40-4968-A696-244B6CA58395}.Release|Win32.Build.0 = Release|Win32 - {324CFF47-4EB2-499A-BE5F-53A82E3BA14B}.Debug|Win32.ActiveCfg = Debug|Win32 - {324CFF47-4EB2-499A-BE5F-53A82E3BA14B}.Debug|Win32.Build.0 = Debug|Win32 - {324CFF47-4EB2-499A-BE5F-53A82E3BA14B}.Release|Win32.ActiveCfg = Release|Win32 - {324CFF47-4EB2-499A-BE5F-53A82E3BA14B}.Release|Win32.Build.0 = Release|Win32 - {1B97937D-8184-426C-BE71-29A163DC76C9}.Debug|Win32.ActiveCfg = Debug|Win32 - {1B97937D-8184-426C-BE71-29A163DC76C9}.Debug|Win32.Build.0 = Debug|Win32 - {1B97937D-8184-426C-BE71-29A163DC76C9}.Release|Win32.ActiveCfg = Release|Win32 - {1B97937D-8184-426C-BE71-29A163DC76C9}.Release|Win32.Build.0 = Release|Win32 - {69DFBE92-C06F-4CF8-9495-CA9BF2E3BAF2}.Debug|Win32.ActiveCfg = Debug|Win32 - {69DFBE92-C06F-4CF8-9495-CA9BF2E3BAF2}.Debug|Win32.Build.0 = Debug|Win32 - {69DFBE92-C06F-4CF8-9495-CA9BF2E3BAF2}.Release|Win32.ActiveCfg = Release|Win32 - {69DFBE92-C06F-4CF8-9495-CA9BF2E3BAF2}.Release|Win32.Build.0 = Release|Win32 - {A7062ED8-8910-48A5-A3BC-C1612672571F}.Debug|Win32.ActiveCfg = Debug|Win32 - {A7062ED8-8910-48A5-A3BC-C1612672571F}.Debug|Win32.Build.0 = Debug|Win32 - {A7062ED8-8910-48A5-A3BC-C1612672571F}.Release|Win32.ActiveCfg = Release|Win32 - {A7062ED8-8910-48A5-A3BC-C1612672571F}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {FF7F943D-A89C-4E6C-97CF-84F7D8FF8EDF} = {44D7EDE1-8C27-4608-8018-F891280A77B2} - {1B97937D-8184-426C-BE71-29A163DC76C9} = {44D7EDE1-8C27-4608-8018-F891280A77B2} - {69DFBE92-C06F-4CF8-9495-CA9BF2E3BAF2} = {44D7EDE1-8C27-4608-8018-F891280A77B2} - {A7062ED8-8910-48A5-A3BC-C1612672571F} = {44D7EDE1-8C27-4608-8018-F891280A77B2} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {FAC2BE2F-19AF-477A-8DC6-4645E66868A4} - EndGlobalSection -EndGlobal diff --git a/samples/Samples/Demo1.h b/samples/Samples/Demo1.h deleted file mode 100644 index 4bc7472d..00000000 --- a/samples/Samples/Demo1.h +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once -#include "common.h" - -class Demo1 - : public Scene -{ -public: - static ScenePtr Create() - { - return new Demo1; - } - - Demo1() - { - // ȡͼƬ - ImagePtr man_image = g_Loader.GetImage(L"man"); - - // - auto ease_functions = { - Ease::Linear, // Ա仯 - Ease::EaseInOut, // 仯л - Ease::ExpoInOut, // ڿʼͽηdz̷dz - Ease::BounceInOut, // ڿʼͽξ赯 - Ease::BackInOut // ʼͽξһݵķ˶ - }; - - float height = 100.f; - for (auto& func : ease_functions) - { - SpritePtr man = new Sprite(man_image); - man->SetPosition(100, height); - man->SetScale(0.5f, 0.3f); - this->AddChild(man); - - // λú - auto reset_pos = [ptr = man.Get()]() { ptr->Move(-350, 0); }; - - // ִж - man->AddAction( - Tween::Group({ // Tween::Group ϶ - Tween::MoveBy(Point{ 350, 0 }) // Tween::MoveBy λ 350 - .SetDuration(4000) // λʱΪ 4 - .SetEaseFunc(func), // û - Tween::Delay(1000) // Tween::Delay ӳ 1 - }) - .SetLoops(-1) // ѭִ - .SetLoopDoneCallback(reset_pos) // ÿѭλ - ); - - height += 60.f; - } - } -}; diff --git a/samples/Samples/Demo2.h b/samples/Samples/Demo2.h deleted file mode 100644 index 1cc1832e..00000000 --- a/samples/Samples/Demo2.h +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once -#include "common.h" - -// ɫ -KGE_DECLARE_SMART_PTR(Hero); -class Hero - : public GifSprite -{ -public: - Hero(GifImagePtr image) - { - // ͼƬ - Load(image); - // GIF ͼѭ - SetLoopCount(-1); - } - - // ÿ֡Ⱦǰִ OnUpdate - void OnUpdate(Duration dt) override - { - // ȡ豸 - auto input = Input::Instance(); - - // Ҽ - if (input->IsDown(KeyCode::Left)) - { - this->Move(-2, 0); - } - else if (input->IsDown(KeyCode::Right)) - { - this->Move(2, 0); - } - - // ¼ - if (input->IsDown(KeyCode::Up)) - { - this->Move(0, -2); - } - else if (input->IsDown(KeyCode::Down)) - { - this->Move(0, 2); - } - - // ˳ʱתɫ - if (input->IsDown(MouseButton::Left)) - { - // ȡǰתǶ - float rotation = this->GetRotation(); - // ýǶֵ+2 - this->SetRotation(rotation + 2); - } - - // Ҽػʾɫ - if (input->WasPressed(MouseButton::Right)) - { - // ȡǰʾ״̬ - bool visible = this->IsVisible(); - // ෴ʾ״̬ - this->SetVisible(!visible); - } - } -}; - -class Demo2 - : public Scene -{ -public: - static ScenePtr Create() - { - return new Demo2; - } - - Demo2() - { - // ɫ - HeroPtr hero = new Hero(g_Loader.GetGifImage(L"Kusanagi")); - // ĻϾʾ - hero->SetAnchor(0.5f, 0.5f); - hero->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2); - - // ˵ - TextPtr text = new Text(L"Ҽƶ\nת\nҼ"); - // ýڵСΪֲִС - text->SetSize(text->GetLayoutSize()); - // λ - text->SetAnchor(0.5f, 0.5f); - text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT - 50); - text->SetAlignment(TextAlign::Center); - - // ӵ - this->AddChild(hero); - this->AddChild(text); - } -}; diff --git a/samples/Samples/Demo3.h b/samples/Samples/Demo3.h deleted file mode 100644 index 2ea0073f..00000000 --- a/samples/Samples/Demo3.h +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once -#include "common.h" - -class Demo3 - : public Scene -{ - SoundPtr bgmusic; // ֶ - TextPtr volume_text; // - TextPtr state_text; // ״̬ - -public: - static ScenePtr Create() - { - return new Demo3; - } - - Demo3() - { - // - bgmusic = new Sound; - if (!bgmusic->Load(L"res/splash.mp3")) - { - bgmusic = nullptr; - - TextPtr err = new Text(L"Ƶļʧ"); - this->AddChild(err); - } - - // ֣òѭ-1 ʾѭţ - bgmusic->Play(-1); - - // ˵ - TextPtr intro_text = new Text(L"¼\nոͣ"); - intro_text->SetPosition(WINDOW_WIDTH / 2 - 80, WINDOW_HEIGHT / 2 - 50); - - // - volume_text = new Text(L"ǰ"); - volume_text->SetPosition(WINDOW_WIDTH / 2 - 80, WINDOW_HEIGHT / 2 + 30); - - // ״̬ - state_text = new Text(L"ǰ״̬"); - state_text->SetPosition(WINDOW_WIDTH / 2 - 80, WINDOW_HEIGHT / 2 + 60); - - // ӵ - this->AddChild(intro_text); - this->AddChild(volume_text); - this->AddChild(state_text); - } - - void OnUpdate(Duration dt) override - { - if (bgmusic == nullptr) - return; - - // ȡͲ״̬ - float volume = bgmusic->GetVolume(); - bool playing = bgmusic->IsPlaying(); - - // ı - volume_text->SetText(L"ǰ" + std::to_wstring(volume)); - state_text->SetText(playing ? L"ǰ״̬ڲ" : L"ǰ״ֹ̬ͣ"); - - // ȡ豸 - auto input = Input::Instance(); - - // ոͣ - if (input->WasPressed(KeyCode::Space)) - { - bgmusic->IsPlaying() ? bgmusic->Pause() : bgmusic->Resume(); - } - - // ¼ - if (input->WasPressed(KeyCode::Up)) - { - bgmusic->SetVolume(volume + 0.1f); - } - else if (input->WasPressed(KeyCode::Down)) - { - bgmusic->SetVolume(volume - 0.1f); - } - } -}; diff --git a/samples/Samples/Demo4.h b/samples/Samples/Demo4.h deleted file mode 100644 index 132e09fc..00000000 --- a/samples/Samples/Demo4.h +++ /dev/null @@ -1,178 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once -#include "common.h" - -// ϻ -KGE_DECLARE_SMART_PTR(Tiger); -class Tiger - : public Sprite -{ - FramesPtr run_frames; // ܲ֡ - FramesPtr stand_frames; // վ֡ - bool facing_left; // 泯泯 - bool running; // Ƿܲ - Direction running_direction; // ܲ - -public: - Tiger() - { - // ֡ - run_frames = g_Loader.GetFrames(L"tiger_running"); - stand_frames = g_Loader.GetFrames(L"tiger_standing"); - - // ִж - AddAction( - Tween::Animation(stand_frames) - .SetDuration(1000) - .SetLoops(-1) - ); - - // Ӱ - AddListener(Event::KeyDown, MakeClosure(this, &Tiger::OnKeyDown)); - AddListener(Event::KeyUp, MakeClosure(this, &Tiger::OnKeyUp)); - - // ĬϷΪ Left - facing_left = true; - running = false; - - // ê - SetAnchor(0.5f, 0.5f); - } - - void OnKeyDown(Event const& e) - { - if (e.key.code == KeyCode::Left) - Run(Direction::Left); - else if (e.key.code == KeyCode::Right) - Run(Direction::Right); - else if (e.key.code == KeyCode::Up) - Run(Direction::Up); - else if (e.key.code == KeyCode::Down) - Run(Direction::Down); - } - - void OnKeyUp(Event const& e) - { - switch (e.key.code) - { - case KeyCode::Left: - case KeyCode::Right: - case KeyCode::Up: - case KeyCode::Down: - StopRun(); - break; - } - } - - void Run(Direction d) - { - if (!running) - { - running = true; - StopAllActions(); - - // ִܲ - AddAction( - Tween::Animation(run_frames) - .SetDuration(500) - .SetLoops(-1) - ); - } - - running_direction = d; - if (running_direction == Direction::Left) - { - facing_left = true; - } - else if (running_direction == Direction::Right) - { - facing_left = false; - } - - // ſԵͼƬʾ - // -1 ͼƬᷴת - SetScaleX(facing_left ? 1.0f : -1.0f); - } - - void StopRun() - { - if (running) - { - running = false; - StopAllActions(); - - // ִվ - AddAction( - Tween::Animation(stand_frames) - .SetDuration(1000) - .SetLoops(-1) - ); - } - } - - void OnUpdate(Duration dt) - { - if (running) - { - // ƶ - // OnUpdate һȶִеĺ, ʵȶ - // ÿƶ 150 , Ӧ dt ƶ - const float moving_per_sec = 150; - const float distance = moving_per_sec * dt.Seconds(); - - switch (running_direction) - { - case Direction::Up: - Move(0, -distance); - break; - case Direction::Down: - Move(0, distance); - break; - case Direction::Left: - Move(-distance, 0); - break; - case Direction::Right: - Move(distance, 0); - break; - } - } - } -}; - -class Demo4 - : public Scene -{ -public: - static ScenePtr Create() - { - return new Demo4; - } - - Demo4() - { - // - SpritePtr bg = new Sprite(L"res/spring_forest.jpg"); - bg->SetSize(GetSize()); - - // ϻ - TigerPtr tiger = new Tiger; - // ĻϾʾ - tiger->SetAnchor(0.5f, 0.5f); - tiger->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2); - - // ˵ - TextPtr text = new Text(L"Ҽƶ"); - // ýڵСΪֲִС - text->SetSize(text->GetLayoutSize()); - // λ - text->SetAnchor(0.5f, 0.5f); - text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT - 80); - text->SetAlignment(TextAlign::Center); - - // ӵ - this->AddChild(bg); - this->AddChild(tiger); - this->AddChild(text); - } -}; diff --git a/samples/Samples/Demo5.h b/samples/Samples/Demo5.h deleted file mode 100644 index 2fbd918e..00000000 --- a/samples/Samples/Demo5.h +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once -#include "common.h" -#include- -- - -- - -class Demo5 - : public Scene -{ -public: - static ScenePtr Create() - { - return new Demo5; - } - - Demo5() - { - // Ӱ - AddListener(Event::KeyDown, MakeClosure(this, &Demo5::OnKeyDown)); - - // ˵ - TextPtr text = new Text(L"GGET\nPPOST\nUPUT\nDDELETE"); - // ýڵСΪֲִС - text->SetSize(text->GetLayoutSize()); - // λ - text->SetAnchor(0.5f, 0.5f); - text->SetPosition(WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2); - - // ӵ - this->AddChild(text); - } - - void OnEnter() override - { - // 볡ʱ̨ - Logger::Instance()->ShowConsole(true); - } - - void OnExit() override - { - // ˳ʱرտ̨ - Logger::Instance()->ShowConsole(false); - } - - void OnKeyDown(Event const& e) - { - // ͬͲͬ - if (e.key.code == KeyCode::G) - { - SendGetRequest(); - } - else if (e.key.code == KeyCode::P) - { - SendPostRequest(); - } - else if (e.key.code == KeyCode::U) - { - SendPutRequest(); - } - else if (e.key.code == KeyCode::D) - { - SendDeleteRequest(); - } - } - - void SendGetRequest() - { - // GET - Logger::Instance()->Println(L"Start to send GET request..."); - - HttpRequestPtr request = new HttpRequest; - // URL - request->SetUrl(L"http://httpbin.org/get"); - // Ϊ GET - request->SetType(HttpRequest::Type::Get); - // ɺĻص - request->SetResponseCallback(MakeClosure(this, &Demo5::Complete)); - - // HTTP - HttpClient::Instance()->Send(request); - } - - void SendPostRequest() - { - // POST - Logger::Instance()->Println(L"Start to send POST request..."); - - // JSON ʽ POST - Json request_data = { - { L"string", L"test" }, - { L"boolean", true }, - { L"integer", 12 }, - { L"float", 3.125 }, - { L"array", { 1, 2, 3, 4, 4.5 } }, - { L"object", { L"key", L"value" } }, - }; - - HttpRequestPtr request = new HttpRequest; - request->SetUrl(L"http://httpbin.org/post"); - request->SetType(HttpRequest::Type::Post); - // POST - request->SetJsonData(request_data); - request->SetResponseCallback(MakeClosure(this, &Demo5::Complete)); - - HttpClient::Instance()->Send(request); - } - - void SendPutRequest() - { - // PUT - Logger::Instance()->Println(L"Start to send PUT request..."); - - // JSON ʽ PUT - Json request_data = Json::array({ 1, 2, 3 }); - - HttpRequestPtr request = new HttpRequest; - request->SetUrl(L"http://httpbin.org/put"); - request->SetType(HttpRequest::Type::Put); - // PUT - request->SetJsonData(request_data); - request->SetResponseCallback(MakeClosure(this, &Demo5::Complete)); - - HttpClient::Instance()->Send(request); - } - - void SendDeleteRequest() - { - // DELETE - Logger::Instance()->Println(L"Start to send DELETE request..."); - - HttpRequestPtr request = new HttpRequest; - request->SetUrl(L"http://httpbin.org/delete"); - request->SetType(HttpRequest::Type::Delete); - request->SetResponseCallback(MakeClosure(this, &Demo5::Complete)); - - HttpClient::Instance()->Send(request); - } - - void Complete(HttpRequestPtr request, HttpResponsePtr response) - { - // жǷɹ - if (response->IsSucceed()) - { - try - { - // ȡݽ JSON ʽ - Json response_data = Json::parse(response->GetData()); - Json result = { - {L"HttpCode", response->GetResponseCode()}, - {L"Data", response_data}, - }; - - std::wcout << L"Response: " << std::endl << result.dump(4) << std::endl; - } - catch (json_exception& e) - { - std::wcout << L"Parse JSON failed: " << e.what() << std::endl; - } - } - else - { - // ʧʱӡϢ - OutputError(response); - } - } - - void OutputError(HttpResponsePtr response) - { - // ӡ HTTP Ӧ״̬ʹϢ - Json result = { - {L"HttpCode", response->GetResponseCode()}, - {L"Error", response->GetError()}, - }; - std::wcout << L"Response: " << std::endl << result.dump(4) << std::endl; - } -}; diff --git a/samples/Samples/Samples.rc b/samples/Samples/Samples.rc deleted file mode 100644 index ede40d6b74a534ebb385850fc1d3c82bb40ea39c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3252 zcmd5;+l~@J5IxUE|DlDK-ROdsFOZ8kk!3eKKr|sC8(3BnZec)U)(7AGYF*FireT(u zLB*FzXQsNVtGcVI>vsREj4}+)F~$H(%n|V$VMSb*xCm=pW5QJx&o~Tjaf2DZCGji5 zA#qDW@vS) N!+aYXNU-TG9Cr_=Dx{l{OJ0x9&w>h4D3dL~1 z7``M$KzRdl)%JADes$f{rDpH9T={y_xHSHKJ Rq+D=JNHws%#n?(?>^d%&t8P=$sFR4u>Ew>M zmL#g3l1Dr`b;6;J =2hm5@zSq8KXe)n(W<@@2-=60~9-kumAu6 diff --git a/samples/Samples/Samples.vcxproj b/samples/Samples/Samples.vcxproj deleted file mode 100644 index 03a89aa4..00000000 --- a/samples/Samples/Samples.vcxproj +++ /dev/null @@ -1,133 +0,0 @@ - - - \ No newline at end of file diff --git a/samples/Samples/Samples.vcxproj.filters b/samples/Samples/Samples.vcxproj.filters deleted file mode 100644 index 744661bb..00000000 --- a/samples/Samples/Samples.vcxproj.filters +++ /dev/null @@ -1,57 +0,0 @@ - -- -- -Debug -Win32 -- -Release -Win32 -- -{45F5738D-CDF2-4024-974D-25B64F9043DE} -Samples -- - -Application -true -Unicode -$(DefaultPlatformToolset) -- -Application -false -false -Unicode -$(DefaultPlatformToolset) -- - -- -- -- - -- - - -$(SolutionDir)\output\$(PlatformToolset)\$(Platform)\$(Configuration)\ -$(SolutionDir)\build\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\ -true -- -$(SolutionDir)\output\$(PlatformToolset)\$(Platform)\$(Configuration)\ -$(SolutionDir)\build\$(PlatformToolset)\$(Platform)\$(Configuration)\$(ProjectName)\ -false -- -- - -Level3 -Disabled -true -../../src; -true -Windows - -- -- xcopy "$(ProjectDir)\res" "$(OutDir)\res\" /D /E /I /F /Y - xcopy "$(ProjectDir)..\..\src\kiwano-network\dlls\*.dll" "$(OutDir)" /D /Y - -Copy files -- -- - -Level3 -MaxSpeed -true -true -true -../../src; -true -true -true -Windows - -- -- xcopy "$(ProjectDir)\res" "$(OutDir)\res\" /D /E /I /F /Y - xcopy "$(ProjectDir)..\..\src\kiwano-network\dlls\*.dll" "$(OutDir)" /D /Y - -Copy files -- -- - -- - - - - - - - -- -{1b97937d-8184-426c-be71-29a163dc76c9} -- -{69dfbe92-c06f-4cf8-9495-ca9bf2e3baf2} -- -{ff7f943d-a89c-4e6c-97cf-84f7d8ff8edf} -- -- - -- - -- - -- - - -- \ No newline at end of file diff --git a/samples/Samples/common.h b/samples/Samples/common.h deleted file mode 100644 index 93c3750a..00000000 --- a/samples/Samples/common.h +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (C) 2019 Nomango - -#pragma once -#include "kiwano/kiwano.h" -#include "kiwano-audio/kiwano-audio.h" -#include "kiwano-network/kiwano-network.h" - -using namespace kiwano; -using namespace kiwano::audio; -using namespace kiwano::network; - -const int WINDOW_WIDTH = 640; -const int WINDOW_HEIGHT = 480; - -// Դع -extern ResLoader g_Loader; diff --git a/samples/Samples/main.cpp b/samples/Samples/main.cpp deleted file mode 100644 index 071b1955..00000000 --- a/samples/Samples/main.cpp +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (C) 2019 Nomango - -#include "Demo1.h" -#include "Demo2.h" -#include "Demo3.h" -#include "Demo4.h" -#include "Demo5.h" -#include "resource.h" - -namespace -{ - struct Demo - { - String title; - ScenePtr(*Create)(); - }; - - Demo s_Demos[] = { - { L"ʾ", Demo1::Create }, - { L"ʾ", Demo2::Create }, - { L"Ƶʾ", Demo3::Create }, - { L"֡ʾ", Demo4::Create }, - { L"ʾ", Demo5::Create }, - }; - int s_CurrIndex = -1; - int s_DemoNum = sizeof(s_Demos) / sizeof(Demo); -} - -// Դع -ResLoader g_Loader; - -class DemoApp - : public Application -{ -public: - DemoApp() - { - // ʹ Audio - Use(Audio::Instance()); - - // ʹ HttpClient - Use(HttpClient::Instance()); - - Options options(L"Kiwanoʾ", WINDOW_WIDTH, WINDOW_HEIGHT, MAKEINTRESOURCE(IDI_ICON1)); - Init(options); - } - - void OnStart() override - { - // JSON ļжȡԴϢ - //g_Loader.LoadFromJsonFile(L"res/index.json"); - - // XML ļжȡԴϢ - g_Loader.LoadFromXmlFile(L"res/index.xml"); - - // лһ - ChangeDemoScene(0); - } - - void OnDestroy() override - { - // ˳ϷʱԴ - g_Loader.Destroy(); - } - - void ChangeDemoScene(int index) - { - if (s_CurrIndex != index) - { - s_CurrIndex = index; - - String title = s_Demos[index].title; - Window::Instance()->SetTitle(L"Kiwanoʾ - " + title); - - ScenePtr scene = s_Demos[index].Create(); - EnterScene(scene); - - // Ӱ - scene->AddListener(Event::KeyUp, MakeClosure(this, &DemoApp::KeyPressed)); - - // ʾʾ - String intro_str = String::format(L" 1~%d лʾ\n", s_DemoNum); - TextPtr intro = new Text(intro_str + title); - intro->SetFontSize(16.f); - intro->SetPosition(10, 10); - scene->AddChild(intro); - } - } - - void KeyPressed(Event const& evt) - { - KGE_ASSERT(evt.type == Event::KeyUp); - - if (evt.key.code > KeyCode::Num0 && - evt.key.code <= (KeyCode::Num0 + s_DemoNum)) - { - int index = evt.key.code - KeyCode::Num1; - ChangeDemoScene(index); - } - } -}; - -int WINAPI wWinMain(_In_ HINSTANCE, _In_opt_ HINSTANCE, _In_ PWSTR, _In_ int) -{ - try - { - DemoApp app; - app.Run(); - } - catch (std::exception& e) - { - ::MessageBoxA(nullptr, e.what(), "An exception has occurred!", MB_ICONERROR | MB_OK); - } - return 0; -} diff --git a/samples/Samples/res/Kusanagi.gif b/samples/Samples/res/Kusanagi.gif deleted file mode 100644 index a412cf1a02fc02c16b71eac3fb306448a2e87c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54460 zcmbr_S5Q-5;OP4#v`_^>2u(p0=|)890yesW0#X%~5~^6}Ed&x0LJ2*E5_;$zLJv(k zB0V&ts00wj9zgTE{_nXn_dK7oX3y+Bv)9AgZ)-m5yG_k+>gYa91?&UL0RL-%!2kdl z02T&=A^&p;3kyRaN^(kIVI?p`Nmy7(7@`D$Kq10V2t*Ddrvs6blY>Czgq3ulI!ban zN>F1th?$(QF;vbB3blbM*%(7@jCG97jE!x~%xr9I935e1#xOH8VKX?~Ob!i$QG(1U z?(Q?Nu!b<|C>%D^5XQg-k- -- - -- -src -- -src -- -src -- -src -- -src -- -src -- -resources -- -- -{4460eeec-9e2f-46b6-909a-5ff4443075ce} -- -{04b65e7e-f0ce-4b83-a73e-501913daf790} -- -- -resources -- -- -resources -- -- -resources -- -- -resources -}7tzOP2(!{4y<)aROa*qm+5hT!t77EKo6eZn{-fHcxZv1?TS5r* zb0pR@F+v)LiBC@E&&f%Bfs+mv!V{9RlDW8Yg$SgGGX9Fp;)K#tJdu?5qPjMuKBlp; zhSK`Hx39A+w5Pm+{Gy^c;$>J*(^yADP1H=#>}+mZ)WUOV`jgdJK>wSx&A?R%q!f^d zJG~Li1!#%h^_zt#DSdh8#<*U;fs6$3C2Y2&JvblxAHbEQP%Kvw3E}7TW8%cFiyc2U zR;~2zL2~AW jOzpzo|#(#r7{$=b)RDZ z9Nc!|aQw{tEwKwxpc7K&4_=?K;zBRDzeA;zS f{~{#AqG_NRl$*xW1y_=~-QAt(PQ>Ajj9(iEspqc=yiXxH ) zocmmIH?d+gi4n6#mgxY09pTv1D=u*_1bu?Pr(z7FbUW3f*fMWUQ}n;rs8wtnyZz7s z_~=W~i8l|IB==oHD2?2&jFf+b&c 8lg8I z#vFNa+1Qo6&~bOCVyKed3;o(I@y9^9vIb8o(N~ei3vd&c(lAyLu&F tqOQ~4LAR!kuO4( ^ zAgsi*-On!ga7VhKL-uEq*VsV2ZveYCgj?4AQITAA%c-CU00&~@XBuER=A)l?U(=CV zRI!1x3W8gRd)=1E3#WCp`>H(2lQ`V0^*%y%eWJ($tjrtZF-pe$=C)h4WPw;4zt*33 zl+N*qo-2342&(y!0Fp