project: fix lambda things and add mixins and rename two fields (#12)

This commit is contained in:
ThatGamerBlue
2020-01-28 17:49:43 +00:00
committed by Kyle
parent ed5acca637
commit db1bfdfb47
12 changed files with 128 additions and 77 deletions

View File

@@ -1529,7 +1529,7 @@ public abstract class RSClientMixin implements RSClient
{
if (renderX >= minX && renderX <= maxX && renderY >= minY && renderY <= maxY)
{
WidgetItem widgetItem = new WidgetItem(widget.getItemId(), widget.getItemQuantity(), -1, widget.getBounds(), widget);
WidgetItem widgetItem = new WidgetItem(widget.getItemId(), widget.getItemQuantity(), -1, widget.getBounds(), widget, false);
callbacks.drawItem(widget.getItemId(), widgetItem);
}
}

View File

@@ -24,11 +24,6 @@
*/
package net.runelite.mixins;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import net.runelite.api.HashTable;
import net.runelite.api.Node;
import net.runelite.api.Point;
@@ -42,8 +37,6 @@ import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
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.rs.api.RSClient;
import net.runelite.rs.api.RSModel;
@@ -52,24 +45,26 @@ import net.runelite.rs.api.RSNodeHashTable;
import net.runelite.rs.api.RSPlayerAppearance;
import net.runelite.rs.api.RSSequenceDefinition;
import net.runelite.rs.api.RSWidget;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import static net.runelite.api.widgets.WidgetInfo.TO_CHILD;
import static net.runelite.api.widgets.WidgetInfo.TO_GROUP;
@Mixin(RSWidget.class)
public abstract class RSWidgetMixin implements RSWidget
{
private static final int ITEM_SLOT_SIZE = 32;
@Shadow("client")
private static RSClient client;
@Inject
private static int rl$widgetLastPosChanged;
@Inject
private int rl$parentId;
@Inject
private int rl$x;
@Inject
private int rl$y;
@@ -295,8 +290,19 @@ public abstract class RSWidgetMixin implements RSWidget
int itemX = rl$x + ((ITEM_SLOT_SIZE + xPitch) * col);
int itemY = rl$y + ((ITEM_SLOT_SIZE + yPitch) * row);
Rectangle bounds = new Rectangle(itemX, itemY, ITEM_SLOT_SIZE, ITEM_SLOT_SIZE);
return new WidgetItem(itemId - 1, itemQuantity, index, bounds, this);
boolean isDragged = isWidgetItemDragged(index);
int dragOffsetX = 0;
int dragOffsetY = 0;
if (isDragged)
{
Point p = getWidgetItemDragOffsets();
dragOffsetX = p.getX();
dragOffsetY = p.getY();
}
Rectangle bounds = new Rectangle(itemX + dragOffsetX, itemY + dragOffsetY, ITEM_SLOT_SIZE, ITEM_SLOT_SIZE);
return new WidgetItem(itemId - 1, itemQuantity, index, bounds, this, isDragged);
}
@Inject
@@ -587,4 +593,31 @@ public abstract class RSWidgetMixin implements RSWidget
}
return rs$getModel(sequence, frame, alternate, playerComposition);
}
@Inject
@Override
public boolean isWidgetItemDragged(int index)
{
return client.getIf1DraggedWidget() == this && client.getItemPressedDuration() >= 5 &&
client.getIf1DraggedItemIndex() == index;
}
@Inject
public Point getWidgetItemDragOffsets()
{
int dragOffsetX = client.getMouseX() - client.getDraggedWidgetX();
int dragOffsetY = client.getMouseY() - client.getDraggedWidgetY();
if (dragOffsetX < 5 && dragOffsetX > -5)
{
dragOffsetX = 0;
}
if (dragOffsetY < 5 && dragOffsetY > -5)
{
dragOffsetY = 0;
}
return new Point(dragOffsetX, dragOffsetY);
}
}