From 109e84dfbbf0c7cb6c4ecaba614b93db8c594405 Mon Sep 17 00:00:00 2001 From: "theo@manjaro" Date: Tue, 23 Nov 2021 11:11:13 +0100 Subject: [PATCH] Added flag at the end of the levels --- gamedata/assets/particles/confetti/blue/0.png | Bin 0 -> 5717 bytes gamedata/assets/particles/confetti/blue/1.png | Bin 0 -> 5703 bytes gamedata/assets/particles/confetti/blue/2.png | Bin 0 -> 5715 bytes gamedata/assets/particles/confetti/red/0.png | Bin 0 -> 5444 bytes gamedata/assets/particles/confetti/red/1.png | Bin 0 -> 5326 bytes gamedata/assets/particles/confetti/red/2.png | Bin 0 -> 5445 bytes .../assets/particles/confetti/yellow/0.png | Bin 0 -> 5658 bytes .../assets/particles/confetti/yellow/1.png | Bin 0 -> 5662 bytes .../assets/particles/confetti/yellow/2.png | Bin 0 -> 5657 bytes gamedata/maps/Level 1/map.json | 549 +++++++++++++++++- gamedata/objects/ingame/endflag.py | 59 ++ gamedata/objects/ingame/player.py | 13 +- gamedata/objects/ingame/tileset.py | 4 +- gamedata/scenes.py | 4 + 14 files changed, 589 insertions(+), 40 deletions(-) create mode 100644 gamedata/assets/particles/confetti/blue/0.png create mode 100644 gamedata/assets/particles/confetti/blue/1.png create mode 100644 gamedata/assets/particles/confetti/blue/2.png create mode 100644 gamedata/assets/particles/confetti/red/0.png create mode 100644 gamedata/assets/particles/confetti/red/1.png create mode 100644 gamedata/assets/particles/confetti/red/2.png create mode 100644 gamedata/assets/particles/confetti/yellow/0.png create mode 100644 gamedata/assets/particles/confetti/yellow/1.png create mode 100644 gamedata/assets/particles/confetti/yellow/2.png create mode 100644 gamedata/objects/ingame/endflag.py diff --git a/gamedata/assets/particles/confetti/blue/0.png b/gamedata/assets/particles/confetti/blue/0.png new file mode 100644 index 0000000000000000000000000000000000000000..96a71aa0bb5ff07aa1d019c3e902eb6dc750067f GIT binary patch literal 5717 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 N@#HRZFLVvt{BOBixjFy< literal 0 HcmV?d00001 diff --git a/gamedata/assets/particles/confetti/blue/1.png b/gamedata/assets/particles/confetti/blue/1.png new file mode 100644 index 0000000000000000000000000000000000000000..349d3b79e4e38d22f0376055b68e164110862a8d GIT binary patch literal 5703 zcmeHKdpuO>8=nZ}QY3e38i~>|_iHn#F)kH}5u)YH%ozrAF*6vqO1YI*myO*dQYi{c zky19cblXI2r3;d1=ti+=TW!BHqwD9l|MdI(_P@^Ob7tQ2yx-^hKF{}k&U@Z>ldq45 zfv%-40)a5_@^tfq|Fu>36xDCfl_5_ALhEi4J4o&aCLkqJF<%e^A?1k@2ni_!d;~&q zw=ys!{|H5Yykh}>YJR^`I!;$U56^djm;>A9)h(16@ONJ>$Ci}xAM^Tff+$}eD-($W%cITqqp?uIm6s>?6vNm z^!&FC+pc#Px4lg)_RZ?p6hA$^J};n4eA|9TV>0jf$kF6J&hVl3s5^nAK ze;7lLskZ*9#6O`<=Tc*|O_WW?;i1Iarqal8cCHpUdcIQwckw)Gi)Us;GCj(yQm9#n z&5H$g=PGs%-f;8~rn)a!GTO3Ofl{(d>qCQ*W?vTuFE~A)PUrq!nrpc7?gr((7;QST z{`>~UKKC8RPt=!1T-ll9b>Dxi@T4`un7wv%@&1>b*0kv!PgDDbnk^fa z^@Lmxm1M46R*+Uy@al?HgIAAPVpX|}GX?NdHiQ?QV3NJYQSHfZtn*C=Wh+U~&RI7s ze?Uu}w#?+_lY_}6DCGi_qTGbOymkE5yr{NS3&A}e$!DK*@_G$pw|lIKKCyuu`Gi|O zD>5TkDLfsX+}?1&AY_ejWC^85He+@+(KMyvFvEjY_tFt(z}T^~=xk9#-#n)UqU}FE z5|3nx{SPZ_XAd1YnRPUST02-z?_DzW=Q{i?W&7;3d!~{G}$-`9LeLRo2{ok~8a^#bEO8M)XU1Y}VhK=_~A*j;oKMh@+E)PI{TE zYWb|F0nN*yruvnUt($MO;{thoYyLRUXKxOcDRns_e zTc@Sb<#q8oDf>1ZDGfj%CZ!9QOkXc1^TR3+ukD4Y+Zmo`U9DTfLQ4G{rdpGJG9tABRf^%?JWdzffzfjtv`U=LG1OMXa$2)ml8Pd9Jn9>l$n6c$i#fyY?#6#zcJFl*kb*Qja%l@FLW?cQW|q! zEF6-p%bjHxforliY{PX`XOpuJk$^oT&avqxb{Ve=6*u$G6F$&QAj{;G$coIpa_A8ff_n>289&x7^py^ zH^y7Sgdzo=Nm9r^$%oBNisn*zC>Lj4x`GB12q8I$R0v~4GMa*cQuET_w#tk~A=MCh zGy@gn?TciJr4W+fL~z0YEQKH*hjP|M(xp5;&CkvKJq7&4Kt;;s5*iwvkdWY%fOis0 zBhXkXm5RpT&^R0bBLG>VNDe9hk<3;_F~Q*m$+%L1L@p4EkSb1)BaV|ZP$;+``5``` z#M}ELy-4<61y~QX0+gV!P8hUMi2mF|CTGRNB<}JF9Qw8g$&3>403B5<|EHwKjRVFw0kxj+=B z_ylDOgpj`+RH=z2;mITtmQ2KxF*qs}_X)HLlFHypRB>W4PB@CXM>Q=pI2l-2P*tZe zf!Yq|LSsrHP%f6T#o`zSN)-T7<*6=jBzyK(OCL7dH|VML_WT{l1_+*aiPES!4_kr0_UofQ#c00RomphQ)=5 z07#(lFjNed%;$h#vdhGLc>*Yf7DvFD!r8zDq|OHEpq6s}m*|8@NTm}7hXpWH083?K zNi+hHhNU=Sa5M}Ch5q+bBylJ>J_*7CL=u(?5J(USpy0R^fKMh-NEAGuz~vLa4Eldg z5sL+Ics3SGgOkJK9Wij@V~TXNYT^1YsdV&zP5T7kvy~2(X2J%qpzwl>{V@JW3sS?j%83N&CtGXvCN?qb%qmJCmo2ApQXQrz$ zhncgf0ybI5SwV89Sg1N0Ak;fnh=)uN$Rm-e9cy6PG&2~4@p4pxBv%`aj${DS3F6ZI9m}nu(ZeI7P4bzG5oui|}IkxK%9)-|!z; Cu%wg# literal 0 HcmV?d00001 diff --git a/gamedata/assets/particles/confetti/blue/2.png b/gamedata/assets/particles/confetti/blue/2.png new file mode 100644 index 0000000000000000000000000000000000000000..1b895c4c7d77e9be38db1a64709f74ac05423e96 GIT binary patch literal 5715 zcmeHKX;>3i7Y-mhSU}kA&3NI5tJdBK!7Y{Az@JjK^7IITCIo+ zic$~}TBM4oP_U>KWRayPR_li#f=h8ltluQy_OyTep0EF$=b7Zrx$k-JIqyAl=iXd@ zKTmy~IXWm5O5fYdJplRFP~2LI-`iIod7)71!^wdmk^o4C7K#KMZaj>ZBne?OEa!4i zD0%;hkhsFT3-u;XGDi*NJ{H+SFUItrzg!dfhhOIty@%#!S-4-&Wh>PAv2WkpxNm9E zQ)M+2x?FGB9bpH3r@x`pB5Ca@(Ri{2^zFo{{cV~W43ncS{3D@b`eWZekXrW6pXhjN z5fda?-kRp(#XU9D`@CL*^yiZH9~wqjoS<>LZes5Km>DU$x+gPI> zwbwciF8}!WOvLLJ*X^3mi&~toISdxPIyx|MG38lK$E=&@g70^6)5kwCquLN)zV#uX=Pzg6DG!t(MAbK=OVuOojy)fHqrAl(OdsM~;DJ5F9PV`@pv zwyEwoY?rvBaT`JmFDl?s@Y^Yg!|G9_nM^UQhJn*{kCyeY5G76(<7gve&X2 zS2snB=7)i?A$k;_H9>rmg=NatCTYc+rleh^;}LHiHyjE~kK16zW1rTUIbLpsr}zxW z<$miboAPc&CxO>!la!1A@Wx2laED$*(Jq61&65X6*uloRA=mdjsA7ZLd3UK3lZ3pT z%Ow6|YgHa3}4nTkYF($9Iz?E2Wk6Z2qi!7WF#czdqfi@>2U$+Qb|e_TiLjTvu;1+yIbdL6)O2g*Mw;Djk<701d^NAO%U7>^v)Xy% z@4k6l@N-|W$f2)QKfdrsbCaO9dmB|2FK^`3+PQ9KL}*iz3$=zidFRfVltrJkd$O$Y z&dZly>4sy0$wmBA$NQxY4*Hgz)f2hcS2kL^>(0zB%N}a#zE1;sOYbs9bOu^3sRPwp zVymRiy&1C)^vTwMSvQV%n6A5*X8cFZqAtl_83aLf%CS~zPy1I~BK6PgM{Z|V9B@uP z(q`T;^m4s*+t-5OmgXcM(`1`g@#D6>^-8EqfB1Yoxm$2!O7p`k=abiypqT?DZAY)S z=l6_y>GKLWZm}_*afv0H6Ya(qmle-F@ms;1{*J=Ae`}geSuJM`ohVVFCaiepzpXh! zUL4@IIBYy=pY8=~(P)~^Ux~rKuUk}6D3wgEo14G4o7=lJA6e;())%;VHMv?`T({zGfs+bl;T3^$G~LQ18vyWVt0s(=<9_Zn*lg$7;>3 zt==8<6_e`%Vhry#CM>-*kaF{!+T=3=vo#;@+U;QdZI15V(Q<=SI(5QO6=#iS9-MV? zzH>{jOKR%5El(UCiPQ4uEr=#G*cx0T3{>S%b4n?|{_!OVnZ^sUUKYu(AJR2iDvC&a zwN2azExoqY?EZD}(slONs1c#0vn9RCURQtnK zX`!1}q@j<2m8*yGf?bf6$8nFm+}UF-E|Z(`*UjJKTWMrQGx1N?x%_0)+r~%y*2(76 z`)22>?Z?)>!RyVCrF*p2Uf9k%o1i-5K)U^j!IRh1@2~8P1AyciPx)%5y#V8unxkxE zx@`nuzNb$6)1mQ(*XHY)Cc|gdm&fr1t?P@HptvK8lGH3LRISyotbHMu1*Zt!9^gKI zp~h7a9l>3SH%7kAZ@9=eIE3K~vIIOwh%JbM9pyYB@{LBJoR`Xl5GxLrprhbuF5d<7 z=<1d|y!hR_X;;d&*DU}mykAS*eJMPp-@F41w8g9rf+mOyAZFP<+3Ps( zVzDxr%uz;k6o{g+cp8m{#SyRs0)QX@aS~qw$pOCDT0t?z;SP&gBCb%v74XptPAEzs zmAGIqNI&{rd^{n8@t&S9o>l?T11pDwSiB<+%j01`_7F?xi3rJbK>z3=4n(#x*Z^28 zkcwC^JrU+htUsn;v)=m)rJ{IcI&2mej)!>&RE&&@|71u{Z-)PS4}}ELT%J(rg^2wL zQo`kY5bKlJ6g|pxJ`MzNf6w~~`d#iyFoI$*Kz9L4stC{9-36lV*(Bu0 z$q7IR$N-H+MdHIbkvSZql8Vg&Jp>{igiI%w2SvkJAwOE#p%5Hg=I`x-AvjJ2uC(~a zLlO?+;DYhx@}=?*&_FH^W=bH1ns^G4N}=GXL?Veoqfp5oK&xSq7^y@BCm!cWa8mXt zrUgWjL4<`Ab&3!u?MN=5n+S#^0#Tqq5buIf1b|j}D$5(~JT)m^Trq-3QdInO%`@SI zsi&z|AfBu2LZg*s3qq`^LBvoZ%vKJB_)T@OVjzArjJ)5|1@+F({fEh-;@FTAJBkXh z2vNvn;VD!^T$l_%BquhGhQm`iQP8LCVgW}YgGBJMXe3i48>E1g*`OCHrL_ALEsKE_ zI^hU-07nDxv_L!sB#}Y9lRb_A;&2%3zn>zFLWXEm5>iAsG7Uh=n*>Br2{-^xjiPWM z0s&8;Q9lj(e@+pP2MEMKJRU@n!xQasNaKBq&RE65^=?v~v45NPDZoc79U{$?4Ou~v z1sVH(MV{77Q7Ql8HC=B1;s^-!mq9*D-!F1~k?XS*_$=_3>iQzrXDRSm;4jtnf0Ik+ z!g@pMP+N8wP5>8Ao?5sS9aD^!d^Ia(`j75UMniHK2C z;?1CI4(gifsOl#$2Uj8{a|t~};wIoJjs_^@jumF3Wn4)NTCrmdPM>LtfE>Numj!C| zve+9l>Z~>2HuW(m&$s&OIidWtJv5MOXU`cSt1Zx$_(yj-Qx!GeKub4%q`wyNM0wNw K+$)zyX8afH>YQ@` literal 0 HcmV?d00001 diff --git a/gamedata/assets/particles/confetti/red/0.png b/gamedata/assets/particles/confetti/red/0.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7b9286f72d5740e33f375cd87c68d7cfaf0f68 GIT binary patch literal 5444 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 B6|4XN literal 0 HcmV?d00001 diff --git a/gamedata/assets/particles/confetti/yellow/0.png b/gamedata/assets/particles/confetti/yellow/0.png new file mode 100644 index 0000000000000000000000000000000000000000..2c7a65fba318bad8b539efeaab5c290930c338dc GIT binary patch literal 5658 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 JITV<@>Ob^me~JJA literal 0 HcmV?d00001 diff --git a/gamedata/assets/particles/confetti/yellow/2.png b/gamedata/assets/particles/confetti/yellow/2.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9e1014445c604eeb89179b0c95dec3495b9d0c GIT binary patch literal 5657 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 Z1!XQ$*R1Ulze7Ax?rd-8Q;wm@{{b0GhPD6z literal 0 HcmV?d00001 diff --git a/gamedata/maps/Level 1/map.json b/gamedata/maps/Level 1/map.json index 74522af..5f299ce 100644 --- a/gamedata/maps/Level 1/map.json +++ b/gamedata/maps/Level 1/map.json @@ -1,6 +1,6 @@ { "ogmoVersion": "3.4.0", - "width": 1392, + "width": 1536, "height": 432, "offsetX": 0, "offsetY": 0, @@ -12,7 +12,7 @@ "offsetY": 0, "gridCellWidth": 16, "gridCellHeight": 16, - "gridCellsX": 87, + "gridCellsX": 96, "gridCellsY": 27, "tileset": "base.png", "dataCoords2D": [ @@ -103,6 +103,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -192,6 +201,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -281,6 +299,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -370,6 +397,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -459,6 +495,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -548,6 +593,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -637,6 +691,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -726,6 +789,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -815,6 +887,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -904,6 +985,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -993,6 +1083,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [5, 4], + [6, 4], + [5, 4], + [6, 4], + [4, 4], + [-1], [-1] ], [ @@ -1082,6 +1181,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [5, 5], + [6, 5], + [5, 5], + [6, 5], + [4, 5], + [-1], [-1] ], [ @@ -1171,6 +1279,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [7, 4], + [8, 4], + [7, 4], + [8, 4], + [4, 5], + [-1], [-1] ], [ @@ -1260,6 +1377,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [7, 5], + [8, 5], + [7, 5], + [8, 5], + [4, 5], + [-1], [-1] ], [ @@ -1349,6 +1475,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [7, 4], + [8, 4], + [7, 4], + [8, 4], + [4, 5], + [-1], [-1] ], [ @@ -1438,6 +1573,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [7, 5], + [8, 5], + [7, 5], + [8, 5], + [4, 5], + [-1], [-1] ], [ @@ -1527,6 +1671,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [0, 5], + [1, 5], + [7, 4], + [8, 4], + [4, 6], + [-1], [-1] ], [ @@ -1616,6 +1769,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [0, 6], + [1, 6], + [7, 5], + [8, 5], + [-1], + [-1], [-1] ], [ @@ -1705,6 +1867,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [0, 5], + [1, 5], + [-1], + [-1], [-1] ], [ @@ -1794,6 +1965,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [0, 6], + [1, 6], + [-1], + [-1], [-1] ], [ @@ -1883,6 +2063,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -1972,6 +2161,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2061,6 +2259,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2150,6 +2357,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2239,6 +2455,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2328,6 +2553,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2417,6 +2651,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ] ], @@ -2430,7 +2673,7 @@ "offsetY": 0, "gridCellWidth": 16, "gridCellHeight": 16, - "gridCellsX": 87, + "gridCellsX": 96, "gridCellsY": 27, "tileset": "base.png", "dataCoords2D": [ @@ -2521,6 +2764,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2610,6 +2862,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2699,6 +2960,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2788,6 +3058,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2877,6 +3156,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -2966,6 +3254,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3055,6 +3352,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3144,6 +3450,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3233,6 +3548,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3322,6 +3646,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3357,6 +3690,9 @@ [-1], [-1], [-1], + [6, 6], + [7, 6], + [8, 6], [-1], [-1], [-1], @@ -3388,6 +3724,12 @@ [-1], [-1], [-1], + [9, 8], + [-1], + [9, 8], + [-1], + [-1], + [-1], [-1], [-1], [-1], @@ -3446,6 +3788,15 @@ [-1], [-1], [-1], + [6, 7], + [7, 7], + [8, 7], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1], [-1], [-1], @@ -3509,13 +3860,13 @@ [-1], [-1], [-1], - [-1], - [-1], - [-1], - [-1], - [-1], - [-1], - [-1], + [10, 6], + [9, 6], + [10, 6], + [9, 6], + [10, 6], + [9, 6], + [10, 6], [-1], [-1], [-1], @@ -3534,11 +3885,11 @@ [15, 0], [14, 0], [15, 0], - [-1], - [-1], - [-1], - [-1], - [-1], + [9, 8], + [6, 8], + [7, 8], + [8, 8], + [9, 8], [15, 0], [14, 0], [15, 0], @@ -3579,6 +3930,15 @@ [-1], [-1], [-1], + [9, 8], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1], [-1], [-1], @@ -3598,13 +3958,13 @@ [-1], [-1], [-1], - [-1], - [-1], - [-1], - [-1], - [-1], - [-1], - [-1], + [10, 7], + [9, 7], + [10, 7], + [9, 7], + [10, 7], + [9, 7], + [10, 7], [-1], [-1], [-1], @@ -3678,6 +4038,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3767,6 +4136,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3856,6 +4234,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -3945,6 +4332,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4034,6 +4430,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4123,6 +4528,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4212,6 +4626,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4301,6 +4724,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4390,6 +4822,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4479,6 +4920,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4568,6 +5018,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4657,6 +5116,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4746,6 +5214,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ], [ @@ -4835,6 +5312,15 @@ [-1], [-1], [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], + [-1], [-1] ] ], @@ -4848,7 +5334,7 @@ "offsetY": 0, "gridCellWidth": 16, "gridCellHeight": 16, - "gridCellsX": 87, + "gridCellsX": 96, "gridCellsY": 27, "entities": [ {"name": "Solid", "id": 25, "_eid": "17026310", "x": 16, "y": 224, "width": 208, "height": 80, "originX": 0, "originY": 0}, @@ -4868,7 +5354,8 @@ {"name": "SemiSolid", "id": 40, "_eid": "59763689", "x": 832, "y": 208, "width": 64, "height": 16, "originX": 0, "originY": 0}, {"name": "SemiSolid", "id": 42, "_eid": "59763689", "x": 1040, "y": 176, "width": 80, "height": 16, "originX": 0, "originY": 0}, {"name": "SemiSolid", "id": 43, "_eid": "59763689", "x": 1184, "y": 208, "width": 80, "height": 16, "originX": 0, "originY": 0}, - {"name": "Solid", "id": 44, "_eid": "17026310", "x": 832, "y": 336, "width": 16, "height": 32, "originX": 0, "originY": 0} + {"name": "Solid", "id": 44, "_eid": "17026310", "x": 832, "y": 336, "width": 16, "height": 32, "originX": 0, "originY": 0}, + {"name": "SemiSolid", "id": 45, "_eid": "59763689", "x": 1424, "y": 160, "width": 80, "height": 16, "originX": 0, "originY": 0} ] }, { @@ -4878,7 +5365,7 @@ "offsetY": 0, "gridCellWidth": 16, "gridCellHeight": 16, - "gridCellsX": 87, + "gridCellsX": 96, "gridCellsY": 27, "entities": [ {"name": "Spawns", "id": 4, "_eid": "25816588", "x": 64, "y": 176, "originX": 0, "originY": 0} @@ -4891,7 +5378,7 @@ "offsetY": 0, "gridCellWidth": 16, "gridCellHeight": 16, - "gridCellsX": 87, + "gridCellsX": 96, "gridCellsY": 27, "entities": [ { @@ -4923,20 +5410,20 @@ }, {"name": "Balloon", "id": 36, "_eid": "16494694", "x": 1296, "y": 176, "originX": 0, "originY": 0}, {"name": "Balloon", "id": 37, "_eid": "16494694", "x": 1360, "y": 160, "originX": 0, "originY": 0}, - {"name": "Balloon", "id": 38, "_eid": "16494694", "x": 1264, "y": 128, "originX": 0, "originY": 0}, { "name": "WaterChange", "id": 40, "_eid": "48957583", - "x": 208, - "y": 208, + "x": 64, + "y": 176, "originX": 0, "originY": 0, "nodes": [ - {"x": 240, "y": 240} + {"x": 96, "y": 240} ], "values": {"Speed": 1} - } + }, + {"name": "End", "id": 42, "_eid": "65940624", "x": 1456, "y": 128, "originX": 0, "originY": 0} ] } ] diff --git a/gamedata/objects/ingame/endflag.py b/gamedata/objects/ingame/endflag.py new file mode 100644 index 0000000..7660c49 --- /dev/null +++ b/gamedata/objects/ingame/endflag.py @@ -0,0 +1,59 @@ +from gamedata.objects.ingame.ennemies.ennemy import Ennemy + +class EndFlag(Ennemy): + + def __init__(self,*args): + + super().__init__(*args) + + self.blueflags = self.game.getSpriteDir("flags/blue/") + self.greenflags = self.game.getSpriteDir("flags/green/") + + self.confettis = {} + self.confettiscolors = ["red","blue","yellow"] + for i in self.confettiscolors: + self.confettis[i] = self.game.getSpriteDir("particles/confetti/"+i+"/") + self.sprites = self.blueflags + + self.depth = -1 + + self.spriteindex = 0 + self.animspeed = 10 + + self.rect[2],self.rect[3] = self.sprites[0].get_size() + + self.candie = False + self.canhit = False + + self.endtimer = self.game.lib.Timer(3) + self.ended = False + + def step(self): + + super().step() + self.spriteindex+=self.animspeed*self.game.dt + + if self.player: + if self.player.rect.colliderect(self.rect): + self.sprites = self.greenflags + self.player.canmove = False + if not self.ended: + self.ended = True + nb = 30 + for i in range(nb): + color = self.game.lib.choice(self.confettiscolors) + sprites = self.confettis[color] + velx = self.game.lib.randint(-1,1) + vely = self.game.lib.randint(-5,-4)/3 + steps = 5 + offsetx = self.game.lib.randint(-10*steps,10*steps)/(steps) + offsety = self.game.lib.randint(-5,5) + self.game.addParticle(sprites,self.rect.center[0]+offsetx,self.rect.center[1]+offsety,velx=velx,vely=vely,modvely=0.05,fps=2) + + if self.ended: + if self.endtimer.tick(self.game.dt): + self.game.scene = self.game.scenes.overworld + + def draw(self): + sprite = self.sprites[int(self.spriteindex)%len(self.sprites)] + self.game.window.blit(sprite,[self.rect[0]-self.game.globals["camerax"],self.rect[1]-self.game.globals["cameray"]]) diff --git a/gamedata/objects/ingame/player.py b/gamedata/objects/ingame/player.py index ba7040c..5554616 100644 --- a/gamedata/objects/ingame/player.py +++ b/gamedata/objects/ingame/player.py @@ -15,12 +15,12 @@ class Player(Movable): self.spritefalling = game.sprite_lib["player/falling.png"] # Descending self.spritehurt = game.sprite_lib["player/hurt.png"] # Being hurted self.spritelanding = game.sprite_lib["player/landing.png"] - self.testsprites = self.game.getchars("Test") self.landingtimer = 0 self.maxlandtime = 0.15 self.spriteindex = 0 self.flipx = False self.animationspeed = 2.5 + self.canmove = True self.sprite = self.spritestill collisionratio = 0.7 @@ -116,7 +116,8 @@ class Player(Movable): keys = self.game.inputs["keys"] self.horspd = 0 if canmove: - self.horspd=(keys["right"]["pressed"]-keys["left"]["pressed"])*self.game.dt*self.speed + if self.canmove: + self.horspd=(keys["right"]["pressed"]-keys["left"]["pressed"])*self.game.dt*self.speed if self.landingtimer<=0: self.sprite = self.spritestill @@ -193,7 +194,7 @@ class Player(Movable): self.jumped = False if self.onground or self.leaptimer<0: - if 0