list _radioURLs;
list _radioStations;
integer _linenum = 0;
string _notecard = "stations";
reset_radio() {
_radioURLs = [ "" ];
_radioStations = [ "off" ];
_linenum = 0;
llGetNotecardLine(_notecard, _linenum);
}
add_station(string line) {
list words = llParseString2List(line, [" ", " ", "="], []);
if (llGetListLength(words) < 2) {
return;
}
string url = llList2String(words, llGetListLength(words) - 1);
string station = "";
integer i;
for (i=0; i 0) {
station += " ";
}
station += llList2String(words, i);
}
_radioURLs += [url];
_radioStations += [station];
}
default {
state_entry() {
reset_radio();
}
changed(integer change) {
if (change & CHANGED_INVENTORY) {
reset_radio();
}
}
dataserver(key query_id, string data) {
if (llGetListLength(_radioURLs) > 11) {
llSay(0, "only the first 10 stations are avaliable");
}
else {
if (data != EOF) {
add_station(data);
_linenum++;
llGetNotecardLine(_notecard, _linenum);
return;
}
}
llListen(93, "", NULL_KEY, "");
llSay(0, "touch to change stations");
}
touch_start(integer touchNumber) {
llDialog(llDetectedKey(0), "pick a station", _radioStations, 93);
}
listen(integer channel, string name, key id, string message) {
string newURL = llList2String(_radioURLs, llListFindList(_radioStations, [message]));
llSay(0, message + " ---> " + newURL);
llSetParcelMusicURL(newURL);
}
}