From 6a1508a6d21f6bc2abc52e325092f0ca19cbc5c8 Mon Sep 17 00:00:00 2001 From: Major- Date: Sun, 16 Feb 2014 18:34:43 +0000 Subject: [PATCH] Add Npc boundaries. --- src/org/apollo/game/model/Npc.java | 55 ++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/src/org/apollo/game/model/Npc.java b/src/org/apollo/game/model/Npc.java index 8518e573..3cb45ec0 100644 --- a/src/org/apollo/game/model/Npc.java +++ b/src/org/apollo/game/model/Npc.java @@ -11,6 +11,11 @@ import org.apollo.game.sync.block.SynchronizationBlock; @SuppressWarnings("serial") public final class Npc extends Mob { + /** + * The positions representing the bounds (i.e. walking limits) of this npc. + */ + private Position[] boundary; + /** * Creates a new npc with the specified id and {@link Position}. * @@ -32,6 +37,20 @@ public final class Npc extends Mob { this.definition = definition; } + /** + * Gets the boundary of this npc. + * + * @return The boundary. + */ + public Position[] getBoundary() { + return boundary; + } + + @Override + public EntityType getEntityType() { + return EntityType.NPC; + } + /** * Gets the id of this npc. Shorthand for {@link #getDefinition().getId()}. * @@ -41,6 +60,32 @@ public final class Npc extends Mob { return definition.getId(); } + /** + * Indicates whether or not this npc is bound to a specific set of coordinates. + * + * @return {@code true} if the npc is bound, otherwise {@code false}. + */ + public boolean isBound() { + return boundary == null; + } + + /** + * Sets the boundary of this npc. + * + * @param boundary The boundary. + */ + public void setBoundary(Position[] boundary) { + if (boundary.length != 4) { + throw new IllegalArgumentException("Boundary count must be 4."); + } + this.boundary = boundary; + } + + @Override + public String toString() { + return "[" + Npc.class.getName() + ": id=" + definition.getId() + ", name=" + definition.getName() + "]"; + } + /** * Transforms this npc into the npc with the specified id. * @@ -54,14 +99,4 @@ public final class Npc extends Mob { blockSet.add(SynchronizationBlock.createTransformBlock(id)); } - @Override - public EntityType getEntityType() { - return EntityType.NPC; - } - - @Override - public String toString() { - return "[" + Npc.class.getName() + ": id=" + definition.getId() + ", name=" + definition.getName() + "]"; - } - } \ No newline at end of file