From fa55782e9298dc6b4898cafafc547a7fc1a2bcdb Mon Sep 17 00:00:00 2001 From: Rob Nelson Date: Tue, 11 Mar 2014 23:12:49 -0700 Subject: [PATCH] Fuck Conflicts: maps/tgstation.2.1.0.0.1.dmm tools/OpenBYOND --- code/modules/media/jukebox.dm | 39 +++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/code/modules/media/jukebox.dm b/code/modules/media/jukebox.dm index 67d6eebfeba..60175441358 100644 --- a/code/modules/media/jukebox.dm +++ b/code/modules/media/jukebox.dm @@ -48,19 +48,37 @@ var/global/loopModeNames=list( playing=0 var/loop_mode = JUKEMODE_SHUFFLE - // /datum/song_info + + // Server-side playlist IDs this jukebox can play. + var/list/playlists=list() // ID = Label + + // Playlist to load at startup. + var/playlist_id="" + var/list/playlist var/current_song = 0 var/autoplay = 0 var/last_reload = 0 +/obj/machinery/media/jukebox/bar + playlist_id="bar" + // Must be defined on your server. + playlists=list( + "bar" = "Bar Mix", + "jazz" = "Jazz", + "rock" = "Rock", + "lounge" = "Portishead - Dummy" + ) + /obj/machinery/media/jukebox/attack_ai() return /obj/machinery/media/jukebox/attack_paw() return + /obj/machinery/media/jukebox/proc/check_reload() return world.time > last_reload + JUKEBOX_RELOAD_COOLDOWN + /obj/machinery/media/jukebox/attack_hand(var/mob/user) var/t = "

Jukebox Interface

" t += "Power: [playing?"On":"Off"]
" @@ -68,11 +86,14 @@ var/global/loopModeNames=list( if(playlist == null) t += "\[DOWNLOADING PLAYLIST, PLEASE WAIT\]" else + if(check_reload()) + t += "Playlist: " + for(var/plid in playlists) + t += "[playlists[plid]]" + t += "
" if(current_song) var/datum/song_info/song=playlist[current_song] t += "Current song: [song.artist] - [song.title]
" - if(check_reload()) - t += "\[Reload Playlist\]" t += "" var/i for(i = 1,i <= playlist.len,i++) @@ -92,10 +113,11 @@ var/global/loopModeNames=list( playing=!playing update_music() - if (href_list["reload"]) + if (href_list["playlist"]) if(!check_reload()) - usr << "\red You must wait 60 seconds between reloads." + usr << "\red You must wait 60 seconds between playlist reloads." return + playlist_id=href_list["playlist"] last_reload=world.time playlist=null current_song=0 @@ -112,12 +134,17 @@ var/global/loopModeNames=list( /obj/machinery/media/jukebox/process() if(!playlist) - var/url="[config.media_base_url]/index.php" + var/url="[config.media_base_url]/index.php?playlist=[playlist_id]" testing("[src] - Updating playlist from [url]...") var/response = world.Export(url) playlist=list() if(response) var/json = file2text(response["CONTENT"]) + if("/>" in json) + visible_message("\icon[src] \The [src] buzzes, unable to update its playlist.","You hear a buzz.") + stat &= BROKEN + update_icon() + return var/json_reader/reader = new() reader.tokens = reader.ScanJson(json) reader.i = 1
Artist - TitleAlbum