diff --git a/games/think-green/music/death_error.ogg b/games/think-green/music/death_error.ogg new file mode 100644 index 0000000..66dc82a Binary files /dev/null and b/games/think-green/music/death_error.ogg differ diff --git a/games/think-green/music/recycling_is_fun.ogg b/games/think-green/music/recycling_is_fun.ogg new file mode 100644 index 0000000..01ee9f0 Binary files /dev/null and b/games/think-green/music/recycling_is_fun.ogg differ diff --git a/games/think-green/music/tiny_world.ogg b/games/think-green/music/tiny_world.ogg new file mode 100644 index 0000000..242dd7e Binary files /dev/null and b/games/think-green/music/tiny_world.ogg differ diff --git a/games/think-green/think-green.py b/games/think-green/think-green.py index f1bc245..0c5c435 100644 --- a/games/think-green/think-green.py +++ b/games/think-green/think-green.py @@ -2,6 +2,7 @@ import sdl2 import sdl2.ext +import sdl2.sdlmixer import subjunctive @@ -118,7 +119,21 @@ class Recycle(subjunctive.entity.Entity): image = subjunctive.resource.image('images/recycle.png') pushable = True +def play_music(music_id): + if music_id == 1: + music = subjunctive.resource.music('music/tiny_world.ogg') + if music_id == 2: + music = subjunctive.resource.music('music/recycling_is_fun.ogg') + if music_id == 3: + music = subjunctive.resource.music('music/death_error.ogg') + sdl2.sdlmixer.Mix_PlayMusic(music, -1) + if __name__ == '__main__': + sdl2.SDL_Init(sdl2.SDL_INIT_AUDIO) + sdl2.sdlmixer.Mix_Init(sdl2.sdlmixer.MIX_INIT_OGG) + sdl2.sdlmixer.Mix_OpenAudio(44100, sdl2.sdlmixer.MIX_DEFAULT_FORMAT, + 2, 1024) + play_music(1) ts = TitleScreen() subjunctive.scheduler.call(ts.show_continue, after='3s') subjunctive.run(ts, on_select=subjunctive.exit) @@ -136,7 +151,12 @@ def move_cursor(direction): world.combo = 1 try: + play_music(2) subjunctive.run(world, on_direction=move_cursor) except DeathError: world.die() + play_music(3) subjunctive.run(world, on_select=subjunctive.exit) + + sdl2.sdlmixer.Mix_CloseAudio() + sdl2.SDL_Quit(sdl2.SDL_INIT_AUDIO) diff --git a/subjunctive/resource.py b/subjunctive/resource.py index bd53cf1..1b21e4d 100644 --- a/subjunctive/resource.py +++ b/subjunctive/resource.py @@ -2,6 +2,9 @@ import os.path import sdl2.ext +import sdl2.sdlmixer + +from sdl2.ext.compat import byteify _paths = [os.path.dirname(__file__)] default_image = sdl2.ext.load_image(os.path.join(_paths[0], @@ -31,6 +34,17 @@ def image(name): logging.warning("image %r could not be found; using default" % name) return default_image +def music(name): + for path in _paths: + music = sdl2.sdlmixer.Mix_LoadMUS(byteify(os.path.join(path, name), + "utf-8")) + try: + music.contents + except ValueError: + pass + else: + return music + def file(name): for path in _paths: try: