project: Mixins

This commit is contained in:
Owain van Brakel
2022-01-16 04:02:25 +01:00
parent c3fe9b5377
commit c57301c0d3
14 changed files with 214 additions and 32 deletions

View File

@@ -47,13 +47,11 @@ public abstract class RSClanSettingsMixin implements RSClanSettings
public List<ClanMember> getMembers()
{
int memberCount = getMemberCount();
String[] memberNames = getMemberNames();
byte[] memberRanks = getMemberRanks();
List<ClanMember> memberList = new ArrayList<>(memberCount);
for (int i = 0; i < memberCount; i++)
{
// memberList.add(new ClanMember(memberNames[i], client.getClanRankFromRs(memberRanks[i])));
memberList.add((ClanMember) client.runeliteClanMember(this, i));
}
return memberList;
@@ -65,7 +63,6 @@ public abstract class RSClanSettingsMixin implements RSClanSettings
{
name = name.replace(" ", "\u00A0").toLowerCase();
String[] memberNames = getMemberNames();
byte[] memberRanks = getMemberRanks();
int[] sorted = getSortedMembers();
int i = 0;
@@ -82,7 +79,7 @@ public abstract class RSClanSettingsMixin implements RSClanSettings
}
else if (compare == 0)
{
// return new ClanMember(memberName, client.getClanRankFromRs(memberRanks[tag]));
return (ClanMember) client.runeliteClanMember(this, memberIndex);
}
else
{

View File

@@ -39,8 +39,10 @@ import java.util.Map;
import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.runelite.api.Actor;
import net.runelite.api.Animation;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Deque;
import net.runelite.api.EnumComposition;
import net.runelite.api.FriendContainer;
import net.runelite.api.GameState;
@@ -70,7 +72,6 @@ import net.runelite.api.Model;
import net.runelite.api.NPC;
import net.runelite.api.NPCComposition;
import net.runelite.api.NameableContainer;
import net.runelite.api.Node;
import net.runelite.api.NodeCache;
import net.runelite.api.ObjectComposition;
import net.runelite.api.Perspective;
@@ -158,6 +159,8 @@ import net.runelite.rs.api.RSNodeDeque;
import net.runelite.rs.api.RSNodeHashTable;
import net.runelite.rs.api.RSPacketBuffer;
import net.runelite.rs.api.RSPlayer;
import net.runelite.rs.api.RSProjectile;
import net.runelite.rs.api.RSRuneLiteClanMember;
import net.runelite.rs.api.RSRuneLiteMenuEntry;
import net.runelite.rs.api.RSScene;
import net.runelite.rs.api.RSScriptEvent;
@@ -1046,34 +1049,36 @@ public abstract class RSClientMixin implements RSClient
@Inject
@Override
public List<Projectile> getProjectiles()
public Projectile createProjectile(int id, int plane, int startX, int startY, int startZ, int startCycle, int endCycle, int slope, int startHeight, int endHeight, Actor target, int targetX, int targetY)
{
List<Projectile> projectiles = new ArrayList<Projectile>();
RSNodeDeque projectileDeque = this.getProjectilesDeque();
Node head = projectileDeque.getSentinel();
for (Node node = head.getNext(); node != head; node = node.getNext())
int targetIndex = 0;
if (target instanceof NPC)
{
projectiles.add((Projectile) node);
targetIndex = ((NPC)target).getIndex() + 1;
}
else if (target instanceof Player)
{
targetIndex = -(((Player)target).getPlayerId() + 1);
}
return projectiles;
RSProjectile projectile = client.newProjectile(id, plane, startX, startY, startZ, startCycle, endCycle, slope, startHeight, targetIndex, endHeight);
projectile.setDestination(targetX, targetY, Perspective.getTileHeight(client, new LocalPoint(targetX, targetY), client.getPlane()), startCycle + client.getGameCycle());
return projectile;
}
@Inject
@Override
public List<GraphicsObject> getGraphicsObjects()
public Deque<Projectile> getProjectiles()
{
List<GraphicsObject> graphicsObjects = new ArrayList<GraphicsObject>();
RSNodeDeque graphicsObjectDeque = this.getGraphicsObjectDeque();
Node head = graphicsObjectDeque.getSentinel();
return this.getProjectilesDeque();
}
for (Node node = head.getNext(); node != head; node = node.getNext())
{
graphicsObjects.add((GraphicsObject) node);
}
return graphicsObjects;
@Inject
@Override
public Deque<GraphicsObject> getGraphicsObjects()
{
return this.getGraphicsObjectDeque();
}
@Inject
@@ -1448,6 +1453,12 @@ public abstract class RSClientMixin implements RSClient
}
}
@Inject
public static RSRuneLiteClanMember runeLiteClanMember()
{
throw new NotImplementedException();
}
@FieldHook("friendsChat")
@Inject
public static void clanMemberManagerChanged(int idx)

View File

@@ -43,6 +43,12 @@ public abstract class RSProjectileMixin implements RSProjectile
@Shadow("client")
private static RSClient client;
@Inject
private int targetX;
@Inject
private int targetY;
@Inject
RSProjectileMixin()
{
@@ -90,6 +96,13 @@ public abstract class RSProjectileMixin implements RSProjectile
}
}
@Inject
@Override
public LocalPoint getTarget()
{
return new LocalPoint(this.targetX, this.targetY);
}
/**
* Called when a projectile is set to move towards a point. For
* projectiles that target the ground, like AoE projectiles from
@@ -104,6 +117,8 @@ public abstract class RSProjectileMixin implements RSProjectile
@MethodHook("setDestination")
public void projectileMoved(int targetX, int targetY, int targetZ, int cycle)
{
this.targetX = targetX;
this.targetY = targetY;
final LocalPoint position = new LocalPoint(targetX, targetY);
final ProjectileMoved projectileMoved = new ProjectileMoved();
projectileMoved.setProjectile(this);