From a9728a78520108ab87b26e4f29d86dc8d3ffe060 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 17 Apr 2016 12:56:40 -0400 Subject: [PATCH] Start modeling out wrappers, not sure about this getInteracting() --- src/main/java/net/runelite/api/Actor.java | 46 +++++++++++++++++++ src/main/java/net/runelite/api/Client.java | 35 ++++++++++++++ src/main/java/net/runelite/api/NPC.java | 20 ++++++++ src/main/java/net/runelite/api/Player.java | 21 +++++++++ .../java/net/runelite/api/Renderable.java | 11 +++++ .../java/net/runelite/rs/api/ClassInfo.java | 4 +- 6 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 src/main/java/net/runelite/api/Actor.java create mode 100644 src/main/java/net/runelite/api/Client.java create mode 100644 src/main/java/net/runelite/api/NPC.java create mode 100644 src/main/java/net/runelite/api/Player.java create mode 100644 src/main/java/net/runelite/api/Renderable.java diff --git a/src/main/java/net/runelite/api/Actor.java b/src/main/java/net/runelite/api/Actor.java new file mode 100644 index 0000000000..c6a307136e --- /dev/null +++ b/src/main/java/net/runelite/api/Actor.java @@ -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(); + } +} diff --git a/src/main/java/net/runelite/api/Client.java b/src/main/java/net/runelite/api/Client.java new file mode 100644 index 0000000000..d74e859e7e --- /dev/null +++ b/src/main/java/net/runelite/api/Client.java @@ -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]); + } +} diff --git a/src/main/java/net/runelite/api/NPC.java b/src/main/java/net/runelite/api/NPC.java new file mode 100644 index 0000000000..a951ec5da9 --- /dev/null +++ b/src/main/java/net/runelite/api/NPC.java @@ -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(); + } +} diff --git a/src/main/java/net/runelite/api/Player.java b/src/main/java/net/runelite/api/Player.java new file mode 100644 index 0000000000..fdcb0b8e5c --- /dev/null +++ b/src/main/java/net/runelite/api/Player.java @@ -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(); + } +} diff --git a/src/main/java/net/runelite/api/Renderable.java b/src/main/java/net/runelite/api/Renderable.java new file mode 100644 index 0000000000..c7754b0b50 --- /dev/null +++ b/src/main/java/net/runelite/api/Renderable.java @@ -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; + } +} diff --git a/src/main/java/net/runelite/rs/api/ClassInfo.java b/src/main/java/net/runelite/rs/api/ClassInfo.java index 6b84280607..841aa6bd8e 100644 --- a/src/main/java/net/runelite/rs/api/ClassInfo.java +++ b/src/main/java/net/runelite/rs/api/ClassInfo.java @@ -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();