diff --git a/gamedata/objects/gameloop.py b/gamedata/objects/gameloop.py index c441d8e..40dbbec 100644 --- a/gamedata/objects/gameloop.py +++ b/gamedata/objects/gameloop.py @@ -83,5 +83,4 @@ class GameLoop(): game.screenoffy = (game.screenh-h)/2 game.resizescreenw = w game.resizescreenh = h - game.pygame.draw.circle(game.realwindow,[255,255,0],game.inputs["mouse"]["pos"],5) game.screen.blit(game.pygame.transform.scale(game.realwindow,[w,h]),[game.screenoffx,game.screenoffy]) diff --git a/gamedata/objects/gameover.py b/gamedata/objects/gameover.py index ecc7569..7887948 100644 --- a/gamedata/objects/gameover.py +++ b/gamedata/objects/gameover.py @@ -16,6 +16,11 @@ class GameOver(BaseObject): btn.click = fnBack game.gameloop.summon(btn) + self.sfxscroll = game.sound_lib["sfx/scorescroll.wav"] + self.sfxscore = game.sound_lib["sfx/score.wav"] + + self.sfxtimer = game.lib.Timer(1) + self.depth = -1 # Updating highscore @@ -57,7 +62,8 @@ class GameOver(BaseObject): def step(self): - self.displayscore+=(self.game.globals["score"]-self.displayscore)*self.game.dt*0.4+self.game.dt*2 + update_value = (self.game.globals["score"]-self.displayscore)*self.game.dt*0.4+self.game.dt*2 + self.displayscore+= update_value self.displayscore = min(self.game.globals["score"],self.displayscore) colorvalue = self.displayscore*0.9 @@ -69,7 +75,14 @@ class GameOver(BaseObject): else: # White to green self.color = [255-colorvalue,255,255-colorvalue] + + # Scroll sfx + if int(self.displayscore)!=int(self.game.globals["score"]): + if self.sfxtimer.tick(min(update_value,0.5)): + self.sfxscroll.play() + if not self.launched and int(self.displayscore)==int(self.game.globals["score"]): + if self.launchtimer.tick(self.game.dt): # Launch particles self.launched = True @@ -96,6 +109,8 @@ class GameOver(BaseObject): vely = random.random()*5+2 self.game.addParticle(sprites,offx,offy,velx=velx,vely=vely,flipx=random.randint(0,1),fps=2) + self.sfxscore.play() + if self.launched: self.flashtimer.tick(self.game.dt) diff --git a/gamedata/objects/ingame/lemmings.py b/gamedata/objects/ingame/lemmings.py index 2036e75..c9ef4c4 100644 --- a/gamedata/objects/ingame/lemmings.py +++ b/gamedata/objects/ingame/lemmings.py @@ -16,6 +16,10 @@ class Lemming(BaseObject): self.cooldown = False self.cooldowntimer = game.lib.Timer(0.5) + self.sfx = game.getSpriteDir("sfx/pinmik/",ext=".wav",assetdir="sound_lib") + self.sfxtimer = game.lib.Timer(15+random.random()*10) + self.deathsfx = random.choice(game.getSpriteDir("sfx/death/",ext=".wav",assetdir="sound_lib")) + self.handlepause = True self.scoreratio = 0.3 @@ -149,6 +153,14 @@ class Lemming(BaseObject): sprites = self.game.getSpriteDir("particles/ghost/") self.game.addParticle(sprites,self.rect.center[0],self.rect.center[1],fps=2,vely=-1) + self.deathsfx.play() + self.game.sound_lib["sfx/death.wav"].play() + + # SFX + if self.sfxtimer.tick(self.game.dt): + random.choice(self.sfx).play() + self.sfxtimer = self.game.lib.Timer(15+random.random()*10) + def launch(self): # Launch itself in the mouse direction xdiff = self.game.inputs["mouse"]["pos"][0]-self.rect.center[0] @@ -160,6 +172,8 @@ class Lemming(BaseObject): self.selected = False self.holdtimer.reset() + self.manager.dash() + def move(self,x,y): # Remember the digits, pygame rects only move with integers velx = x+self.restx diff --git a/gamedata/objects/ingame/manager.py b/gamedata/objects/ingame/manager.py index baaf84d..5b17cd4 100644 --- a/gamedata/objects/ingame/manager.py +++ b/gamedata/objects/ingame/manager.py @@ -26,6 +26,11 @@ class Manager(BaseObject): # Sky gradients self.game.gameloop.summon(Skies(game)) + # Dash sfx for the pinmiks + self.sfx = game.sound_lib["sfx/dash.wav"] + self.can_sfx = True + self.sfxtimer = game.lib.Timer(0.4) + # Clouds in the background self.clouds = Clouds(game,game.DISPLAY_WIDTH,speed=30,cameraratio=0.8) self.cloudsdark = Clouds(game,game.DISPLAY_WIDTH,speed=10,cameraratio=0.4,spritename="cloudsdark.png") @@ -48,7 +53,16 @@ class Manager(BaseObject): self.game.gameloop.summon(Spawner(self.game,self.tiles,skins=self.skins)) self.game.gameloop.summon(Spawner(self.game,self.tiles,skins=self.skins)) + def dash(self): + # Called by pinmiks when dashing + if self.can_sfx: + self.sfx.play() + self.can_sfx = False + def step(self): + if not self.can_sfx: + if self.sfxtimer.tick(self.game.dt): + self.can_sfx = True lemmings = self.game.gameloop.findname("Lemming") nblemmings = len(lemmings) + len(self.game.gameloop.findname("Spawner")) # Updating score diff --git a/gamedata/objects/ingame/spawner.py b/gamedata/objects/ingame/spawner.py index fcc94dd..6809f00 100644 --- a/gamedata/objects/ingame/spawner.py +++ b/gamedata/objects/ingame/spawner.py @@ -24,6 +24,8 @@ class Spawner(BaseObject): # Depth updating based on position self.depth = 1+self.rect[1]/100 + game.sound_lib["sfx/fall.wav"].play() + def step(self): if self.timer.tick(self.game.dt): lemming = Lemming(self.rect[0],self.rect[1],self.game,speedmargin=self.speedmargin,skin=self.skin) @@ -38,6 +40,8 @@ class Spawner(BaseObject): self.game.addParticle(sprites,self.rect[0],self.rect[1]+20,velx=-1,vely=-0.5) self.game.addParticle(sprites,self.rect[0],self.rect[1]+20,velx=1,vely=-0.5) + self.game.sound_lib["sfx/land.wav"].play() + def draw(self): # Draw the shadow diff --git a/gamedata/sounds/sfx/dash.wav b/gamedata/sounds/sfx/dash.wav new file mode 100644 index 0000000..73cf152 Binary files /dev/null and b/gamedata/sounds/sfx/dash.wav differ diff --git a/gamedata/sounds/sfx/death.wav b/gamedata/sounds/sfx/death.wav new file mode 100644 index 0000000..90c5d44 Binary files /dev/null and b/gamedata/sounds/sfx/death.wav differ diff --git a/gamedata/sounds/sfx/death/0.wav b/gamedata/sounds/sfx/death/0.wav new file mode 100644 index 0000000..910b864 Binary files /dev/null and b/gamedata/sounds/sfx/death/0.wav differ diff --git a/gamedata/sounds/sfx/death/1.wav b/gamedata/sounds/sfx/death/1.wav new file mode 100644 index 0000000..d5f036c Binary files /dev/null and b/gamedata/sounds/sfx/death/1.wav differ diff --git a/gamedata/sounds/sfx/death/dash.wav b/gamedata/sounds/sfx/death/dash.wav new file mode 100644 index 0000000..fae62ff Binary files /dev/null and b/gamedata/sounds/sfx/death/dash.wav differ diff --git a/gamedata/sounds/sfx/fall.wav b/gamedata/sounds/sfx/fall.wav new file mode 100644 index 0000000..a365e00 Binary files /dev/null and b/gamedata/sounds/sfx/fall.wav differ diff --git a/gamedata/sounds/sfx/land.wav b/gamedata/sounds/sfx/land.wav new file mode 100644 index 0000000..86cfcb5 Binary files /dev/null and b/gamedata/sounds/sfx/land.wav differ diff --git a/gamedata/sounds/sfx/pinmik/0.wav b/gamedata/sounds/sfx/pinmik/0.wav new file mode 100644 index 0000000..3a3e0a2 Binary files /dev/null and b/gamedata/sounds/sfx/pinmik/0.wav differ diff --git a/gamedata/sounds/sfx/pinmik/1.wav b/gamedata/sounds/sfx/pinmik/1.wav new file mode 100644 index 0000000..b17c886 Binary files /dev/null and b/gamedata/sounds/sfx/pinmik/1.wav differ diff --git a/gamedata/sounds/sfx/pinmik/2.wav b/gamedata/sounds/sfx/pinmik/2.wav new file mode 100644 index 0000000..fc17ad1 Binary files /dev/null and b/gamedata/sounds/sfx/pinmik/2.wav differ diff --git a/gamedata/sounds/sfx/pinmik/3.wav b/gamedata/sounds/sfx/pinmik/3.wav new file mode 100644 index 0000000..8b8d92a Binary files /dev/null and b/gamedata/sounds/sfx/pinmik/3.wav differ diff --git a/gamedata/sounds/sfx/score.wav b/gamedata/sounds/sfx/score.wav new file mode 100644 index 0000000..f541df9 Binary files /dev/null and b/gamedata/sounds/sfx/score.wav differ diff --git a/gamedata/sounds/sfx/scorescroll.wav b/gamedata/sounds/sfx/scorescroll.wav new file mode 100644 index 0000000..e32216b Binary files /dev/null and b/gamedata/sounds/sfx/scorescroll.wav differ