Commit | Line | Data |
---|---|---|
f62d6fc5 | 1 | from os.path import basename |
54a1397e FC |
2 | from glob import glob |
3 | from random import choice | |
4 | from logging import info | |
55efcb0a | 5 | from panda3d.core import AudioSound, Filename |
f62d6fc5 FC |
6 | from ya2.utils.audio import AudioTools |
7 | from ya2.utils.logics import LogicsTools | |
54a1397e FC |
8 | |
9 | ||
f62d6fc5 | 10 | class MusicManager: |
54a1397e | 11 | |
f62d6fc5 FC |
12 | def __init__(self, volume, app_name): |
13 | self.__current_path = LogicsTools.current_path(app_name) | |
14 | musics = self.__current_path + 'assets/audio/music/*.ogg' | |
15 | self.__start_music(glob(musics)) | |
16 | AudioTools.set_volume(volume) | |
17 | taskMgr.add(self.__on_frame, 'on frame music') | |
54a1397e | 18 | |
f62d6fc5 FC |
19 | def __start_music(self, file_names): |
20 | self.__music = loader.load_music(choice(file_names)) | |
21 | info('playing music ' + self.__music.get_name()) | |
22 | self.__music.play() | |
55efcb0a | 23 | |
f62d6fc5 FC |
24 | def __on_frame(self, task): |
25 | if self.__music.status() == AudioSound.READY: self.__restart_music() | |
54a1397e | 26 | return task.cont |
f62d6fc5 FC |
27 | |
28 | def __restart_music(self): | |
29 | ogg_files = Filename(self.__current_path + 'assets/audio/music/*.ogg').to_os_specific() | |
30 | file_names = glob(ogg_files) | |
31 | music_to_remove = Filename( | |
32 | self.__current_path + 'assets/audio/music/' + | |
33 | basename(self.__music.get_name())).to_os_specific() | |
34 | # basename is needed in windows | |
35 | file_names.remove(music_to_remove) | |
36 | self.__start_music(file_names) |