Actual all jukebox fixing

Turns out all jukeboxes were broken and fixed the issues with enabling config path and ensuring the old songs were merged into new system, as well as making a sorting system to ensure casino and non-casino tracks aren't mixed together.
This commit is contained in:
Shadowfire
2021-07-05 23:44:03 +02:00
parent 590e4ff041
commit b1186e0f25
3 changed files with 421 additions and 31 deletions

View File

@@ -2,7 +2,7 @@ SUBSYSTEM_DEF(media_tracks)
name = "Media Tracks"
flags = SS_NO_FIRE
init_order = INIT_ORDER_MEDIA_TRACKS
/// Every track, including secret
var/list/all_tracks = list()
/// Non-secret jukebox tracks
@@ -21,19 +21,19 @@ SUBSYSTEM_DEF(media_tracks)
/datum/controller/subsystem/media_tracks/proc/load_tracks()
for(var/filename in config.jukebox_track_files)
report_progress("Loading jukebox track: [filename]")
if(!fexists(filename))
error("File not found: [filename]")
continue
var/list/jsonData = json_decode(file2text(filename))
if(!istype(jsonData))
error("Failed to read tracks from [filename], json_decode failed.")
continue
for(var/entry in jsonData)
// Critical problems that will prevent the track from working
if(!istext(entry["url"]))
error("Jukebox entry in [filename]: bad or missing 'url'. Tracks must have a URL.")
@@ -50,34 +50,34 @@ SUBSYSTEM_DEF(media_tracks)
warning("Jukebox entry in [filename], [entry["title"]]: bad or missing 'artist'. Please consider crediting the artist.")
if(!istext(entry["genre"]))
warning("Jukebox entry in [filename], [entry["title"]]: bad or missing 'genre'. Please consider adding a genre.")
var/datum/track/T = new(entry["url"], entry["title"], entry["duration"], entry["artist"], entry["genre"])
T.secret = entry["secret"] ? 1 : 0
T.lobby = entry["lobby"] ? 1 : 0
/// CHOMPstation edit start: Jack - Injecting casino track into new jukebox subsystem
T.casino = entry["casino"] ? 1 : 0
/// CHOMPstation edit end
all_tracks += T
/datum/controller/subsystem/media_tracks/proc/sort_tracks()
report_progress("Sorting media tracks...")
sortTim(all_tracks, /proc/cmp_media_track_asc)
jukebox_tracks.Cut()
lobby_tracks.Cut()
/// CHOMPstation edit start: Jack - Injecting casino track into new jukebox subsystem
casino_tracks.Cut()
/// CHOMPstation edit end
for(var/datum/track/T in all_tracks)
if(!T.secret)
/// CHOMPstation edit start: Jack - Injecting casino track into new jukebox subsystem
if(!T.secret && !T.casino)
jukebox_tracks += T
if(T.lobby)
lobby_tracks += T
/// CHOMPstation edit start: Jack - Injecting casino track into new jukebox subsystem
if(T.casino)
casino_tracks += T
/// CHOMPstation edit end
@@ -86,7 +86,7 @@ SUBSYSTEM_DEF(media_tracks)
var/client/C = usr.client
if(!check_rights(R_DEBUG|R_FUN))
return
// Required
var/url = input(C, "REQUIRED: Provide URL for track, or paste JSON if you know what you're doing. See code comments.", "Track URL") as message|null
if(!url)
@@ -110,7 +110,7 @@ SUBSYSTEM_DEF(media_tracks)
* "lobby": plays in the lobby (true/false)
* "casino": plays in the casino (true/false) CHOMPstation casino
*/
if(islist(json))
for(var/song in json)
if(!islist(song))
@@ -119,18 +119,18 @@ SUBSYSTEM_DEF(media_tracks)
var/list/songdata = song
if(!songdata["url"] || !songdata["title"] || !songdata["duration"])
to_chat(C, "<span class='warning'>URL, Title, or Duration was missing from a song. Skipping.</span>")
continue
continue
var/datum/track/T = new(songdata["url"], songdata["title"], songdata["duration"], songdata["artist"], songdata["genre"], songdata["secret"], songdata["lobby"], songdata["casino"])
all_tracks += T
report_progress("New media track added by [C]: [T.title]")
sort_tracks()
return
var/title = input(C, "REQUIRED: Provide title for track", "Track Title") as text|null
if(!title)
return
var/duration = input(C, "REQUIRED: Provide duration for track (in deciseconds, aka seconds*10)", "Track Duration") as num|null
if(!duration)
return
@@ -139,11 +139,11 @@ SUBSYSTEM_DEF(media_tracks)
var/artist = input(C, "Optional: Provide artist for track", "Track Artist") as text|null
if(isnull(artist)) // Cancel rather than empty string
return
var/genre = input(C, "Optional: Provide genre for track (try to match an existing one)", "Track Genre") as text|null
if(isnull(genre)) // Cancel rather than empty string
return
var/secret = tgui_alert(C, "Optional: Mark track as secret?", "Track Secret", list("Yes", "Cancel", "No"))
if(secret == "Cancel")
return
@@ -151,7 +151,7 @@ SUBSYSTEM_DEF(media_tracks)
secret = TRUE
else
secret = FALSE
var/lobby = tgui_alert(C, "Optional: Mark track as lobby music?", "Track Lobby", list("Yes", "Cancel", "No"))
if(lobby == "Cancel")
return
@@ -171,15 +171,15 @@ SUBSYSTEM_DEF(media_tracks)
/// CHOMPstation edit end
var/datum/track/T = new(url, title, duration, artist, genre)
T.secret = secret
T.lobby = lobby
/// CHOMPstation edit start: Jack - Injecting casino track into new jukebox subsystem
T.casino = casino
/// CHOMPstation edit end
all_tracks += T
report_progress("New media track added by [C]: [title]")
sort_tracks()
@@ -191,7 +191,7 @@ SUBSYSTEM_DEF(media_tracks)
var/track = input(C, "Input track title or URL to remove (must be exact)", "Remove Track") as text|null
if(!track)
return
for(var/datum/track/T in all_tracks)
if(T.title == track || T.url == track)
all_tracks -= T
@@ -199,7 +199,7 @@ SUBSYSTEM_DEF(media_tracks)
report_progress("Media track removed by [C]: [track]")
sort_tracks()
return
to_chat(C, "<span class='warning>Couldn't find a track matching the specified parameters.</span>")
/datum/controller/subsystem/media_tracks/vv_get_dropdown()

View File

@@ -1,4 +1,4 @@
/*
/obj/machinery/media/jukebox/casinojukebox
name = "space casino jukebox"
desc = "A jukebox to play the tracks on the golden goose, jazzy~"
@@ -9,5 +9,4 @@
use_power = USE_POWER_OFF
/obj/machinery/media/jukebox/casinojukebox/getTracksList()
return SSmedia_tracks.casino_tracks
*/
return SSmedia_tracks.casino_tracks

View File

@@ -3508,5 +3508,396 @@
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"url" : "https://cdn.discordapp.com/attachments/404660884531707906/676726491806957568/Cassette.mp3",
"title" : "Cassette",
"duration" : 2310,
"artist" : "Efence",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"url" : "https://cdn.discordapp.com/attachments/676384242426707979/676730040624480264/Glowing_Red_Dust.mp3",
"title" : "Red Glowing Dust",
"duration" : 3370,
"artist" : "Jón Hallur Haraldsson (also known as RealX)",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"url" : "https://cdn.discordapp.com/attachments/676384242426707979/676730820530274323/Stellardrone_-_Eternity.mp3",
"title" : "Eternity",
"duration" : 3810,
"artist" : "Stellardrone",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"duration" : 4850,
"url" : "https://cdn.discordapp.com/attachments/612993188655005697/676732888712216596/DJ-ZEK_-_Simulate.mp3",
"title" : "Simulate",
"artist" : "Fawxtrot (now know as DJ Zek)",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"duration" : 13720,
"url" : "https://cdn.discordapp.com/attachments/520929567540772873/707899715261562960/FitnessGram_20_Meter_PACER_Test_Full_Length_OFFICIAL_Audio_Version.mp3",
"title" : "The FitnessGram Pacer Test",
"artist" : "The Cooper Institute (FitnessGram)",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"duration" : 2040,
"url" : "https://cdn.discordapp.com/attachments/575066308362895444/701639140109844530/Peaceful_Orbits.mp3",
"title" : "Peaceful Orbits",
"artist" : "TeknoAXE",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"duration" : 2300,
"url" : "https://cdn.discordapp.com/attachments/575066308362895444/701639311896084511/Passing_Time_in_an_Escape_Pod.mp3",
"title" : "Passing Time in an Escape Pod",
"artist" : "TeknoAXE",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"duration" : 2790,
"url" : "https://cdn.discordapp.com/attachments/331435060735508480/613310956927451137/Persona_5_48_-_Beneath_the_Mask_-rain-.mp3",
"title" : "Beneath the Mask -Rain Version-",
"artist" : "Persona 5",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Jazz"
},
{
"duration" : 2100,
"url" : "https://cdn.discordapp.com/attachments/331037116094087168/543191420370944001/DragonSharkOriginal3.mp3",
"title" : "Terrorbyte/Dragon Shark theme",
"artist" : "RetroSpecter",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 1600,
"url" : "https://cdn.discordapp.com/attachments/528973352728264714/583441087633555456/Prey_-_Everything_is_Going_to_Be_Ok_online-audio-converter.com.mp3",
"title" : "Everything Is Going To Be Ok",
"artist" : "Mick Gordon",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Electronic"
},
{
"duration" : 2440,
"url" : "https://cdn.discordapp.com/attachments/311691674130710528/463590234978910228/Saga_of_Tanya_the_Evil_-_Jingo_Jungle_Opening_ENGLISH_ver_AmaLee.mp3",
"title" : "Jingo Jungle",
"artist" : "Leeandlie http://bit.ly/Leeandlie",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Electronic"
},
{
"duration" : 4030,
"url" : "https://cdn.discordapp.com/attachments/311691674130710528/468345155498541066/TheMadnessOfFate.mp3",
"title" : "Madness of Fate",
"artist" : "NIIC the singing dog - http://bit.ly/NIICDOGYT",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Electronic"
},
{
"duration" : 2350,
"url" : "https://cdn.discordapp.com/attachments/311691674130710528/449909217403469837/Hard_Bass_School_-_narkotik_kal.mp3",
"title" : "Narkotik kal",
"artist" : "Hardbass",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Ambience"
},
{
"duration" : 2850,
"url" : "https://cdn.discordapp.com/attachments/528973352728264714/613807206047154217/TERRORBYTE_-_HELIOS.mp3",
"title" : "Helios",
"artist" : "TERRORBYTE",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Metal"
},
{
"duration" : 1110,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308819422838784/System_Of_A_Down_-_Shimmy_11.mp3",
"title" : "Shimmy",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 1630,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308919067049995/System_Of_A_Down_-_Science_10.mp3",
"title" : "Science",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 1750,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308944706699284/System_Of_A_Down_-_Deer_Dance_03.mp3",
"title" : "deer dance",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 1790,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308945411473428/System_Of_A_Down_-_Atwa.mp3",
"title" : "Atwa",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 2400,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308969772122112/System_Of_A_Down_-_Forest_08.mp3",
"title" : "Forest",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 2110,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308978089426985/System_Of_A_Down_-_Prison_Song_01.mp3",
"title" : "Prison song",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 2150,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453308978089426985/System_Of_A_Down_-_Prison_Song_01.mp3",
"title" : "SPIDERS!",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 2320,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453309000780611604/System_Of_A_Down_-_Aerials_14.mp3",
"title" : "Aerials",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 1260,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/453309015955472394/System_Of_A_Down_-_Jet_Pilot_04.mp3",
"title" : "Jet Pilot",
"artist" : "System of a Down",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 1510,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/454653832945860608/Skeleton_Man-_The_Axis_of_Awesome.mp3",
"title" : "Skeleton Man",
"artist" : "AoW",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Classical and Orchestral"
},
{
"duration" : 2770,
"url" : "https://cdn.discordapp.com/attachments/745916615606140938/775593951259918336/Nanook_Rubs_It.mp3",
"title" : "Nanook Rubs It",
"artist" : "Frank Zappa",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Country and Western"
},
{
"duration" : 3370,
"url" : "https://cdn.discordapp.com/attachments/745916615606140938/775593948307521566/Muffin_Man.mp3",
"title" : "Muffin Man",
"artist" : "Frank Zappa",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Folk and Indie"
},
{
"duration" : 1760,
"url" : "https://cdn.discordapp.com/attachments/404660884531707906/456271996314058752/Edgar_Rothermich_-01_Theme_from_Silent_Hill_jungle-vibe.com.mp3",
"title" : "Silent Hill",
"artist" : "Akira Yamaoka and Edgar Rothermich",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Country and Western"
},
{
"duration" : 1910,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490120240300052/Nightcore_-_Tetris.mp3",
"title" : "Tetris Remixed",
"artist" : "nightcore",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Electronic"
},
{
"duration" : 2030,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490219167154186/VERSACE_2017_-_TIX__The_Pssy_Project.mp3",
"title" : "Versance",
"artist" : "PussyProject",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Classical and Orchestral"
},
{
"duration" : 2400,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490229523021834/-_.mp3",
"title" : "Russian Techno",
"artist" : "Some russians",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Hip-Hop and Rap"
},
{
"duration" : 2200,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490231611654144/Rock_Dog_2017_Movie_Official_Lyric_Video_Glorious_by_Adam_Friedman.mp3",
"title" : "Gloriouse",
"artist" : "Rock Dog",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Rock"
},
{
"duration" : 2580,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490245725487104/Gigi_DAgostino_-_You_Spin_Me_Round__Tecno_Fes_2_.mp3",
"title" : "You spin me around",
"artist" : "Gigi DAgostino",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Pop"
},
{
"duration" : 2640,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/460490246610747402/-__Kyary_Pamyu_Pamyu_-.mp3",
"title" : "Pamyu Pamyu",
"artist" : "Kyary",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Pop"
},
{
"duration" : 1620,
"url" : "https://cdn.discordapp.com/attachments/377217220041900034/457628201200648202/Berserk_-_S3RL_ft_Iceman.mp3",
"title" : "Beserk",
"artist" : "S3RL ft Iceman",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Metal"
},
{
"duration" : 3510,
"url" : "https://cdn.discordapp.com/attachments/458630047167807488/520025625852117002/Nick_Hakim_-_Pour_Another.mp3",
"title" : "Pour Another",
"artist" : "Nick Hakim",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Jazz"
},
{
"duration" : 1270,
"url" : "https://cdn.discordapp.com/attachments/526693916859170816/559236326264668190/Ocean_Man.mp3",
"title" : "Ocean Man",
"artist" : "Ween",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Classical and Orchestral"
},
{
"duration" : 2990,
"url" : "https://cdn.discordapp.com/attachments/458630047167807488/520025672702492682/Nick_Hakim_-_I_Dont_Know.mp3",
"title" : "I dont know",
"artist" : "Nick Hakim",
"secret": false,
"lobby": false,
"jukebox": true,
"genre": "Jazz"
},
{
"duration" : 1830,
"url" : "https://cdn.discordapp.com/attachments/404660884531707906/614356720503881728/Underfell_Megalovania.mp3",
"title" : "Underfell",
"artist" : "keno9988iii",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Metal"
},
{
"duration" : 3730,
"url" : "https://cdn.discordapp.com/attachments/661630061983825938/663112074880352276/Headhunterz_-_Scrap_Attack_HQ.mp3",
"title" : "Scrap Attack",
"artist" : "Headhunterz",
"secret": true,
"lobby": false,
"jukebox": true,
"genre": "Electronic"
}
]