From 564a5a664cf3a7767330bd9c472592d4902f68df Mon Sep 17 00:00:00 2001 From: "theo@manjaro" Date: Tue, 23 Nov 2021 17:55:48 +0100 Subject: [PATCH] SFX overhaul --- gamedata/maps/Level 1/map.json | 43 ++++++++++++++--------------- gamedata/objects/ingame/endflag.py | 3 ++ gamedata/objects/ingame/player.py | 8 ++++-- gamedata/sounds/sfx/hurt.wav | Bin 0 -> 25184 bytes gamedata/sounds/sfx/jump.wav | Bin 4354 -> 8718 bytes gamedata/sounds/sfx/land.wav | Bin 3579 -> 4271 bytes gamedata/sounds/sfx/win.wav | Bin 0 -> 43870 bytes 7 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 gamedata/sounds/sfx/hurt.wav create mode 100644 gamedata/sounds/sfx/win.wav diff --git a/gamedata/maps/Level 1/map.json b/gamedata/maps/Level 1/map.json index 53cf876..f3e2170 100644 --- a/gamedata/maps/Level 1/map.json +++ b/gamedata/maps/Level 1/map.json @@ -1246,7 +1246,7 @@ [-1], [-1], [-1], - [-1], + [2, 5], [-1], [-1], [-1], @@ -1418,13 +1418,13 @@ [-1], [-1], [-1], - [-1], - [5, 4], - [6, 4], - [4, 4], + [2, 6], + [3, 6], [-1], [-1], [-1], + [4, 6], + [-1], [-1], [0, 0], [5, 2], @@ -1595,13 +1595,13 @@ [-1], [-1], [-1], - [-1], - [5, 5], - [6, 5], - [4, 5], + [0, 5], + [1, 5], [-1], [-1], [-1], + [4, 6], + [-1], [-1], [0, 1], [1, 1], @@ -1772,12 +1772,12 @@ [2, 0], [-1], [-1], - [-1], - [7, 4], - [8, 4], - [4, 5], + [0, 6], + [1, 6], [-1], [-1], + [2, 6], + [4, 6], [-1], [-1], [0, 1], @@ -1949,12 +1949,12 @@ [2, 1], [-1], [-1], - [-1], - [7, 5], - [8, 5], - [4, 6], + [0, 5], + [1, 5], [-1], [-1], + [0, 5], + [1, 5], [-1], [-1], [0, 1], @@ -2126,11 +2126,11 @@ [7, 0], [8, 0], [-1], + [0, 6], + [1, 6], [-1], - [0, 5], - [1, 5], - [4, 6], [-1], + [0, 6], [6, 0], [7, 0], [7, 0], @@ -6114,8 +6114,7 @@ {"name": "Solid", "id": 50, "_eid": "17026310", "x": 2672, "y": 176, "width": 128, "height": 96, "originX": 0, "originY": 0}, {"name": "Solid", "id": 51, "_eid": "17026310", "x": 2720, "y": 112, "width": 80, "height": 64, "originX": 0, "originY": 0}, {"name": "Solid", "id": 52, "_eid": "17026310", "x": 2736, "y": 96, "width": 64, "height": 16, "originX": 0, "originY": 0}, - {"name": "Solid", "id": 53, "_eid": "17026310", "x": 2784, "y": 16, "width": 16, "height": 80, "originX": 0, "originY": 0}, - {"name": "SemiSolid", "id": 54, "_eid": "59763689", "x": 2608, "y": 112, "width": 48, "height": 16, "originX": 0, "originY": 0} + {"name": "Solid", "id": 53, "_eid": "17026310", "x": 2784, "y": 16, "width": 16, "height": 80, "originX": 0, "originY": 0} ] }, { diff --git a/gamedata/objects/ingame/endflag.py b/gamedata/objects/ingame/endflag.py index 91af977..9f4b7a1 100644 --- a/gamedata/objects/ingame/endflag.py +++ b/gamedata/objects/ingame/endflag.py @@ -29,6 +29,8 @@ class EndFlag(Ennemy): self.endtimer = self.game.lib.Timer(0.5) self.ended = False + self.sfx = self.game.sound_lib["sfx/win.wav"] + def step(self): super().step() @@ -50,6 +52,7 @@ class EndFlag(Ennemy): 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) + self.sfx.play() if self.ended: if self.endtimer.tick(self.game.dt): diff --git a/gamedata/objects/ingame/player.py b/gamedata/objects/ingame/player.py index d9da055..91cce88 100644 --- a/gamedata/objects/ingame/player.py +++ b/gamedata/objects/ingame/player.py @@ -88,6 +88,7 @@ class Player(Movable): self.landsfx = self.game.sound_lib["sfx/land.wav"] self.slamsfx = self.game.sound_lib["sfx/slam.wav"] self.jumpsfx = self.game.sound_lib["sfx/jump.wav"] + self.hurtsfx = self.game.sound_lib["sfx/hurt.wav"] def step(self): @@ -204,8 +205,8 @@ class Player(Movable): self.verspd= self.jump*self.gravityway if self.leaptimer<0 and not self.onground: self.verspd = -abs(self.verspd) # Small leap - else: - self.jumpsfx.play() + self.leaptimer = 1 + self.jumpsfx.play() self.jumped = True super().step() # Actually move # Updated hitrect @@ -244,7 +245,7 @@ class Player(Movable): if self.leaptimer>0: self.verspd*=self.gravityway else: - self.leaptimer = 0 + self.leaptimer = 1 self.canfastfall = False self.fastfall = self.gravityway else: @@ -283,6 +284,7 @@ class Player(Movable): self.canfastfall = True if resetcombo: self.combo = 0 + self.hurtsfx.play() def draw(self): flipy = (self.gravityway<0 and not self.leaptimer<0) diff --git a/gamedata/sounds/sfx/hurt.wav b/gamedata/sounds/sfx/hurt.wav new file mode 100644 index 0000000000000000000000000000000000000000..8e0f6fdbb50b3b8236ad44ac5524ffaaad6d623c GIT binary patch literal 25184 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 literal 4354 zcmcha>rNU$6vy#fKlTy&Dot9GCQZ}W)ElC56+~A>@PZXZk*4)V)go#sC{__r6crV3 zZ_$V8r=FdeojJ?yqBhze5jHW|^P4mOncZo4Q(yn*xyjV@vhlU6*Z%@8O?B{jRWOmi zI@2?g!|J#GhJQqs)4SQ7?aY>7laXem7(W$~GKrA&{o8j99~%{#2+fohN-M=oX`@&e z?TijaC&Q{>Q?M&II8OIu^00hzxS!AG3xxuF=kqzj9wkfIrR-3C$!vt|jUSp?El?dq z3>-S|<=|9sak>OBe{wJv}{vrTxlvrF>js91+M6Y7HP8^L4bCJ8TXIn?SDU;EKpm zD0Yd~VMUcAGW2@E5z!0y=CT(zSLY|k3PfFaABx7~&Tq|hTUsqv@MEq*^a)I5Q3WZS zI=#86luwRNWQewKJ`&9)Vd2i{DR-N>-6l5_jJd6t`N!(2;z@rc$v3xGxxG3+CAL~& zn(yi+7t&K63naqn;-=0g?ko68%=TK(wj?rvvP}A$Tk>1Yau~R+Xe(M!25H6XsoOZM z)qRzuzHqusl3>tUl!YSSIkF1_owBP-aTThMm4F_tYX3~;>{bq~LRD;aQ;?kKYHRDX z!@ScF{1?+;;^_MJ^2{i%dOavZ%VJjv9z!q^ zVwYFY^#xx+RST%Lqnt~T%ExjPdgMxy#(x~cesrc?J|@Ax?vvdqco}vAFGGeOXk5(OCo3?o6nO7syo=r-#*wRSH)1fp4EPOA-uGmCXc(e| z7Bt5(9f`z5gme&SUj;BU!g2BmKfg@VhZ!q zLI0pXFr>Zvu+H5_M)e6AGKLtRnO$65n4h0R%p$%bz5vmQ;K;}*x;46&`tnn4#_uE) ajzm94qcey|HPeWxi4fc~RD+2JG5HrZsa?MS diff --git a/gamedata/sounds/sfx/land.wav b/gamedata/sounds/sfx/land.wav index ffee4b4db301d4bc98675bcd0c84e379c8a79029..2805d5111a4695aa1ce63dceb5abeb71be272712 100644 GIT binary patch literal 4271 zcmdT`X;<1n6vc1-*q_k9(sNqR(big*;#v_!Km-ed7#2m10$Ph0ML`r4_kH<=eQz?8 zOcrd=FZ6meGs$G;y?ft%vAeCc_2RwF*7wo=*&T>{fT67gem>pW$Zw17oz3NpI7N7{ zv$L}ekfdU*c6@wvRIOH{KSxF!j?q!4(?0_UBj%SGay7QF@>5wjGCYhEe64zMaejVw zc6xepGCuBdxh5ti+-`rN00-eok~B&0xjmjy^)(ND4hy73gw{69=sZk$e0Dh7dS*QK$6(l*w{Egjl>fO215w4=geG6gEC2n z!+v3hll&SJ6sIR#~~Uh7D6f6b%YcH zGEHwsS@DqT5@3&Mx(6UppOC$nh)_MXT8Snj7bu}CzX`}8{vb9Gn?<&VT4Yk1YRe1Z zoAQwOczt|;sXVJ#Cb2BmZdg$jB;Z8Ql?PWVVh;2)i4n!fEWUu%JQqAG3~s9zUzYbp zUUkqPIAd>XZ~yYOqvKm==l8Cz?w+3B-XC^*UtfPeCpp@f$w}<1mNT*i@ca3ikLZsf z^SI(B(m|LfH;V?j(DM=+-0%eNgKfY!qz#ZRz!v4y`jU%Tl~us*!?dg_#v^VjP0Pkq zGr?5Qy=Y(aRMh+g$c1Y!TGyg;qr~ziBtc_fB@`CoJQ6x2DN-4P-1E4`N8Qf6Os+9P zF*7K36D2YXihyrf^myID33f7noo84FF=)dg6|T1-?KjwM0BbU`6dT*5`xB*Ky-61N zSc*fRWI3sg82T^+&u!dFib))eQ~G47kg)kZ(B24-z! zRMhGnG0lr=K~ued__>*+b?@m?#;LVrl~q=AG_Et8t?X%SVBE2>JIkWT^QIfurOfO> kgI!3oTz4*=nw?Vbo@TqZPONdi@PGU}&{#n~#zktU*J^%m! literal 3579 zcmbuA>2}&k7J%LV=1-q9k1!81opgL+CpM13F&MLh*};GSu}W+b2qZvYHUVZeX7dIe zubuQVXZiu=Vde#R&EY9 z+L-k9>Y9#B@2_u~^g5lu6n=NytXPdn2jsiz67TQcRfF~z9g;aA)3W7;^lH0qRhh}T zB~X83%f{fQvkq->qjkyK5Sr+mG-9{;muhdu=)+Rs*l!NGe`_naB7m|!9-(_NsV0t7 z9)mZ6)mmzwCh2TyvU<`XuR!R34ob!Egf zS!k-P!`r@c^|iTi*TpRB*oS3n3CjK|vX0B80Tm3FdmYC!J60W>T_jz8&6-SOye@AZ zR82_gV0g8kzmz#oEIU#^rPk`J?e^rzmYW)}>Bfpn!t*Lu6e`|^h|J^+_%E$e*(N&d z3`^BJm>0Bed5QknwBMv6o>wAkYcwIX*Hz)#asb}9*&I%{c-KJG&64M`{ZWm)eMg&? ziBg9O$(06^B@C@XWRi#{Nzt42H+)a@czll7u=23ROmhyiCF(P~U?}_3QH?~6T1_MU zz05ZlB?H>wFD|%#_N!lgbN6#6F5y-3kt99+5YB$+Wp;M*G=;cMFMqr`&qs9DyGbV% z>6jMjmQy5&`XgAS zMo}6qGv7iEO=Eid)Sl#k#qUu5D~t@F+?#+Lt`O6@guYTbC@wxC~gv zZ3#xojXar3y44m>@rTSNG%icE9Y&$3_pG~GgV|y>#V^mBt?tpqIGY~~Ha2>bVlJQW zUBsm-v$s|E`zMotQ@H+C;v0=mPb-!2DXNlg={ucfvow^*6&ZZT0u|Z^0GtIx!ggkRiY?@pc%#k!3d(*mc-+*)jIm2p;8$v7O7P2bhp z@spDr4C|!Qw|u_c?QZw`VzJb2_l!rQ;c&RQxtXn0Y(`_D(>Wdt2E*at__#|^R5F=F zJ)Q_nr&KCc2)N2Hj6x`MkYxJs@Q^7M%e`K2GMNy5e<&Jt$z)2sUSF%#8tryMCXl`Q!1p)nqc2>KqI~5K*~Yu48|} zcDo&@=8swj&3U>K%pItKL8-QC?tCX<1kPH&^pC;?AxU?vr0(>h=tb!!2E7Jx|u5)lA(!a@QsE-u#aR3 zaNE2Ame@>Z=Fq7*{A?1Dppyf#%z#W{Jhj zg~|%hTMxw8EX~M*n%#4d1$BM^0iLk=<#62lG7Az(u|<1?oSnCiGU0K2jxYI;mrurY z=sw&h1LS@1^ot`Ji-XqrYVfevWdj|s0K*@JJ2HPnfbM(3z8i^vR{XPIVeb5VrSQ8z zVYoh+FMOX>__5ZX%tGLjm``9~R10c|f3f_Jf5Pmg@Cl!}6P<59HEZzyC&^iBe_3J} z#=e8*5ncfLyBf?cfZxmc?z7s32_}dHXJygCPwM(~`Y}Vq!>zGsd}8CHi6@hf_tX5z uyiCv6&5p}gcF5zh`9>FL*%#Vh=g}Etesbn%7kD~Hz2N-LRsV(HqyGcL$JvSi diff --git a/gamedata/sounds/sfx/win.wav b/gamedata/sounds/sfx/win.wav new file mode 100644 index 0000000000000000000000000000000000000000..671f15d019cc54d8a4133b93d65aa9ef0f5b6732 GIT binary patch literal 43870 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