From 03b22cc3af6aac3890d4c837d30c36389083c983 Mon Sep 17 00:00:00 2001 From: "theo@manjaro" Date: Fri, 26 Nov 2021 16:28:28 +0100 Subject: [PATCH] GUI SFXs --- gamedata/objects/ingame/pause.py | 8 ++++++++ gamedata/objects/levels.py | 6 ++++++ gamedata/objects/results.py | 5 +++++ gamedata/sounds/sfx/mapmove.wav | Bin 0 -> 6711 bytes gamedata/sounds/sfx/return.wav | Bin 0 -> 14347 bytes gamedata/sounds/sfx/select.wav | Bin 0 -> 7732 bytes 6 files changed, 19 insertions(+) create mode 100644 gamedata/sounds/sfx/mapmove.wav create mode 100644 gamedata/sounds/sfx/return.wav create mode 100644 gamedata/sounds/sfx/select.wav diff --git a/gamedata/objects/ingame/pause.py b/gamedata/objects/ingame/pause.py index 4459bfe..cfceff5 100644 --- a/gamedata/objects/ingame/pause.py +++ b/gamedata/objects/ingame/pause.py @@ -13,6 +13,10 @@ class Pause(BaseObject): self.fill.fill([62,33,55]) self.fill.set_alpha(100) + self.sfx = self.game.sound_lib["sfx/mapmove.wav"] + self.resumesfx = self.game.sound_lib["sfx/select.wav"] + self.backsfx = self.game.sound_lib["sfx/return.wav"] + self.trash = game.sprite_lib["trash.png"] txt = "Cleared : "+str(self.game.globals["trashes"])+" / "+str(self.game.globals["totaltrashes"]) self.trashcounter = self.game.getchars(txt) @@ -39,10 +43,12 @@ class Pause(BaseObject): def resume(self): self.game.globals["pause"] = False self.game.gameloop.delid(self.id) + self.resumesfx.play() def quit(self): tileset = self.game.gameloop.findname("TilesetRenderer")[0] tileset.bgm.stop() + self.backsfx.play() t = Transition(self.game,time=0.5) self.game.gameloop.summon(t) self.ispaused = True @@ -50,8 +56,10 @@ class Pause(BaseObject): def step(self): if self.game.inputs["keys"]["right"]["timer"]==1: self.cursor+=1 + self.sfx.play() if self.game.inputs["keys"]["left"]["timer"]==1: self.cursor-=1 + self.sfx.play() self.cursor = self.cursor%len(self.optionsorder) if self.game.inputs["keys"]["up"]["timer"]==1: self.game.inputs["keys"]["up"]["timer"]=10 diff --git a/gamedata/objects/levels.py b/gamedata/objects/levels.py index d9fbd0d..56cdb99 100644 --- a/gamedata/objects/levels.py +++ b/gamedata/objects/levels.py @@ -14,6 +14,9 @@ class Levels(BaseObject): self.bgm = self.game.sound_lib["bgm/overworld.mp3"] self.bgm.play(-1) + self.sfx = self.game.sound_lib["sfx/mapmove.wav"] + self.launchsfx = self.game.sound_lib["sfx/select.wav"] + self.launched = False self.blueflags = self.game.getSpriteDir("flags/blue/") @@ -69,14 +72,17 @@ class Levels(BaseObject): if self.game.inputs["keys"]["right"]["timer"]>0: if "Level "+str(self.cursor+1) in self.game.globals["finishedlevels"] or self.game.globals["allunlocked"]: self.cursor+=1 + self.sfx.play() self.flip = False if self.game.inputs["keys"]["left"]["timer"]>0: self.cursor-=1 self.flip = True + self.sfx.play() if self.game.inputs["keys"]["up"]["timer"]==1: # Launch the level t = Transition(self.game,level = "Level "+str(self.cursor+1)) self.launched = True + self.launchsfx.play() self.game.globals["levelname"] = self.cursor if str(self.cursor) in self.customvalues.keys(): props = self.customvalues[str(self.cursor)].split(";") diff --git a/gamedata/objects/results.py b/gamedata/objects/results.py index 557f0ab..8f1819a 100644 --- a/gamedata/objects/results.py +++ b/gamedata/objects/results.py @@ -16,6 +16,8 @@ class Results(BaseObject): self.time = min(99,self.game.globals["timer"]) self.sparkles = game.getSpriteDir("particles/dust/") + self.medalsfx = self.game.sound_lib["sfx/select.wav"] + self.backsfx = self.game.sound_lib["sfx/return.wav"] self.text = self.game.getchars("Cleared : 0 / "+str(self.maxcount)) self.levelname = self.game.getchars("Level "+str(self.game.globals["levelname"]+1)) @@ -58,6 +60,7 @@ class Results(BaseObject): self.text = self.game.getchars("Cleared : "+str(int(self.currentcount))+" / "+str(self.maxcount)) if self.currentcount == self.maxcount: # Spawn sparkles self.game.addParticle(self.sparkles,self.centerx+150+self.game.globals["camerax"],self.centery+self.game.globals["cameray"],fps=6,depth=4) + self.medalsfx.play() past = int(self.currenttime) self.currenttime-=self.game.dt @@ -71,6 +74,7 @@ class Results(BaseObject): self.seconds = self.game.getchars(txt) if int(self.time)==int(self.currenttime) and int(self.game.globals["timetobeat"]) >= int(self.currenttime): # Spawn sparkles self.game.addParticle(self.sparkles,self.centerx+150+self.game.globals["camerax"],self.centery+20+self.game.globals["cameray"],fps=6,depth = 4) + self.medalsfx.play() if not self.transition: keys = ["up","down","left","right"] @@ -79,6 +83,7 @@ class Results(BaseObject): if self.transition: t = Transition(self.game) self.game.gameloop.summon(t) + self.backsfx.play() if not self.faded: self.alpha = (1-self.fadetimer.getratio())*self.alphamax diff --git a/gamedata/sounds/sfx/mapmove.wav b/gamedata/sounds/sfx/mapmove.wav new file mode 100644 index 0000000000000000000000000000000000000000..33f415686e2406cb6a7433c9dac3af2a47b0ad9a GIT binary patch literal 6711 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 literal 0 HcmV?d00001