mirror of
https://github.com/Yonokid/PyTaiko.git
synced 2026-02-04 11:40:13 +01:00
add pausing
This commit is contained in:
@@ -1095,7 +1095,7 @@ void set_music_pan(music music, float pan) {
|
|||||||
float get_music_time_length(music music) {
|
float get_music_time_length(music music) {
|
||||||
float total_seconds = 0.0f;
|
float total_seconds = 0.0f;
|
||||||
|
|
||||||
total_seconds = (float)music.frameCount/music.stream.sampleRate;
|
total_seconds = (float)music.frameCount/AUDIO.System.sampleRate;
|
||||||
|
|
||||||
return total_seconds;
|
return total_seconds;
|
||||||
}
|
}
|
||||||
@@ -1104,7 +1104,7 @@ float get_music_time_played(music music) {
|
|||||||
float seconds_played = 0.0f;
|
float seconds_played = 0.0f;
|
||||||
if (music.stream.buffer != NULL) {
|
if (music.stream.buffer != NULL) {
|
||||||
pthread_mutex_lock(&AUDIO.System.lock);
|
pthread_mutex_lock(&AUDIO.System.lock);
|
||||||
seconds_played = (float)music.stream.buffer->framesProcessed / music.stream.sampleRate;
|
seconds_played = (float)music.stream.buffer->framesProcessed / AUDIO.System.sampleRate;
|
||||||
pthread_mutex_unlock(&AUDIO.System.lock);
|
pthread_mutex_unlock(&AUDIO.System.lock);
|
||||||
}
|
}
|
||||||
return seconds_played;
|
return seconds_played;
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ class GameScreen(Screen):
|
|||||||
self.end_ms = 0
|
self.end_ms = 0
|
||||||
self.start_delay = 1000
|
self.start_delay = 1000
|
||||||
self.song_started = False
|
self.song_started = False
|
||||||
|
self.paused = False
|
||||||
|
self.pause_time = 0
|
||||||
|
self.audio_time = 0
|
||||||
self.movie = None
|
self.movie = None
|
||||||
self.song_music = None
|
self.song_music = None
|
||||||
if global_data.config["general"]["nijiiro_notes"]:
|
if global_data.config["general"]["nijiiro_notes"]:
|
||||||
@@ -212,6 +215,19 @@ class GameScreen(Screen):
|
|||||||
audio.stop_music_stream(self.song_music)
|
audio.stop_music_stream(self.song_music)
|
||||||
return self.on_screen_end('SONG_SELECT')
|
return self.on_screen_end('SONG_SELECT')
|
||||||
|
|
||||||
|
if ray.is_key_pressed(ray.KeyboardKey.KEY_SPACE):
|
||||||
|
self.paused = not self.paused
|
||||||
|
if self.paused:
|
||||||
|
if self.song_music is not None:
|
||||||
|
self.audio_time = audio.get_music_time_played(self.song_music)
|
||||||
|
audio.stop_music_stream(self.song_music)
|
||||||
|
self.pause_time = get_current_ms() - self.start_ms
|
||||||
|
else:
|
||||||
|
if self.song_music is not None:
|
||||||
|
audio.play_music_stream(self.song_music, 'music')
|
||||||
|
audio.seek_music_stream(self.song_music, self.audio_time)
|
||||||
|
self.start_ms = get_current_ms() - self.pause_time
|
||||||
|
|
||||||
def spawn_ending_anims(self):
|
def spawn_ending_anims(self):
|
||||||
if global_data.session_data[global_data.player_num-1].result_data.bad == 0:
|
if global_data.session_data[global_data.player_num-1].result_data.bad == 0:
|
||||||
self.player_1.ending_anim = FCAnimation(self.player_1.is_2p)
|
self.player_1.ending_anim = FCAnimation(self.player_1.is_2p)
|
||||||
@@ -233,7 +249,8 @@ class GameScreen(Screen):
|
|||||||
super().update()
|
super().update()
|
||||||
current_time = get_current_ms()
|
current_time = get_current_ms()
|
||||||
self.transition.update(current_time)
|
self.transition.update(current_time)
|
||||||
self.current_ms = current_time - self.start_ms
|
if not self.paused:
|
||||||
|
self.current_ms = current_time - self.start_ms
|
||||||
self.start_song(current_time)
|
self.start_song(current_time)
|
||||||
self.update_background(current_time)
|
self.update_background(current_time)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user