From bc40e4eefef4da5b6b9c89444a91fd0883b44f66 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Sat, 1 Apr 2017 20:43:54 -0400 Subject: [PATCH] Fixes a runtime with song importing (#25692) --- code/game/objects/structures/musician.dm | 42 +++++++++++++----------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm index cc5e7b4fb89..5c2ac5c7eee 100644 --- a/code/game/objects/structures/musician.dm +++ b/code/game/objects/structures/musician.dm @@ -182,6 +182,27 @@ popup.set_title_image(user.browse_rsc_icon(instrumentObj.icon, instrumentObj.icon_state)) popup.open() +/datum/song/proc/ParseSong(text) + set waitfor = FALSE + //split into lines + lines = splittext(text, "\n") + if(lines.len) + if(copytext(lines[1],1,6) == "BPM: ") + tempo = sanitize_tempo(600 / text2num(copytext(lines[1],6))) + lines.Cut(1,2) + else + tempo = sanitize_tempo(5) // default 120 BPM + if(lines.len > 50) + to_chat(usr, "Too many lines!") + lines.Cut(51) + var/linenum = 1 + for(var/l in lines) + if(lentext(l) > 50) + to_chat(usr, "Line [linenum] too long!") + lines.Remove(l) + else + linenum++ + updateDialog(usr) // make sure updates when complete /datum/song/Topic(href, href_list) if(!usr.canUseTopic(instrumentObj)) @@ -208,26 +229,7 @@ if(cont == "no") break while(lentext(t) > 3072) - - //split into lines - spawn() - lines = splittext(t, "\n") - if(copytext(lines[1],1,6) == "BPM: ") - tempo = sanitize_tempo(600 / text2num(copytext(lines[1],6))) - lines.Cut(1,2) - else - tempo = sanitize_tempo(5) // default 120 BPM - if(lines.len > 50) - to_chat(usr, "Too many lines!") - lines.Cut(51) - var/linenum = 1 - for(var/l in lines) - if(lentext(l) > 50) - to_chat(usr, "Line [linenum] too long!") - lines.Remove(l) - else - linenum++ - updateDialog(usr) // make sure updates when complete + ParseSong(t) else if(href_list["help"]) help = text2num(href_list["help"]) - 1