From ade19f2fc7beec2323f6483d035e3ad65ccc4895 Mon Sep 17 00:00:00 2001 From: ShiftyRail <31417754+ShiftyRail@users.noreply.github.com> Date: Sat, 13 Jun 2020 04:33:25 +0200 Subject: [PATCH] Fix doublejuke songs (#26802) * Maybe fix double juke songs? * Comment out debug * Fix soundsystems --- code/modules/media/broadcast/receiver.dm | 3 ++- code/modules/media/broadcast/transmitter.dm | 7 ++++--- code/modules/media/machinery.dm | 2 +- code/modules/media/mediamanager.dm | 5 ++++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/code/modules/media/broadcast/receiver.dm b/code/modules/media/broadcast/receiver.dm index 6f23e1ff75d..781d36db45c 100644 --- a/code/modules/media/broadcast/receiver.dm +++ b/code/modules/media/broadcast/receiver.dm @@ -14,9 +14,10 @@ var/global/media_receivers=list() ..() connect_frequency() -/obj/machinery/media/receiver/proc/receive_broadcast(var/url="", var/start_time=0) +/obj/machinery/media/receiver/proc/receive_broadcast(var/url="", var/start_time=0, var/finish_time=0) media_url = url media_start_time = start_time + media_finish_time = finish_time update_music() /obj/machinery/media/receiver/proc/connect_frequency() diff --git a/code/modules/media/broadcast/transmitter.dm b/code/modules/media/broadcast/transmitter.dm index 48a60360da4..40e9fcd297d 100644 --- a/code/modules/media/broadcast/transmitter.dm +++ b/code/modules/media/broadcast/transmitter.dm @@ -12,9 +12,10 @@ var/global/media_transmitters=list() ..() connect_frequency() -/obj/machinery/media/transmitter/proc/broadcast(var/url="", var/start_time=0) +/obj/machinery/media/transmitter/proc/broadcast(var/url="", var/start_time=0,var/finish_time=0) media_url = url media_start_time = start_time + media_finish_time = finish_time update_music() /obj/machinery/media/transmitter/proc/connect_frequency() @@ -32,11 +33,11 @@ var/global/media_transmitters=list() if(freq in media_receivers) for(var/obj/machinery/media/receiver/R in media_receivers[freq]) if(R.media_crypto == media_crypto) - R.receive_broadcast(media_url,media_start_time) + R.receive_broadcast(media_url,media_start_time,media_finish_time) //testing("[src]: Sending music to [R]") for(var/mob/living/carbon/complex/gondola/radio/G in media_receivers[freq]) if(G.media_crypto == media_crypto) - G.receive_broadcast(media_url,media_start_time) + G.receive_broadcast(media_url,media_start_time,media_finish_time) /obj/machinery/media/transmitter/proc/disconnect_frequency() var/list/transmitters=list() diff --git a/code/modules/media/machinery.dm b/code/modules/media/machinery.dm index 846fc4bf14c..e4f91785a08 100644 --- a/code/modules/media/machinery.dm +++ b/code/modules/media/machinery.dm @@ -32,7 +32,7 @@ // Broadcasting shit for(var/obj/machinery/media/transmitter/T in hooked) // testing("[src] Writing media to [T].") - T.broadcast(media_url,media_start_time) + T.broadcast(media_url,media_start_time, media_finish_time) if(exclusive_hook) disconnect_media_source() // Just to be sure. diff --git a/code/modules/media/mediamanager.dm b/code/modules/media/mediamanager.dm index 01cc57db7b0..2a39459d69e 100644 --- a/code/modules/media/mediamanager.dm +++ b/code/modules/media/mediamanager.dm @@ -7,6 +7,7 @@ ***********************/ // Uncomment to test the mediaplayer + //#define DEBUG_MEDIAPLAYER // Open up VLC and play musique. @@ -262,7 +263,9 @@ function SetMusic(url, time, volume) { targetURL = M.media_url targetStartTime = M.media_start_time targetVolume = M.volume - if ((targetURL != current_url) && (finish_time > 0) && ((world.time - finish_time) < -10 SECONDS)) // We caught a music. Let's see if we can make a graceful fadeout for the music currently playing. If not, the other music is killed. + var/check_samesong = ((targetURL == current_url) && (finish_time != M.media_finish_time)) + var/check_harsh_skip = ((targetURL != current_url) && (finish_time > 0) && ((world.time - finish_time) < - 10 SECONDS)) + if (check_samesong || check_harsh_skip) // We caught a music. Let's see if we can make a graceful fadeout for the music currently playing. If not, the other music is killed. MP_DEBUG("Should be cutting off music.") stop_music() sleep(0.1 SECONDS) // Have to wait for the media player response.