Mercurial > skaapsteker
changeset 457:de224d9fb943
merge
author | Adrianna Pińska <adrianna.pinska@gmail.com> |
---|---|
date | Sat, 09 Apr 2011 20:49:53 +0200 |
parents | 2dcaaf6abb9c (current diff) 95527fd29872 (diff) |
children | fbae2da0c3c0 |
files | data/levels/temple.json |
diffstat | 8 files changed, 51 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/data/levels/temple.json Sat Apr 09 20:49:20 2011 +0200 +++ b/data/levels/temple.json Sat Apr 09 20:49:53 2011 +0200 @@ -31,5 +31,9 @@ "doorways": { "starting": {"type": "StartingDoorway", "pos": [4, 16], "facing": "right"}, "to_temple_grounds": {"type": "Doorway", "pos": [17, 16], "facing": "left", "leadsto": "temple_grounds.starting"} + }, + "music" : { + "track" : "ambient japanese music 1.ogg", + "volume" : 1.0 } }
--- a/skaapsteker/cutscene.py Sat Apr 09 20:49:20 2011 +0200 +++ b/skaapsteker/cutscene.py Sat Apr 09 20:49:53 2011 +0200 @@ -116,9 +116,22 @@ Story: Anna Malczyk - Music: Somewhere - - Sounds: Somewhere else + Music & Sound Effects: + OLPC Sound Library: Richard Boulanger; + The Free Sound Project: + Connor Purcell, + Nathan Hill, + Donnie Thompson, + Muki, + Tom Potter, + Kayden Riggs, + ITE, + GRSites.com, + dobroide, + pauliep83, + nextmaking, + aesqe, + inferno """ background = 'background_03_back.png' music = None
--- a/skaapsteker/engine.py Sat Apr 09 20:49:20 2011 +0200 +++ b/skaapsteker/engine.py Sat Apr 09 20:49:53 2011 +0200 @@ -22,8 +22,6 @@ self.game_state = GameState(os.path.join(options['save_location'], 'savegame.json')) if self.game_state.can_resume(): self.game_state.load_game() - else: - self.game_state.new_game() self.soundsystem = soundsystem def change_scene(self, next_scene): @@ -44,6 +42,10 @@ for ev in events: if ev.type is QUIT: return + if NewGameEvent.matches(ev): + self.game_state.new_game() + fox = self.game_state.world.fox + ChangeScene.post((ev.scene_type, '.'.join([fox.level, fox.doorway]))) if ChangeScene.matches(ev): next_scene = ev.next_scene if not isinstance(next_scene, Scene): @@ -103,6 +105,14 @@ def matches(cls, ev): return ev.type is USEREVENT and ev.utype == cls.utype +class NewGameEvent(UserEvent): + + utype = "NEW_GAME_EVENT" + + @classmethod + def post(cls, scene_type): + super(NewGameEvent, cls).post(scene_type=scene_type) + class ChangeScene(UserEvent): utype = "CHANGE_SCENE"
--- a/skaapsteker/gamestate.py Sat Apr 09 20:49:20 2011 +0200 +++ b/skaapsteker/gamestate.py Sat Apr 09 20:49:53 2011 +0200 @@ -37,6 +37,7 @@ def __init__(self, game_file): self._game_file = game_file + self.world = None def can_resume(self): return os.path.exists(self._game_file)
--- a/skaapsteker/level.py Sat Apr 09 20:49:20 2011 +0200 +++ b/skaapsteker/level.py Sat Apr 09 20:49:53 2011 +0200 @@ -70,7 +70,8 @@ self._background_music = None if 'music' in self.level_data: # soundsystem will call data.filepath - self._background_music = 'music/' + self.level_data['music'] + self._background_music = 'music/' + self.level_data['music'].get('track', '') + self._background_volume = self.level_data['music'].get('volume', 1.0) def build_backgrounds(self): self.backgrounds = [] @@ -92,7 +93,7 @@ def enter(self): if self._background_music: - self._soundsystem.play_background_music(self._background_music) + self._soundsystem.play_background_music(self._background_music, self._background_volume) def leave(self): pass
--- a/skaapsteker/levelscene.py Sat Apr 09 20:49:20 2011 +0200 +++ b/skaapsteker/levelscene.py Sat Apr 09 20:49:53 2011 +0200 @@ -118,13 +118,13 @@ def _quit(self, pause=True): import menuscene # avoid circular import if pause: - engine.ChangeScene.post(menuscene.MenuScene(self.game_state, self._soundsystem, self)) + engine.ChangeScene.post(menuscene.MenuScene(self.game_state, self._soundsystem)) else: # FIXME: When starting the game, we shoudl ensure we have sane # states if self._player_dead: self._player.restore() - engine.ChangeScene.post(menuscene.MenuScene(self.game_state, self._soundsystem, None)) + engine.ChangeScene.post(menuscene.MenuScene(self.game_state, self._soundsystem)) def _restart(self): if self._player_dead:
--- a/skaapsteker/menuscene.py Sat Apr 09 20:49:20 2011 +0200 +++ b/skaapsteker/menuscene.py Sat Apr 09 20:49:53 2011 +0200 @@ -2,17 +2,17 @@ from pygame.locals import K_ESCAPE, K_q, KEYDOWN, QUIT from .cutscene import OpeningCutScene, UsageCutScene, CreditsCutScene -from .engine import ChangeScene, Scene +from .engine import ChangeScene, Scene, NewGameEvent from .levelscene import LevelScene from .widgets.text import Text, TextChoice class MenuScene(Scene): - def __init__(self, game_state, soundsystem, cur_game=None): + def __init__(self, game_state, soundsystem): super(MenuScene, self).__init__(game_state, soundsystem) self.widgets.append(Text("MENU:", (50, 50), color='white', size=48)) - self.cur_game = cur_game menu_options = [ + ('Start new game', 'restart'), ('Starting Cutscene', 'cutscene'), ('Temple', 'temple.starting'), ("Temple grounds", "temple_grounds.starting"), @@ -28,16 +28,22 @@ ('Credits', 'credits'), ('Quit', 'quit'), ] - if cur_game is not None: + if self.game_state.world is not None: menu_options.insert(0, ('Resume Game', 'resume')) self.choice = TextChoice(menu_options, (50, 100), color='white') self.choice.callbacks.append(self.selected) self.widgets.append(self.choice) + def resume_game(self): + fox = self.game_state.world.fox + ChangeScene.post((LevelScene, '.'.join([fox.level, fox.doorway]))) + def selected(self, option, data): "Callback from menu TextChoice" if data == 'resume': - ChangeScene.post(self.cur_game) + self.resume_game() + elif data == 'restart': + NewGameEvent.post(LevelScene) elif data == 'cutscene': ChangeScene.post(OpeningCutScene(self.game_state, self._soundsystem)) elif data == 'usage':
--- a/skaapsteker/sound.py Sat Apr 09 20:49:20 2011 +0200 +++ b/skaapsteker/sound.py Sat Apr 09 20:49:53 2011 +0200 @@ -24,11 +24,12 @@ self._sounds = {} - def play_background_music(self, track_name): + def play_background_music(self, track_name, volume=1.0): if self.sound_enabled: try: mixer.music.load(data.filepath(track_name)) mixer.music.play(-1) # Loop forever + mixer.music.set_volume(volume) except pygame.error: print 'Unable to load track'