From a6bb83f355db81553ecfbcd3ff7268f357179fdb Mon Sep 17 00:00:00 2001 From: Milang Date: Tue, 4 Feb 2020 20:12:17 +0100 Subject: [PATCH] add plateforms as complete physical objects there are no max coordinates any longer, but now thay can fall, and there is a better support with mario (not complete yet) --- SuperCbr.g1a | Bin 60804 -> 63720 bytes assets-fx/bin/lvl_1_3.png | Bin 0 -> 3018 bytes assets-fx/icon-fx.png-autosave.kra | Bin 0 -> 23256 bytes assets-fx/icon-fx.png~ | Bin 0 -> 7120 bytes assets-fx/img/{tree.png => arbre.png} | Bin include/plateforme.h | 12 ++-- include/tile.h | 1 + include/world.h | 40 +++++++---- levelconverter/1-3.png~ | Bin 0 -> 1189 bytes levelconverter/1_1.png | Bin 1033 -> 1157 bytes levelconverter/1_1.png~ | Bin 0 -> 1157 bytes levelconverter/1_3.png | Bin 0 -> 872 bytes levelconverter/1_3.png~ | Bin 0 -> 860 bytes levelconverter/levelconv.py | 12 +++- src/box.c | 6 +- src/level.c | 29 ++++++++ src/plateforme.c | 99 ++++++++++---------------- src/tile.c | 2 + src/world.c | 18 ++++- 19 files changed, 127 insertions(+), 92 deletions(-) create mode 100644 assets-fx/bin/lvl_1_3.png create mode 100644 assets-fx/icon-fx.png-autosave.kra create mode 100755 assets-fx/icon-fx.png~ rename assets-fx/img/{tree.png => arbre.png} (100%) create mode 100644 levelconverter/1-3.png~ create mode 100644 levelconverter/1_1.png~ create mode 100644 levelconverter/1_3.png create mode 100644 levelconverter/1_3.png~ diff --git a/SuperCbr.g1a b/SuperCbr.g1a index ba7378ec21d7b355edc23d3c02db292aebc20e2f..633f166dafb051f476041d0c7e20d2a76425ed71 100644 GIT binary patch delta 6143 zcmZWN4OmmhmNWMTNJtp4RX*Bdz-R56(mX>T%+Wh-lv}vS|0)SdLZtVW&?)tD5p$VH zP(5)RrF-S(Amz*uMK~`Xg_lq20bD9o@uv|PeINQK5GjYr(p`v5&ILN)lL;b)e&9)9 zfiP~21d&uQs-O^&l*2Fv`k65x*NK#KtT29@Fg+p+Ptt%`9H;_ypM#oXenf6uM&#T{ zL_TsNaud`p&k)sEGK7lAJ@~1382oD+TkHNSY)R_ zRLAk+1dz2}7tLYwo@zoQu3wbXEJcLrU?zi^W9wjkIq1{a5D9=C2^FBz3OMMWauDzu zz;98aUKoYMRkU^u%}95v58#{B7@gsGT^p@U^)Kaqs}N@DJlvLnBauD0NXV3?XCcpY6`8JS+N_<1ucPZ`9o~y%h-_l6>H&*b`w$VQ0syR0gVoCo zi0p_106WyAq^0=me7Swc`W7vxlTPt)TXFO50CHi^%KW>@<9qmc>qu7Dvh4(I6k%%?G(3#~R}W7&*8` zm(1P1_zv*Hg4~~C$2fvp;|gy)=1D4P*~E!f0RFy52RJ{Bzw3zuTr!Lw@TdR}8OA*x zDd3^Q`0pD~EWkb9L{}8ZBF!-W9YE-bF3?27R1Ik=*Jtb{aF~Nai!z z?_GpmRnmO<6)w5ewga0Ww)Ofrx6a|>eDR%$Y*@PnhH0+mTVbI6-WADwXnpZOi|Mdv{S!M$S4seYIky?wyhGvVIvJv@_b4^iJyJYPW`*le8_)n+8%+*t0^Qu!P7GU2P!%>}hQcBGr(yp|Av#SG5X~V+K7K zUlwY;&MXw92?y{qOc@h>DM2ua)Qa}oZ zQpg{JG7gMB$Gh^_hj%b@fCv_*T=B-g~{3`Co zb5tJAj}X{VuOZp)$Thqzx>8lA2>KwqA+$b`6u9|Hjx2F=e(b&W$~ZQbmKdjk_QS>{ z*hYJee^UO3<6+%A$c=o*-`4UM{zg9-H-6Hml7z2MXUY``<$Qguy>@}Tn0N6FN?)5z zeGYrfDQ)gaicfHYS-np93DaN4C5GHcY4iR-HRIFpA^Pn2(NPE4$X&SU5t5~}?ZV9_ zVbk~&E+up|C@kV_Mxr_1Q(No(@fKXFSZu-u#W>+I1`%w9zQlW#{^!JcY^C{0)s8KB z2CLlhP$zxi+}>hyx47-#mW{ zU3vlh{8=$wD5~Z?QWtlrkS;LI#`Ec$rgS`u{;Mfn7S@nfR|`IiqBfI`CM3t=F_a{m zLf%8NOHjv?jhV`8*!!+o?LB8Rnx}X>uVEEZB19&(A+jBk7mJhatbY(74h{4IZ#%@% z_8K$*1Icz5J(H}B`ngDxHo?Q$(p{2HT(EJ(f{nuqmU|QdrEU8q z?eK!*M{JpbE>2nDU^dhM6ath2A^9)ds{O!{yNzKMdv?g_S1k?y9HR3y-ex8~=k)*>NEL{PS6eb?EBo!j&UPNX; zL}V=R^cC##OD&TY8!T|!9?E=^w*VW48DbF0%78M`hRD-(v~`jfPD$b9bbTB`XY(O2 zPa?9;1tkVjO<9c(XQuQ71GpRs$0q*)>w`%ZvJp6mUB}t=I{`$j=V7Wdpth2hk{{xq zNCVrYkdZF~^aETM>}l_DcrKM#UWzAT+W!ccgV$hno)fCeQM$!46WeKcDrGssE`w8T8mS6{M$6b8sfG z>V`(NnbivxeEtep^5D7rv=@=@cO&who%&}~hXhB^RZkz`tk?I=T$Fens<{f>z60FO zmGRA?H<2%*T%FR^fSVC5n`u&l{u#HxKrk%fWXB_&RKMNMTTa`uV9M|>!q)LKa_6VcQ0=O&-%-rx%3m9R ze1agz!ra)!HLNdE(?c0!@Jf0rqX1{o$XVIOH=J+Q$LZdwjq^?3pPwn;jJ>ZS**o(O z&-ZRXvUSmbZ=^M|5<}*@Bt8Q@G;1neMB8UgH?Z8z9|Hh)!kG-7zl4*Ii_O#dH0hby zSfHiPm|&`X&(y^kyVxBKavE$b^L&c++@oFicpsfS`w>1uQ>}ACS(yUKD(f@cQ>W=k zs{?AeCG$2O59_l+z_5xeYhw<8na@EeLsG15gZ>$4TWL;KIkpNXvu0uZJiR-2QM^QC zCH9MkF%=Ub4pXeO@OS#yXe9gkB&&NKuDqq0L$Z#KeIL_3zniqEbsf)A`;6Qfyjubn zpPdWj_Sz)uYw2uZ=c>LI3JqV(`??SPt?f7F6r#E%{F-_-z zj|1OfDxIfQ?hDcy2WflhQ$X7pr0pD})l>VtiOSc5w3fZ*2QQ ziAMX@Wy&Q9wkDUv6W)z|cH5C4@53N(HSM1_HUb>Z@h0YUlEBJ0oYSD|!7-C_Jvx1yZDY6coYF1O{W(*OZ;g*{IFJvYZw(a8Y3z{L zHtJ0KB)Sw6)F*G2^YF3{pA_*Be+3!enO)g?WM%s)w2Exb8Q z?O_~76$*3zfMa3sd0$n3LoBny$-a9D3Q303)?L1}RsamwIyaf{E! z+F%gG>FuT`4H0@5XJc%j)0du=)u7;g8LX2mTg)vvLkpJ~xTOc_mStmEb6CXAEE@%w zaCzB1jJMG91qqQApR@D`CjshvK_R_ga5en)85g>b5P3D9_7s*x4xt><|0d>EcGAnM46J#$YOSo!yeXhCm-rDSFT_yi3tC)9 zn_jpE)xq`ROl%Q8e{qkP6lF2sS$3@8P8|-O56>MKfKy7=f8LI-AZtpG7LgZog)O#C zcsaY)v%7ik7SY%e73>bsZbSa-1pcSio@I&pc02S-0jvP2 z080V()11}cg|fed9Ehf_+4k&KKm2n9Qri&B0x<=jBnaiQe~Dc15#mBW09-+cY=oIs zOI+xC!22%yxOV;`Z%whQk&NMke5=sE<_8Yv2wf$A=1du&(E^%v&=T?gscnAfuY%Fn zfqupbQ$gD#oLHBRLvmO^((7ecxw7-Ly?itHAh%*+1gw%3x^j>ztD#3L@^A*dUojir zmh~5Kh9KSG;juwD_=*unYylMnzGgItynIYJ_i8l8I@-0d0N$3W7O0??tDc9q<+aU; zHrRaFkSeE-)6em7Vt@b*R8%?X`PY8ps?N~Uo3fc%ueDQY^@|4P5ca*roKjHf7So#LFN2zb?{LTb$@KKubp zwzUQzS;*a-%sqiq=hpUM5@1_K^SAv8cBg;aa<2R+&372WAHcN$9*2hNNsG4)shD)kyMd7D274oC?XZB0Gz@@ z$0sgyoUfhd@UH?2KL}vQg(~PXdznTk8(%sHaYh6D`%-8ng8=wP z8Bg$;eEvxM+ruOAFWG!d7XySGq_u4j5eej9x&UXB58^*gAIa}H{|~rpB>w&7k@%NG zx|lvNxWo1YA6wwYQu-tTkx!3~#J}}Ffx`;FJ0Vzh9Eha0w}wEBRG?|g29QD%Erccdhl%}eebOZ06CpRWvN3}iOU2j7BWGEaYBcX zU?9=c2jc0egDJv=Qw5yhKegbAS7TGIP}*osm4JJ#Lgt^xVPWaN{c|+^r@!v__`*w3 zA#nO$enYVLWQ7&SAhOU8ibp<-M)DqxBmzbj!J&PwX_!tHz_l74Mjv`c^zTR!xg({D NTWjGiRCP;*{|`ykDA51_ delta 5887 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 c$ABXDae<@EE^9O8=W$)HPyfEafJ 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 literal 0 HcmV?d00001 diff --git a/assets-fx/icon-fx.png~ b/assets-fx/icon-fx.png~ new file mode 100755 index 0000000000000000000000000000000000000000..a1a132c0093f444d9cbbb6d86a52b0a0b66aa1ab GIT binary patch literal 7120 zcmdT}3v3m|8a|EK+YSO&kSlN_O}!#>^+GrP(|+Cp0%<&pN*Q?+^?yU>cXDdnON zMM`o}C|osY5fp0?jI?4xu8L7KArWm6D%^m|BdtI$@m_hxNUT`yKeK1MXWG-pDWvE& zJG=kP{NMk5|NJva_dGu{J7WMEjyxXEfUL~)+3>s-?!h<4L;KBm{{)XGZhm1}+RVaW z(Bm2X;=&hqPEDP4%kHH`{@gbR=IAxewQD>lFI-P< zLW}bPH3b*%&wjX!RNTMKxBKYvz`74koJv};blYZV%`oQ-OZN8)E(iZ)Z6Zd{@sd!NK!GCX{Eg)VpZs-U=6@1~CZ+Z}|5DYL@jf&ybMI8^-KUprEnYVL{M-v{ zw14Go(Dtgalf{_HI+e{Z_5<;~j%HWmFj{*Bc;hP^js%&Yry(D*S`EdIBP zU+?_eo~@tm`(<$Yht1EQX*!p%JG8X1Wn}5DId%Omt-cHkkXVxGTL7!^9KYi>txOyZ z%kgp9qzB7p`xhmblonfs^UUP3r%KFZ^T|TXgLsRQ`Gpk)sT$L%L8$_lYN!VG!;8)> zxD3&H6&0Rd@veAH`w6zxkGv#2fMI~Yhi%3I;qv;SU*j*rY>VLy$o)tUN5^^?DD2<> z5*`_-D?uB`CJFI)VCZ*$n3IMa@P%x<&=>m)k9s^q>!L<^@`(};f=0x^ zx@I5}Bo>2IQZFSmKsBafg<`5v1_fl25ah!O1OgVu&~H$c_h^i0YKSOm2$q1rTqriA z>deo;Q6tQ+nwm=C34nxv6UM|Mrs5|-rV~HZCOFa%4@SLM;WiCYlMz0Kcm!YrsyPqh zw+Gs$3nnfMKm-IQ-CjW8V{sZ77Dk0s@ms+mdq*$|>x(%PNMsPEsT5XH!>X#%c0BAc zPDMuy>Vql7k1cF5abc4ITWpG03|pc|3}V0=FChy`1LKe#0G@aR? zUKvnkP#sXBcD-vn2*_;{>agTRA(jF>5aV?!RzlOL2`eL#56d6LO*NoUy|8&Sjc*_* z9IA^T1Wt-*4w~*pasvq$4GI@T@dHQpM38)_TQ`;(giUBt))o!UEZN2O&9-3J19X7lFZK{44d2Hx#WKK(FsQt(3H;3i1-dj2%LB(DKntbIhefw;Zqieh!=rY zco3$k@-a(vUX=XL-8f?F2tbhzzG+lAniN<$j5Gr4z|R@TjkD8uNx1u7<;M(*9E%(U zKZBSA&Z8jgdS?TQPIp^GbLeb-xFFs5PK3@JY_@K2hc9yC3&&3MN0T2Jh#xhm<5}aJ zjc!!?bmaZQy~Fv!`T)j2tG;GX_TO#W)c5GX@~pvAxwdKwXQG zIrR-AIcC>ZJ4UgHk%8L*$%C<2R}ZN7Vr0HokCBWUizRFMJus5l$HYh$a|J-Mt8B%@ zNOqO2Zh*QH6BCd;xhtz1MqRneV;z8cE~XnGdAR3R2Sz=2m1hD_Z^d)~k~?~9U6Hg% zEms5-$^KdaMT&{!1OFV$X78=O1L|Ci%)aj!$#FZkqA=>I7#TDQkUXKM*3|{-ofw(x z)nz1O$6~o!elLt%_AxVZ#ke5+EoLCu-L?7>s53Dxn?I1Wo{9N`Nb8LlE{%Uuu)jXT zm(hsN&-`1K_{PQ?otxwtv-9XzUZ}S3+hfk zTkhN5nm-}_Pk&jv?~6GVTfB|Iis^gvvdWJ2|7YF%mx~J~?qA?r{6y*QA-$*@zDnjhmPD<5x+R@xIr^k9DdC>eD3JZweO5yF{F0=-J|xNsczn!vT9xR z==wQ#21^elSr6o_*n)3>EQR{nonnqp4? literal 0 HcmV?d00001 diff --git a/assets-fx/img/tree.png b/assets-fx/img/arbre.png similarity index 100% rename from assets-fx/img/tree.png rename to assets-fx/img/arbre.png diff --git a/include/plateforme.h b/include/plateforme.h index ae9f7d6..7c89f19 100644 --- a/include/plateforme.h +++ b/include/plateforme.h @@ -5,16 +5,13 @@ #define P_MOVING_H 1 #define P_MOVING_V 2 - +#include typedef struct { unsigned type; int xinit, yinit; - int x, y; - int width; // height fixed to 3 - int v, vinit; union { @@ -27,13 +24,14 @@ typedef struct int ymax; }; int counter; + box_t b; } plateforme_t; #define PLATEFORME_HEIGHT 3 -#define PLATEFORME_FALLING(x,y,w) {P_FALLING,x,y,x,y,w,0,0,.xmin=0,.xmax=0,0} -#define PLATEFORME_MOVING_H(x,y,w,v,x0,x1) {P_MOVING_H,x,y,x,y,w,0,v,.xmin=x0,.xmax=x1,0} -#define PLATEFORME_MOVING_V(x,y,w,v,y0,y1) {P_MOVING_V,x,y,x,y,w,0,v,.ymin=y0,.ymax=y1,0} +#define PLATEFORME_FALLING(x,y,w) {P_FALLING,x,y,.xmin=0,.xmax=0,0, {x,y,w,3, 0,0, 0,0}} +#define PLATEFORME_MOVING_H(x,y,w,v,x0,x1) {P_MOVING_H,x,y,.xmin=x0,.xmax=x1,0, {x,y,w,3, v,0, 0,0}} +#define PLATEFORME_MOVING_V(x,y,w,v,y0,y1) {P_MOVING_V,x,y,.ymin=y0,.ymax=y1,0, {x,y,w,3, 0,v, 0,0}} //void reset_plateforme(plateforme_t* p); diff --git a/include/tile.h b/include/tile.h index b537632..ac1d627 100755 --- a/include/tile.h +++ b/include/tile.h @@ -14,6 +14,7 @@ typedef struct } tileset_t; extern const tileset_t tuyau; +extern const tileset_t arbre; extern const tileset_t brick; extern const tileset_t earth; extern const tileset_t gift; diff --git a/include/world.h b/include/world.h index 22ae31a..9cc186c 100755 --- a/include/world.h +++ b/include/world.h @@ -8,10 +8,23 @@ #define W_SIZE_X 160 #define W_SIZE_Y 16 +typedef enum +{ + EMPTY=0, + EARTH, + BRICK, + BLOC, + END_LEVEL, + TUYAU, + ARBRE, + GIFT, + COIN, + NUAGE, + BUISSON, + COLLINE, + CASTLE, +} cell_id; -#define EMPTY 0 - -#define EARTH 1 // X, Y, _ (XY tileset) typedef struct { unsigned type :8; @@ -20,7 +33,6 @@ typedef struct unsigned y :4; } earth_t; -#define BRICK 2 typedef struct { unsigned type :8; @@ -31,14 +43,12 @@ typedef struct unsigned number :4; } brick_t; -#define BLOC 3 typedef struct { unsigned type :8; unsigned data :24; // raw binary format } bloc_t; -#define END_LEVEL 4 typedef struct { unsigned type :8; @@ -50,7 +60,6 @@ typedef struct } end_level_t; -#define TUYAU 5 // X, Y, _ (XY tileset) typedef struct { unsigned type :8; @@ -59,7 +68,15 @@ typedef struct unsigned y :4; } tuyau_t; -#define GIFT 6 // s, t, n (state[hit time], type[vide=0, piece=1, ...], qté) +typedef struct +{ + unsigned type :8; + unsigned empty :16; + unsigned x :4; + unsigned y :4; +} arbre_t; + + typedef struct { unsigned type :8; @@ -70,7 +87,6 @@ typedef struct unsigned number :4; } gift_t; -#define COIN 7 // s, _, _ (state) typedef struct { unsigned type :8; @@ -78,10 +94,6 @@ typedef struct unsigned taken :4; } coin_t; -#define NUAGE 8 // X, Y, _ (XY tileset) -#define BUISSON 9 // X, Y, _ (XY tileset) -#define COLLINE 10 // X, Y, _ (XY tileset) -#define CASTLE 11 typedef struct { unsigned type :8; @@ -90,7 +102,7 @@ typedef struct unsigned y :4; } deco_t; -// Generic container +// Generic container 32 bits typedef struct { unsigned type :8; diff --git a/levelconverter/1-3.png~ b/levelconverter/1-3.png~ new file mode 100644 index 0000000000000000000000000000000000000000..8e15bd70c0b5229349f5fed1ef056e486c00bdce GIT binary patch literal 1189 zcmV;W1X}xvP)N|=zh1>O9 zW?A?^c)*nd3STN+EAx}$Y?@U`Sv7U2n;eO#B+bZgn^QfD&82Q<0 zshu*r@JN#+K@5!|D_HmpO3h1V|NG)UzDWw=(dF+@!WBoBoOlOBElO8Iswui5pG8UK z{x?t093ConZ%IJIV-URdLS!4hwu0dEFbKYmAp8L5`KrGlIgP%HzE#zF_940srx#UC z+kvwU=(u+>Zstb{%M6(&yqrMmJhWXy(_%TR$~wn)Fta94bOpP6&?oz&OW%R{XV8HG z24?^O010qNS#tmY4`BcR4`BhQKc{H`00P}fL_t(&L+x5SP6IIzwGk%>6|^AHB87%4 zfM^gAHwYCspxA4`4Nyu1ry%r5^i*(#;Mv5BcjM0++u3Z$T3WHf^Tspdd7g0+Ia5RQ zBTEE|qNwzk?}+jgY!~z+Hf)lN6dz(Hj$xCflr`BUS~ccFinX@gkf3$`QNhO;uTv8* z6(8l_0@NfKmvkv>H?eKTA?I2-b@}4Cs&%sI<<`Lkq2mY&k~3$5c2!q#DMj%-Kde#+ zoPtGSvkLvG2Uxb`M*^^+GSX~u|3kpq@}VMTsC6+uf!P!1 zD9`1lUk~C#JC^jThf-maURw(6pakM91KEF}%UapV8S|ea1=Q>(k zP7rj9yTbuNvg%$#_oVXfL!b7B?r4zGWuc+!=jlNPM;6gXK2<(KfMua^;jmrl{`xwr z11OGqxZX_!C*~v@kT(;YQ;A467F)Ta?TgGMj=hmv3Bjm>x*oX2bqTWCT6M1(mWmeb zZ^Ye((3*Tx$0hn*;EFl2P_&yqLZAlc3di+8>E3VZGe1mny_*=$T{j?WOK|#Mr~IuJSToM<&8Qe`Jr1d+BG;!E(@If|zXi{^%F zPfUE5$jQke@NDo!h*Wr&atEvXlR}Y~POFXSRv<4~{va_r6F8>Z( zEi>RqQzz*{65Lf?fhDc_(cEz5fW{-Xhitqa-G@Y4o2LTnedxQ=^TPrCDF?lWFq=HD z{Y>$p3fBBLUt9g;i08J(5NdH-J1Y8x`Uvz9s72rxr`iK|PLUM000000NkvXXu0mjf DuE{ZS literal 0 HcmV?d00001 diff --git a/levelconverter/1_1.png b/levelconverter/1_1.png index 32a09b10532e8db44ff833553d5c3b53dbef6fff..39cc36c3e10e528bf94c7297d9bf7b05c1d622dd 100644 GIT binary patch delta 1129 zcmV-v1eW`W2!#od8Gi-<005&PB1r%M0d8qSLr`gBV*mgsk#&(fO9Md^g+CJ|;)4`g zh$y5`u}}yKVyUr66GWnduO_?hCc~4@?E7({F7NU)>!hfKxV5=YqiXdX)FYwif ztanTxB4(D^`*CK@W#$ZoQkHIe^>MKCzMD=aVsrBgvB)za!hb~RCX&%TXMAcZMa}VX zOP#7WgQ{2UegBT;Wy8~cySojP| z%}Zwg`{F;oNq-9B(dF+@!WBoBoOlOBElO8Iswui5pG8UK{x?t093ConZ%IJIV-URd zLS!4hwu0dEFbKYmAp8L5`KrGlIgP%HzE#zF_940srx#UC+kvwU=(u+>Zstb{%M6(& zyqrMmJhWXy(_%TR$~wn)Fta94bOpP6&?oz&OW%R{X9duK0S0H2u>lu<0=-E@K~!i% z?OMxi!!Qh$iZ0PE&})I@(jj^&>J^exH|W7@v@7J;HJaW#LB>eMBr;@0A5x@cC$#_r zMnpc56rV{s)_XJ5JVYYUwrz*w-ebTyx>LZ%*lO*2vJ7VTq7x&5O%6=H|g7|Dr zSQnJAx@-DRahL-;V64qWe9G4*sKnkjO>=N}v)LpmE8gOo)xK4KzYPWhmZp&o4cjsg zS3wJsZ;Xdr>89JNNlI!W0YdRekuyk`)SB+xiXMG#Rp#nbEw<#O>PgAR$e6P_MMM^=bq@?<%Tz5%y!1m?(1IKcs$i=bkV>3bQcnC6oK%9B&Ozv6y4c)^ zh2Pbm5;-a90zT-&EA`{(2>SN&NWlrp!e0-$QA#|Eom&Gdm$P%K^D+PKV=Xhn5g!w< zFbN*3u81XAgZS9oh~fMp6D%t76pHi`dV!{Li;2cDbK=ad0SW vPE}SSo>TR0XuGPnxI;TMtN;aJIdOn*veR;AD@1e*Qmfv7Os zoRj4Q+K#V#1o(azv5oOsNl3lcwa zUG@2mbKYZtXNp!TIZrGSOZgU7TbLCrop_2kqUi?Z3u&J<&Rd-IQiV0{$zK@G8Y|0O zr!|Z?7O?~w5`R=wP(%q1qO=>N*htcOtc`!j^ULH?$yEd+#{$aGp?H4qKlt5SJ2yGu zCxv4`=Zoupi~ylspk8&|?_<}kp8&yU;L2$F%Qax;lk{p+iyQ%c+rY(jQ&abV%N=0w z$y6-GlY+E_Tn>0Yqi@Op1Ghl;n%}p^IZhvd6!j``1AiPG0;74#UT^d6uGYT&Thr*@ z5AJJnavnRHrT_o{32;bRa{vGf6951U69E94oEQKA00(qQO+^Rf0s<2U6GT^{?*IS* z8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b0rN>jK~!ko?U>DR!ypia z-^-+lxPO6MGb3M8L@t@of_zE`InajPf{$q<_B|E2400gDSOTOK0$G;5;{$`26+a)3 z1sY>;lcu$96>>RG5NFOt{2Dy>_>ivLAn>d{9v=W6FTz3TB|MK=6p`$sNDi2{C*z|f zMv%xTnG@Wr5!yHEZ!>g4vvWDkhFq|~(+PF@Ab)p6T_oSgtRfcK*kR=Mx^vhO$l%lCRr&3V87qzPZfY4G!|$L6KtD9aqCNF$?|!(Lfg;B@T9+z zv! z@P8nYjp!PX2LdE^lsshg9JpWwj&bPT%V z?%epUc;P0X)+(<53wn-ITw^K#c9+xx00nUH_SUg4#8Li@?yd^&oZ9$7o`T7}Uyx_a z5r-BiN~ze<>?76ToR(fsLoI-HkWw>Tad%5-=MnWN1aH8CpvWtO^+V4q=RX;>k}eUO z2DqQ^FA1+pd|})_kSe0g5lfa{9X$#h+yBpFr)0`kG+QiDj9+ sqH;(s>u$9qZ*Am`xU!O8@`>07*qoM6N<$g1hwDX#fBK diff --git a/levelconverter/1_1.png~ b/levelconverter/1_1.png~ new file mode 100644 index 0000000000000000000000000000000000000000..39cc36c3e10e528bf94c7297d9bf7b05c1d622dd GIT binary patch literal 1157 zcmV;01bX|4P)N|=zh1>O9 zW?A?^c)*nd3STN+EAx}$Y?@U`Sv7U2n;eO#B+bZgn^QfD&82Q<0 zshu*r@JN#+K@5!|D_HmpO3h1V|NG)UzDWw=(dF+@!WBoBoOlOBElO8Iswui5pG8UK z{x?t093ConZ%IJIV-URdLS!4hwu0dEFbKYmAp8L5`KrGlIgP%HzE#zF_940srx#UC z+kvwU=(u+>Zstb{%M6(&yqrMmJhWXy(_%TR$~wn)Fta94bOpP6&?oz&OW%R{XV8HG z24?^O010qNS#tmY3ljhU3ljkVnw%H_00O;9L_t(&L+x72ZNo4Om5MIWF3@X%O*2vJ7VTq7x&5O%6=H|g7|DrSQnJAx@-DRahL-;V64qWe9G4* zsKnkjO>=N}v)LpmE8gOo)xK4~4F&_2rjZT}+cFPVK?{;^jE7w5rrWAXN@^kjLh(qE zGf0@!n(o|+9(`_A=IT=|w&bMhNy*2^n8NQ7G!?MYM3!<6i&J~kv3AXJ{0MONc5HHn zs;7-einzm7Q2u^YLEvn96$1&2T$3*Zx3i*SlQY%I=8V6|3D|kqe0!yvcdg)@q~Lr5 z=g{044QqfWw=n%YT$n+T#o&QYosTGmbD>omvE5+rc29i;h@%~`dsl-JbCAu*y9rK7 zc91RA?cA~U73LDf-omX!sX+yeT`2(h3Tn6P#3nm(D@xV!GJeh=t$PpAtDK=>k6J!z=aU=m`4u@<_o6 z%EDg{xlu|yi=A5oE0?o#s`D}b?qe-8!Vw=6urLW8tFDM8gZS9oh~fMp6D%t76pHi`dV!{Li;2cDbK=ad0SWPE}SSo>TR0XuGPnxI;TMabCRrAbC4Yw!t~j#f#M>uoQM#t3W<*cRm#3t1 z|DC6o85*o~kHnz%J_w$>p>7jC%0ckH9|RuTg{ps9avFIRykao9iD(#+fnv(G=zXJ~fgNs1m z9td0r)EkfyXG|5-Z;JF+fS`TiGwah+FlQU6nD_9gAcp@S;H{u-f+@DMk498A1|YOH zRB_Lc35fTgyp{bv{#2Oy)`tuqxr0Cxf$LLT?ge?q!_!ypL%W#5T0icmCyOl0n)1VW z5J;N9^&Yg;3(~5Zt2?EQozB*h<6)HbQ{&Ix192w(+#&ct0yn=0Wl_%dPb4DFz@Q<{ zKv1|Wc>+ZRUC$@9{XB>zRC)ht#oPof=2>b$ny=abCRrAbC4Yw!t~j#f#M>uoQM#t3W<*cRm#3t1 z|DC6o85*o~kHnz%J_w$>p>7jC%0ckH9|RuTg{ps9avFIRydS0Ca29+L(h3WXx-LRA9q@5Qt{bbBt-q*?SjM0RafKbEx7! zw@g622jx=sbN}688e6|*`0yPB`Usq!;&Ly@Gal{}xext|DXiBc&wXCtItUa>;B*h# z>IG@pr68xYxzpJoQyxZnJpp}%-Uqk^0zm>7zX#=@ob4V+B{*@DKmY`e2s9aV^)jLL z_Dc;<=l!P}%eL1L)M~gPs89kUBl^lsMvvL|g`j-@$wMPQBnl0Sqzx&Y`*f$sz#b47 m0)dN5+#xs#8$n>G1bzU~`fHu%vVCO$0000vx); - int t_vx=((sgn_vx*b->vx+time_id%2)/2)*sgn_vx; + int t_vx=((sgn_vx*b->vx+time_id%2)/2)*sgn_vx; // si n impair, alterne entre n+1 n-1 sgn_vx=sgn(t_vx); int coef=1;//1; if (world_get_ctg(b->x, b->y)==CTG_WATER || world_get_ctg(b->x+b->w-1, b->y)==CTG_WATER) - coef=2; + coef=2;//ralentir dans l'eau if (frame_id%coef) return; if (sgn_vx) { - for (int i=sgn_vx; i<=sgn_vx*t_vx; i++) + for (int i=1; i<=sgn_vx*t_vx; i++) { for (int j=0; jh; j++) { diff --git a/src/level.c b/src/level.c index c096054..d7357c2 100644 --- a/src/level.c +++ b/src/level.c @@ -14,6 +14,7 @@ #include #include #include +#include #define PACKED_EMPTY 0 #define PACKED_STONE 1 @@ -31,6 +32,8 @@ #define PACKED_KOOPA_ROUGE 13 #define PACKED_MARIO_START 14 #define PACKED_NUAGE 15 +#define PACKED_ARBRE_TRONC 16 +#define PACKED_ARBRE_FEUILLES 17 void malloc_error() { @@ -279,6 +282,26 @@ static void unpack_level(packed_level_t * p) cell_t t={NUAGE,16*px+py}; cell = t; } + else if (contents==PACKED_ARBRE_TRONC) + { + cell_t t={ARBRE,0x11}; + cell = t; + } + else if (contents==PACKED_ARBRE_FEUILLES) + { + int px=0; + if (pack_access(p,x+1,y)==PACKED_ARBRE_FEUILLES) + { + if (pack_access(p,x-1,y)==PACKED_ARBRE_FEUILLES) + px=1; + else + px=0; + } + else + px=2; + cell_t t={ARBRE,16*px}; + cell = t; + } cell_set(c,w,h,x,y,cell); @@ -361,6 +384,12 @@ void set_level(int w, int l) }; init_plateformes(plateforme0,sizeof(plateforme0)/sizeof(plateforme_t)); } + + if (w+1==1 && l+1==3) // 1-2 + { + extern packed_level_t bin_lvl_1_3; + unpack_level(&bin_lvl_1_3); + } } void get_lvl_id(int w, int l, char * str) diff --git a/src/plateforme.c b/src/plateforme.c index d13d617..afa90ac 100644 --- a/src/plateforme.c +++ b/src/plateforme.c @@ -15,72 +15,45 @@ plateforme_t* plateformes=0; void reset_plateforme(plateforme_t* p) { - p->x=p->xinit; - p->y=p->yinit; - p->v=p->vinit; + p->b.x=p->xinit; + p->b.y=p->yinit; } void move_plateforme(plateforme_t* p) -{/* - if (p->x+p->width-world_get_real_x0()<-50) - return; - if (p->x-world_get_real_x0()-128>50) - return; - - - if (p->y-world_get_real_y0()-64>50) - return; - if (p->y+3-world_get_real_y0()<-50) - return; - */ - -int xc = (mario.p.xx+p->width && mario.p.x>=p->x) || (mario.p.x+mario.p.wx+p->width && mario.p.x+mario.p.w>=p->x); -int yc = (mario.p.y-3==p->y); - -if (p->type==P_FALLING) { - if (p->v) - p->v++; - p->y+=p->v/2; -} -if (p->type==P_MOVING_H) -{ - int s=sgn(p->v); - int t_v=((s*p->v+time_id%2)/2)*s; - if (p->v==0) - p->v=p->vinit; - p->x+=t_v; + int xc = (mario.p.xb.x+p->b.w && mario.p.x>=p->b.x) || (mario.p.x+mario.p.wb.x+p->b.w && mario.p.x+mario.p.w>=p->b.x); + int yc = (mario.p.y-3==p->b.y); + + /*if (p->type==P_FALLING) + { + if (p->v) + p->v++; + p->b.y+=p->v/2; + }*/ + box_t temp=p->b; + + box_move(&p->b); + + // Si mario est sur la plateforme, il bouge avec if (xc&&yc) - mario.p.x+=t_v; - if (p->x+p->width > p->xmax && p->v>0) - p->v *= -1; - if (p->x < p->xmin && p->v<0) - p->v *= -1; -} + { + box_t mario_clone=mario.p; + mario_clone.vx=temp.vx; + mario_clone.vy=temp.vy; + box_move(&mario_clone); + mario.p.x=mario_clone.x; + mario.p.y=mario_clone.y; + } -if (p->type==P_MOVING_V) -{ - int s=sgn(p->v); - int t_v=((s*p->v+time_id%2)/2)*s; - if (p->v==0) - p->v=p->vinit; - p->y+=t_v; - if (p->y > p->ymax || p->y+3 < p->ymin) - p->v *= -1; -} - -if (xc&&yc) -{ - int s=sgn(p->v); - int t_v=((s*p->v+time_id%2)/2)*s; - if (p->type==P_FALLING) - mario.p.y+=p->v/2; - if (p->type==P_MOVING_V) - mario.p.y+=t_v; - if (p->type==P_MOVING_H) - mario.p.x+=t_v/2; -} + + if (p->b.vx==0) + { + p->b.vx=-temp.vx; + //p->b.x -= sgn(p->b.vx); + } + if (p->b.vy==0) + p->b.vy=-temp.vy; } void display_plateformes() @@ -91,9 +64,9 @@ void display_plateformes() for (int i=0; ix; j < p->x+p->width; j+=3) - draw_tile(j-camera_x(),p->y-camera_y(), &tplateforme, 0,0); - //drect(p->x-world_get_real_x0(),64-(p->y-world_get_real_y0()),p->x-world_get_real_x0()+p->width,64-(p->y-world_get_real_y0()-3), C_BLACK); + for (int j=p->b.x; j < p->b.x+p->b.w; j+=3) + draw_tile(j-camera_x(),p->b.y-camera_y(), &tplateforme, 0,0); + //drect(p->b.x-world_get_real_x0(),64-(p->b.y-world_get_real_y0()),p->b.x-world_get_real_x0()+p->b.w,64-(p->b.y-world_get_real_y0()-3), C_BLACK); } } @@ -116,7 +89,7 @@ int plateforme_check_collide(int x, int y) for (int i=0; ix<=x && p->x+p->width>x && p->y<=y && p->y+3>y) + if (p->b.x<=x && p->b.x+p->b.w>x && p->b.y<=y && p->b.y+3>y) return 1; } return 0; diff --git a/src/tile.c b/src/tile.c index a65be83..b88ade2 100755 --- a/src/tile.c +++ b/src/tile.c @@ -7,6 +7,8 @@ int dark_theme=0; extern image_t img_tuyau; const tileset_t tuyau={&img_tuyau, TILE_W, TILE_H, 1}; +extern image_t img_arbre; +const tileset_t arbre={&img_arbre, TILE_W, TILE_H, 0}; extern image_t img_brick; const tileset_t brick={&img_brick, TILE_W, TILE_H, 1}; diff --git a/src/world.c b/src/world.c index 6c59306..01b6e8b 100755 --- a/src/world.c +++ b/src/world.c @@ -51,6 +51,13 @@ void display_cell(int cx, int cy, int sx, int sy, int plan) draw_tile(sx, sy, &tuyau, i->x, i->y); } + if (cell->type==ARBRE) + { + arbre_t* i=(arbre_t*)cell; + draw_tile(sx, sy, &arbre, i->x, i->y); + } + + if (cell->type==EARTH) { earth_t* i=(earth_t*)cell; @@ -144,6 +151,12 @@ int world_get_ctg(int x, int y) } if (plateforme_check_collide(x,y)) return CTG_SOIL; + if (c->type==ARBRE) + { + arbre_t* a=(arbre_t*)c; + if (a->x==1&&a->y==1) + return CTG_EMPTY; + } switch (c->type) { case TUYAU: @@ -151,6 +164,7 @@ int world_get_ctg(int x, int y) case BRICK: case EARTH: case BLOC: + case ARBRE: return CTG_SOIL; default: return CTG_EMPTY; @@ -159,8 +173,8 @@ int world_get_ctg(int x, int y) void world_draw() { - //camera_move(0); - camera_adjust(); + camera_move(0); + //camera_adjust(); int mx0=camera_x(); int my0=camera_y(); int sx0=mx0%8;