Adds an ability to replace buttons

This commit is contained in:
zontreck 2024-08-04 17:12:34 -07:00
parent 4a5aa07e57
commit a83616b67e
2 changed files with 16 additions and 45 deletions

View file

@ -6,6 +6,7 @@
08-2024 INITIAL RELEASE
* Finished hooking up listener and timer
* Add ability to replace menu buttons (Toggles)
06-2024 INITIAL VERSION
* Manage memory more efficiently than all other current systems
@ -33,6 +34,7 @@ integer LINK_SIGNAL_REGISTER_MENU = 0602242;
integer LINK_SIGNAL_RESET = 0602243;
integer LINK_SIGNAL_MENU_DATA = 0602244;
integer LINK_SIGNAL_MENU_BACK = 0801241;
integer LINK_SIGNAL_REPLACE_BUTTON = 0804241;
@ -595,6 +597,17 @@ default
}
llLinksetDataWrite("menus." + (string)i, sJson);
} else if(n == LINK_SIGNAL_REPLACE_BUTTON) {
string jsMenu = readMenu(llJsonGetValue(m, ["menu"]));
list lButtons = llJson2List(llJsonGetValue(jsMenu, ["buttons"]));
integer iIndex = llListFindList(lButtons, [llJsonGetValue(m,["btn"])]);
if(iIndex != -1) {
lButtons = llListReplaceList(lButtons, [llJsonGetValue(m, ["newBtn"])], iIndex, iIndex);
jsMenu = llJsonSetValue(jsMenu, ["buttons"], llList2Json(JSON_ARRAY, lButtons));
updateMenu(llJsonGetValue(m,["menu"]), jsMenu);
}
}
}

View file

@ -8,6 +8,7 @@ integer LINK_SIGNAL_REGISTER_MENU = 0602242;
integer LINK_SIGNAL_RESET = 0602243;
integer LINK_SIGNAL_MENU_DATA = 0602244;
integer LINK_SIGNAL_MENU_BACK = 0801241;
integer LINK_SIGNAL_REPLACE_BUTTON = 0804241;
string PREVIOUS_MENU = "<--";
@ -69,49 +70,6 @@ returnMenu(key kID, string sMenu, integer iPage, string sReply) {
llMessageLinked(LINK_SET, LINK_SIGNAL_MENU_BACK, llList2Json(JSON_OBJECT, ["menu", sMenu, "page", iPage, "reply", sReply]), kID);
}
integer g_iDebugIndent=0;
integer DEBUG_ENABLED() {
return FALSE;
replaceMenuButton(string sMenu, string sButton, string sNewButton) {
llMessageLinked(LINK_SET, LINK_SIGNAL_REPLACE_BUTTON, llList2Json(JSON_OBJECT, ["menu", sMenu, "btn", sButton, "newBtn", sNewButton]), "");
}
DEBUG_FUNC(integer iEnter, string sLabel, list lParams) {
if(!DEBUG_ENABLED()) return;
if(iEnter){
llOwnerSay(MakeIndent() + "ENTER " + sLabel + " [" + llList2CSV(lParams) + "]");
g_iDebugIndent++;
} else {
g_iDebugIndent --;
if(g_iDebugIndent<0)g_iDebugIndent=0;
llOwnerSay(MakeIndent() + "LEAVE " + sLabel + " [" + llList2CSV(lParams) + "]");
}
}
DEBUG_STMT(integer iEnter, string sLabel) {
if(!DEBUG_ENABLED()) return;
if(iEnter) {
llOwnerSay(MakeIndent() + "STMT " + sLabel);
g_iDebugIndent ++;
}else {
g_iDebugIndent--;
if(g_iDebugIndent<0)g_iDebugIndent=0;
llOwnerSay(MakeIndent() + "RET " + sLabel);
}
}
DEBUG(string sMsg) {
if(!DEBUG_ENABLED()) return;
llOwnerSay(MakeIndent() + " > " + sMsg);
}
string MakeIndent()
{
integer i = 0;
string sIndent = "";
for(i = 0;i<g_iDebugIndent;i++){
sIndent += " ";
}
return "[" + llGetScriptName() + "] " + sIndent;
}