Skip to content

Commit 600b6d4

Browse files
committed
a
1 parent 5e62dec commit 600b6d4

1 file changed

Lines changed: 60 additions & 34 deletions

File tree

  • modular_meta/features/jukeboxes_music/code

modular_meta/features/jukeboxes_music/code/music.dm

Lines changed: 60 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
/obj/machinery/jukebox
22
var/list/custom_songs = list()
33
var/internet_track_selected = null
4+
var/internet_playing = FALSE
45

56
/obj/machinery/jukebox/ui_data(mob/user)
67
var/list/data = ..()
78
data["internet_sound_enabled"] = CONFIG_GET(flag/request_internet_sound) ? TRUE : FALSE
89

910
if(internet_track_selected)
1011
data["track_selected"] = internet_track_selected
12+
if(internet_playing)
13+
data["active"] = TRUE
1114

1215
var/list/all_songs = data["songs"]
1316
if(!all_songs)
@@ -27,53 +30,70 @@
2730
return data
2831

2932
/obj/machinery/jukebox/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
30-
switch(action)
31-
if("select_track")
32-
var/track_name = params["track"]
33+
if(action == "select_track")
34+
var/track_name = params["track"]
3335

34-
if(custom_songs[track_name])
35-
internet_track_selected = track_name
36+
if(custom_songs[track_name])
37+
internet_track_selected = track_name
38+
internet_playing = TRUE
3639

37-
if(hascall(src, "turn_off"))
38-
call(src, "turn_off")()
39-
else if(hascall(src, "stop_playing"))
40-
call(src, "stop_playing")()
41-
else
42-
..("toggle", params, ui, state)
40+
var/mob/user = ui.user
41+
if(user)
42+
var/sound/mute_sound = sound(null)
43+
mute_sound.channel = CHANNEL_JUKEBOX
44+
SEND_SOUND(user, mute_sound)
4345

44-
var/mob/user = ui.user
45-
var/request_url = custom_songs[track_name]
46+
if(hascall(src, "turn_off"))
47+
call(src, "turn_off")()
48+
else if(hascall(src, "stop_playing"))
49+
call(src, "stop_playing")()
4650

47-
if(user && user.client)
48-
to_chat(user, span_info("Playing internet stream: [track_name]..."), confidential = TRUE)
49-
GLOB.requests.music_request(user.client, request_url, null)
51+
var/request_url = custom_songs[track_name]
52+
if(user && user.client)
53+
to_chat(user, span_info("Playing internet stream: [track_name]..."), confidential = TRUE)
54+
GLOB.requests.music_request(user.client, request_url, null)
5055

51-
update_static_data_for_all_viewers()
52-
return TRUE
53-
else
54-
internet_track_selected = null
56+
update_static_data_for_all_viewers()
57+
return TRUE
58+
else
59+
internet_track_selected = null
60+
internet_playing = FALSE
5561

56-
if("request_internet_track")
62+
if(action == "toggle")
63+
if(internet_track_selected)
64+
internet_playing = !internet_playing
5765
var/mob/user = ui.user
58-
if(!user || !user.client)
59-
return TRUE
6066

61-
if(!CONFIG_GET(flag/request_internet_sound))
62-
to_chat(user, span_danger("This server has disabled internet sound requests."), confidential = TRUE)
63-
return TRUE
67+
if(!internet_playing)
68+
if(user)
69+
var/sound/mute_sound = sound(null)
70+
mute_sound.channel = CHANNEL_JUKEBOX
71+
SEND_SOUND(user, mute_sound)
72+
else
73+
var/request_url = custom_songs[internet_track_selected]
74+
if(user && user.client)
75+
GLOB.requests.music_request(user.client, request_url, null)
6476

65-
if(user.client.prefs.muted & MUTE_INTERNET_REQUEST)
66-
to_chat(user, span_danger("You cannot play music at this time. (muted)."), confidential = TRUE)
67-
return TRUE
77+
update_static_data_for_all_viewers()
78+
return TRUE
79+
80+
if(action == "request_internet_track")
81+
var/mob/user = ui.user
82+
if(!user || !user.client)
83+
return TRUE
6884

69-
INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/machinery/jukebox, handle_internet_request), user)
85+
if(!CONFIG_GET(flag/request_internet_sound))
86+
to_chat(user, span_danger("This server has disabled internet sound requests."), confidential = TRUE)
7087
return TRUE
7188

89+
if(user.client.prefs.muted & MUTE_INTERNET_REQUEST)
90+
to_chat(user, span_danger("You cannot play music at this time. (muted)."), confidential = TRUE)
91+
return TRUE
92+
93+
INVOKE_ASYNC(src, TYPE_PROC_REF(/obj/machinery/jukebox, handle_internet_request), user)
94+
return TRUE
95+
7296
if(..())
73-
var/track_name = params["track"]
74-
if(action == "select_track" && !custom_songs[track_name])
75-
internet_track_selected = null
76-
update_static_data_for_all_viewers()
7797
return TRUE
7898

7999
return FALSE
@@ -100,6 +120,12 @@
100120
var/display_name = "🌐 | [track_title]"
101121
custom_songs[display_name] = request_url
102122
internet_track_selected = display_name
123+
internet_playing = TRUE
124+
125+
if(user)
126+
var/sound/mute_sound = sound(null)
127+
mute_sound.channel = CHANNEL_JUKEBOX
128+
SEND_SOUND(user, mute_sound)
103129

104130
if(hascall(src, "turn_off"))
105131
call(src, "turn_off")()

0 commit comments

Comments
 (0)