# HG changeset patch # User Neil Muller # Date 1302187374 -7200 # Node ID 4050e77dade6f0535e7c724f81f1df98eb8537b0 # Parent c30fcf903d2952457be1f981bb37b877cb6ad6f6 Add support for background music tracks diff -r c30fcf903d29 -r 4050e77dade6 skaapsteker/cutscene.py --- a/skaapsteker/cutscene.py Thu Apr 07 15:01:23 2011 +0200 +++ b/skaapsteker/cutscene.py Thu Apr 07 16:42:54 2011 +0200 @@ -9,7 +9,7 @@ from .widgets.text import Text, unindent_text class CutScene(Scene): - def __init__(self, game_state, text, background): + def __init__(self, game_state, text, background, music=None): super(CutScene, self).__init__(game_state) self.text = text self.text_widget = Text(text, pygame.Rect(20, 20, 800-40, 600-40), @@ -17,6 +17,9 @@ self.background = data.load_image('backgrounds/' + background) self.start_time = pygame.time.get_ticks() self.run_time = 60000 # ms + self._background_music = None + if music and pygame.mixer.get_init(): + self._background_music = data.filepath(music) def draw(self, surface, engine): viewport = surface.get_clip() @@ -42,6 +45,15 @@ ChangeScene.post(MenuScene(self.game_state)) super(CutScene, self).dispatch(ev) + def enter(self): + if self._background_music: + pygame.mixer.music.load(self._background_music) + pygame.mixer.music.play(-1) + + def leave(self): + if self._background_music: + pygame.mixer.music.stop() + def opening_cutscene(game_state): text = u""" diff -r c30fcf903d29 -r 4050e77dade6 skaapsteker/level.py --- a/skaapsteker/level.py Thu Apr 07 15:01:23 2011 +0200 +++ b/skaapsteker/level.py Thu Apr 07 16:42:54 2011 +0200 @@ -1,6 +1,6 @@ import json -from pygame import Rect, Surface, Color +from pygame import Rect, Surface, Color, mixer from pygame.sprite import LayeredUpdates from pygame.locals import SRCALPHA, HWSURFACE @@ -63,7 +63,9 @@ self.build_tiles() self.setup_enemies() self.setup_player(player) - + self._background_music = None + if 'music' in self.level_data and mixer.get_init(): + self._background_music = data.filepath('music/' + self.level_data['music']) def build_backgrounds(self): self.backgrounds = [] @@ -71,6 +73,16 @@ self.backgrounds.append(data.load_image('backgrounds/' + background)) + def leave(self): + if self._background_music: + mixer.music.stop() + + + def enter(self): + if self._background_music: + mixer.music.load(self._background_music) + mixer.music.play(-1) + def build_tiles(self): self.tileset = TileSet(self.level_data['tileset']) self.tiles = LayeredUpdates() diff -r c30fcf903d29 -r 4050e77dade6 skaapsteker/levelscene.py --- a/skaapsteker/levelscene.py Thu Apr 07 15:01:23 2011 +0200 +++ b/skaapsteker/levelscene.py Thu Apr 07 16:42:54 2011 +0200 @@ -70,10 +70,12 @@ def leave(self): """Freeze the scene, for serialization""" self._world.freeze() + self._level.leave() def enter(self): """Unfreeze""" self._world.thaw() + self._level.enter() def draw(self, screen_surface, engine): if self._clip_rect is None: