Add Npc boundaries.

This commit is contained in:
Major-
2014-02-16 18:34:43 +00:00
parent 5c0a11dab0
commit 6a1508a6d2
+45 -10
View File
@@ -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() + "]";
}
}