From b7c9c9274998165adb46433bfddf01a19aa4cc9f Mon Sep 17 00:00:00 2001 From: James R Date: Wed, 3 Jan 2024 04:28:34 -0800 Subject: [PATCH] Music_Seek: argument in milliseconds instead of tics --- src/music.cpp | 2 +- src/music.h | 4 ++-- src/music_manager.cpp | 2 +- src/music_tune.hpp | 3 ++- src/p_setup.cpp | 2 +- src/s_sound.c | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/music.cpp b/src/music.cpp index d60c67c99..f6646e3bd 100644 --- a/src/music.cpp +++ b/src/music.cpp @@ -216,7 +216,7 @@ void Music_DelayEnd(const char* id, tic_t duration) } } -void Music_Seek(const char* id, tic_t set) +void Music_Seek(const char* id, UINT32 set) { Tune* tune = g_tunes.find(id); diff --git a/src/music.h b/src/music.h index eff0d660b..3931aedfa 100644 --- a/src/music.h +++ b/src/music.h @@ -89,8 +89,8 @@ void Music_UnSuspend(const char *id); // -// Seek to a specific time in the tune. -void Music_Seek(const char *id, tic_t set); +// Seek to a specific time in milliseconds in the tune. +void Music_Seek(const char *id, UINT32 set); // Remap a tune to another song. Use the lump name, with the // 'O_' at the beginning removed. song is case insensitive. diff --git a/src/music_manager.cpp b/src/music_manager.cpp index a0696e1a3..f9602166c 100644 --- a/src/music_manager.cpp +++ b/src/music_manager.cpp @@ -200,7 +200,7 @@ void TuneManager::seek(Tune* tune) uint32_t end = I_GetSongLength(); uint32_t loop = I_GetSongLoopPoint(); - uint32_t pos = detail::tics_to_msec(tune->seek + tune->elapsed()) * tune->speed(); + uint32_t pos = (tune->seek + detail::tics_to_msec(tune->elapsed())) * tune->speed(); if (pos > end && (end - loop) > 0u) { diff --git a/src/music_tune.hpp b/src/music_tune.hpp index b7c800058..635dfc02b 100644 --- a/src/music_tune.hpp +++ b/src/music_tune.hpp @@ -11,6 +11,7 @@ #define MUSIC_TUNE_HPP #include +#include #include #include @@ -68,7 +69,7 @@ public: bool nightcoreable = false; // Start playing this number of tics into the tune. - tic_t seek = 0; + std::uint32_t seek = 0; // these track state bool can_fade_out = true; diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 6e9e225c5..f79c49422 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -8202,7 +8202,7 @@ void P_LoadLevelMusic(void) Music_Remap("level", music); tic_t level_music_start = starttime + (TICRATE/2); - Music_Seek("level", std::max(leveltime, level_music_start) - level_music_start); + Music_Seek("level", (std::max(leveltime, level_music_start) - level_music_start) * 1000UL / TICRATE); } } diff --git a/src/s_sound.c b/src/s_sound.c index 142eaa4ba..7190b014f 100644 --- a/src/s_sound.c +++ b/src/s_sound.c @@ -2296,7 +2296,7 @@ static void Command_Tunes_f(void) Music_Play("stereo"); if (argc > 3) - Music_Seek("stereo", (atoi(COM_Argv(3)) * TICRATE) / 1000); + Music_Seek("stereo", atoi(COM_Argv(3))); if (argc > 2) {