Mercurial > skaapsteker
changeset 243:4050e77dade6
Add support for background music tracks
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 07 Apr 2011 16:42:54 +0200 |
parents | c30fcf903d29 |
children | 5bbf90e6a94b |
files | skaapsteker/cutscene.py skaapsteker/level.py skaapsteker/levelscene.py |
diffstat | 3 files changed, 29 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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"""
--- 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()
--- 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: