Start modeling out wrappers, not sure about this getInteracting()

This commit is contained in:
Adam
2016-04-17 12:56:40 -04:00
parent e10b01dec4
commit a9728a7852
6 changed files with 135 additions and 2 deletions

View File

@@ -0,0 +1,46 @@
package net.runelite.api;
public abstract class Actor extends Renderable
{
private Client client;
private net.runelite.rs.api.Actor actor;
public Actor(Client client, net.runelite.rs.api.Actor actor)
{
super(actor);
this.client = client;
this.actor = actor;
}
public abstract String getName();
public Actor getInteracting()
{
int i = actor.getInteracting();
if (i == -1)
{
return null;
}
// logic taken from runeloader.
if (i < 32767)
{
return client.getNpcs()[i];
}
// XXX is this correct for i = 32767 ?
i = i - 32767 - 1;
return client.getPlayers()[i];
}
public int getHealth()
{
return actor.getHealth();
}
public int getMaxHealth()
{
return actor.getMaxHealth();
}
}

View File

@@ -0,0 +1,35 @@
package net.runelite.api;
import java.util.Arrays;
public class Client
{
private net.runelite.rs.api.Client client;
public Client(net.runelite.rs.api.Client client)
{
this.client = client;
}
public Player getLocalPlayer()
{
if (client.getLocalPlayer() == null)
return null;
return new Player(this, client.getLocalPlayer());
}
public NPC[] getNpcs()
{
return Arrays.stream(client.getCachedNPCs())
.map(npc -> npc != null ? new NPC(this, npc) : null)
.toArray(size -> new NPC[size]);
}
public Player[] getPlayers()
{
return Arrays.stream(client.getCachedPlayers())
.map(player -> player != null ? new Player(this, player) : null)
.toArray(size -> new Player[size]);
}
}

View File

@@ -0,0 +1,20 @@
package net.runelite.api;
import net.runelite.rs.api.NPCComposition;
public class NPC extends Actor
{
private net.runelite.rs.api.NPC npc;
public NPC(Client client, net.runelite.rs.api.NPC npc)
{
super(client, npc);
this.npc = npc;
}
@Override
public String getName()
{
return npc.getComposition().getName();
}
}

View File

@@ -0,0 +1,21 @@
package net.runelite.api;
public class Player extends Actor
{
private Client client;
private net.runelite.rs.api.Player player;
public Player(Client client, net.runelite.rs.api.Player player)
{
super(client, player);
this.player = player;
this.client = client;
}
@Override
public String getName()
{
return player.getName();
}
}

View File

@@ -0,0 +1,11 @@
package net.runelite.api;
public class Renderable
{
private net.runelite.rs.api.Renderable renderable;
public Renderable(net.runelite.rs.api.Renderable renderable)
{
this.renderable = renderable;
}
}

View File

@@ -7,10 +7,10 @@ import net.runelite.mapping.Import;
public interface ClassInfo
{
@Import("methods")
Method getMethods();
Method[] getMethods();
@Import("fields")
Field getFields();
Field[] getFields();
@Import("args")
byte[][][] getArgs();