2011-05-13 04:24:42 -04:00
|
|
|
package org.moparscape.msc.gs.model;
|
2011-04-27 01:44:26 -04:00
|
|
|
|
|
|
|
public class Path {
|
|
|
|
/**
|
|
|
|
* Is this path noclip?
|
|
|
|
*/
|
|
|
|
private boolean noClip = false;
|
|
|
|
/**
|
|
|
|
* The starting coordinates for the path
|
|
|
|
*/
|
|
|
|
private int startX, startY;
|
|
|
|
/**
|
|
|
|
* Offsets for the coordinates to follow
|
|
|
|
*/
|
|
|
|
private byte[] waypointXoffsets, waypointYoffsets;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructs a new path with the given coords and offsets
|
|
|
|
*/
|
|
|
|
public Path(int startX, int startY, byte[] waypointXoffsets, byte[] waypointYoffsets) {
|
|
|
|
this.startX = startX;
|
|
|
|
this.startY = startY;
|
|
|
|
this.waypointXoffsets = waypointXoffsets;
|
|
|
|
this.waypointYoffsets = waypointYoffsets;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Path(int x, int y, int endX, int endY) {
|
|
|
|
startX = endX;
|
|
|
|
startY = endY;
|
|
|
|
waypointXoffsets = new byte[0];
|
|
|
|
waypointYoffsets = new byte[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
public Path(int x, int y, int endX, int endY, boolean noClip) {
|
|
|
|
startX = endX;
|
|
|
|
startY = endY;
|
|
|
|
waypointXoffsets = new byte[0];
|
|
|
|
waypointYoffsets = new byte[0];
|
|
|
|
this.noClip = noClip;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Starting X coord of our path
|
|
|
|
*/
|
|
|
|
public int getStartX() {
|
|
|
|
return startX;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Starting Y coord of our path
|
|
|
|
*/
|
|
|
|
public int getStartY() {
|
|
|
|
return startY;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the X coord of the given waypoint
|
|
|
|
*/
|
|
|
|
public int getWaypointX(int wayPoint) {
|
|
|
|
return startX + getWaypointXoffset(wayPoint);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the X offset of the given waypoint
|
|
|
|
*/
|
|
|
|
public byte getWaypointXoffset(int wayPoint) {
|
|
|
|
if (wayPoint >= length()) {
|
|
|
|
return (byte) 0;
|
|
|
|
}
|
|
|
|
return waypointXoffsets[wayPoint];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the Y coord of the given waypoint
|
|
|
|
*/
|
|
|
|
public int getWaypointY(int wayPoint) {
|
|
|
|
return startY + getWaypointYoffset(wayPoint);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the Y offset of the given waypoint
|
|
|
|
*/
|
|
|
|
public byte getWaypointYoffset(int wayPoint) {
|
|
|
|
if (wayPoint >= length()) {
|
|
|
|
return (byte) 0;
|
|
|
|
}
|
|
|
|
return waypointYoffsets[wayPoint];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return if this path is noclip
|
|
|
|
*/
|
|
|
|
public boolean isNoClip() {
|
|
|
|
return noClip;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The length of our path
|
|
|
|
*/
|
|
|
|
public int length() {
|
|
|
|
if (waypointXoffsets == null) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return waypointXoffsets.length;
|
|
|
|
}
|
|
|
|
}
|