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:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user