project(internal): mixins and rsc changes

This commit is contained in:
Owain van Brakel
2022-05-24 23:22:56 +02:00
parent 0036e1c596
commit e9baf78efb
6 changed files with 242 additions and 26 deletions

View File

@@ -1089,13 +1089,6 @@ public abstract class RSClientMixin implements RSClient
client.getMenuTargets()[tmpOptionsCount] = "null";
}
String menuOption = client.getMenuOptions()[tmpOptionsCount];
String menuTarget = client.getMenuTargets()[tmpOptionsCount];
int menuOpcode = client.getMenuOpcodes()[tmpOptionsCount];
int menuIdentifier = client.getMenuIdentifiers()[tmpOptionsCount];
int menuArgument1 = client.getMenuArguments1()[tmpOptionsCount];
int menuArgument2 = client.getMenuArguments2()[tmpOptionsCount];
if (rl$menuEntries[tmpOptionsCount] == null)
{
rl$menuEntries[tmpOptionsCount] = newRuneliteMenuEntry(tmpOptionsCount);
@@ -1106,13 +1099,9 @@ public abstract class RSClientMixin implements RSClient
}
MenuEntryAdded menuEntryAdded = new MenuEntryAdded(
menuOption,
menuTarget,
menuOpcode,
menuIdentifier,
menuArgument1,
menuArgument2
rl$menuEntries[tmpOptionsCount]
);
client.getCallbacks().post(menuEntryAdded);
if (menuEntryAdded.isModified() && client.getMenuOptionCount() == optionCount)

View File

@@ -44,6 +44,7 @@ import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetInfo.TO_CHILD;
import static net.runelite.api.widgets.WidgetInfo.TO_GROUP;
import net.runelite.api.widgets.WidgetItem;
import net.runelite.api.widgets.WidgetPositionMode;
import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSModel;
import net.runelite.rs.api.RSNode;
@@ -66,6 +67,10 @@ public abstract class RSWidgetMixin implements RSWidget
private int rl$x;
@Inject
private int rl$y;
@Inject
private short forcedX;
@Inject
private short forcedY;
@Inject
RSWidgetMixin()
@@ -73,6 +78,8 @@ public abstract class RSWidgetMixin implements RSWidget
rl$parentId = -1;
rl$x = -1;
rl$y = -1;
forcedX = -1;
forcedY = -1;
}
@Inject
@@ -642,4 +649,99 @@ public abstract class RSWidgetMixin implements RSWidget
return new Point(dragOffsetX, dragOffsetY);
}
@Inject
public void setForcedX()
{
if (this.forcedX > -1)
{
this.setRelativeX(this.forcedX);
}
}
@Inject
public void setForcedY()
{
if (this.forcedY > -1)
{
this.setRelativeY(this.forcedY);
}
}
@Inject
@Override
public void setForcedPosition(int x, int y)
{
this.forcedX = (short) x;
this.forcedY = (short) y;
this.setRelativeX(x);
this.setRelativeY(y);
}
@Copy("alignWidgetPosition")
@Replace("alignWidgetPosition")
public static void alignWidgetPosition(Widget widget, int x, int y)
{
if (widget.getXPositionMode() == WidgetPositionMode.ABSOLUTE_LEFT)
{
widget.setRelativeX(widget.getOriginalX());
widget.setForcedX();
}
else if (widget.getXPositionMode() == WidgetPositionMode.ABSOLUTE_CENTER)
{
widget.setRelativeX(widget.getOriginalX() + (x - widget.getWidth()) / 2);
widget.setForcedX();
}
else if (widget.getXPositionMode() == WidgetPositionMode.ABSOLUTE_RIGHT)
{
widget.setRelativeX(x - widget.getWidth() - widget.getOriginalX());
widget.setForcedX();
}
else if (widget.getXPositionMode() == WidgetPositionMode.LEFT_16384THS)
{
widget.setRelativeX(widget.getOriginalX() * x >> 14);
widget.setForcedX();
}
else if (widget.getXPositionMode() == WidgetPositionMode.CENTER_16384THS)
{
widget.setRelativeX((widget.getOriginalX() * x >> 14) + (x - widget.getWidth()) / 2);
widget.setForcedX();
}
else
{
widget.setRelativeX(x - widget.getWidth() - (widget.getOriginalX() * x >> 14));
widget.setForcedX();
}
if (widget.getYPositionMode() == WidgetPositionMode.ABSOLUTE_TOP)
{
widget.setRelativeY(widget.getOriginalY());
widget.setForcedY();
}
else if (widget.getYPositionMode() == WidgetPositionMode.ABSOLUTE_CENTER)
{
widget.setRelativeY((y - widget.getHeight()) / 2 + widget.getOriginalY());
widget.setForcedY();
}
else if (widget.getYPositionMode() == WidgetPositionMode.ABSOLUTE_BOTTOM)
{
widget.setRelativeY(y - widget.getHeight() - widget.getOriginalY());
widget.setForcedY();
}
else if (widget.getYPositionMode() == WidgetPositionMode.TOP_16384THS)
{
widget.setRelativeY(y * widget.getOriginalY() >> 14);
widget.setForcedY();
}
else if (widget.getYPositionMode() == WidgetPositionMode.CENTER_16384THS)
{
widget.setRelativeY((y - widget.getHeight()) / 2 + (y * widget.getOriginalY() >> 14));
widget.setForcedY();
}
else
{
widget.setRelativeY(y - widget.getHeight() - (y * widget.getOriginalY() >> 14));
widget.setForcedY();
}
}
}