Rework MenuManager to only swap the top entry, once per client tick (#749)

* Rework MenuManager to only swap the top entry, once per client tick
This commit is contained in:
Lucwousin
2019-06-25 18:20:21 +02:00
committed by Kyleeld
parent d084c0578e
commit 6630f5b4dd
39 changed files with 425 additions and 354 deletions

View File

@@ -109,4 +109,47 @@ public abstract class MenuMixin implements RSClient
}
}
}
@Inject
@Override
public void sortMenuEntries()
{
int count = getMenuOptionCount() - 1;
int[] menuOpcodes = getMenuTypes();
String[] menuTargetNames = getMenuTargets();
String[] menuActions = getMenuOptions();
int[] menuArguments0 = getMenuIdentifiers();
int[] menuArguments1 = getMenuActionParams0();
int[] menuArguments2 = getMenuActionParams1();
boolean[] menuShiftClick = getMenuForceLeftClick();
int tmp;
for (int i = 0; i < count; ++i)
{
if (menuOpcodes[i] < 1000 && menuOpcodes[i + 1] > 1000)
{
String var3 = menuTargetNames[i];
menuTargetNames[i] = menuTargetNames[i + 1];
menuTargetNames[i + 1] = var3;
String var4 = menuActions[i];
menuActions[i] = menuActions[i + 1];
menuActions[i + 1] = var4;
tmp = menuOpcodes[i];
menuOpcodes[i] = menuOpcodes[i + 1];
menuOpcodes[i + 1] = tmp;
tmp = menuArguments1[i];
menuArguments1[i] = menuArguments1[i + 1];
menuArguments1[i + 1] = tmp;
tmp = menuArguments2[i];
menuArguments2[i] = menuArguments2[i + 1];
menuArguments2[i + 1] = tmp;
tmp = menuArguments0[i];
menuArguments0[i] = menuArguments0[i + 1];
menuArguments0[i + 1] = tmp;
boolean var6 = menuShiftClick[i];
menuShiftClick[i] = menuShiftClick[i + 1];
menuShiftClick[i + 1] = var6;
}
}
}
}

View File

@@ -1243,13 +1243,18 @@ public abstract class RSClientMixin implements RSClient
menuAction -= 2000;
}
final MenuOptionClicked menuOptionClicked = new MenuOptionClicked();
menuOptionClicked.setActionParam(actionParam);
menuOptionClicked.setMenuOption(menuOption);
menuOptionClicked.setMenuTarget(menuTarget);
menuOptionClicked.setMenuAction(MenuAction.of(menuAction));
menuOptionClicked.setId(id);
menuOptionClicked.setWidgetId(widgetId);
final MenuOptionClicked menuOptionClicked = new MenuOptionClicked(
new MenuEntry(
menuOption,
menuTarget,
id,
menuAction,
actionParam,
widgetId,
false
)
);
client.getCallbacks().post(menuOptionClicked);
if (menuOptionClicked.isConsumed())