package org.moparscape.msc.gs.model; 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; } }