hmm what about to declare 'old' o_o anyways this is my method
Code:
public int getNextWalkingDirection() {
if(wQueueReadPtr == wQueueWritePtr)
return -1;
int dir;
do {
dir = Misc.direction(currentX, currentY, walkingQueueX[wQueueReadPtr], walkingQueueY[wQueueReadPtr]);
if(dir == -1) {
wQueueReadPtr = (wQueueReadPtr+1) % walkingQueueSize;
} else if((dir&1) != 0) {
println_debug("Invalid waypoint in walking queue!");
resetWalkingQueue();
return -1;
}
} while((dir == -1) && (wQueueReadPtr != wQueueWritePtr));
if(dir == -1) return -1;
dir >>= 1;
currentX += Misc.directionDeltaX[dir];
currentY += Misc.directionDeltaY[dir];
absX += Misc.directionDeltaX[dir];
absY += Misc.directionDeltaY[dir];
return dir;
}
public boolean didTeleport = false;
public boolean mapRegionDidChange = false;
public int dir1 = -1, dir2 = -1;
public boolean createItems = false;
public int poimiX = 0, poimiY = 0;
public void getNextPlayerMovement() {
mapRegionDidChange = false;
didTeleport = false;
dir1 = dir2 = -1;
if(teleportToX != -1 && teleportToY != -1) {
mapRegionDidChange = true;
if(mapRegionX != -1 && mapRegionY != -1) {
int relX = teleportToX-mapRegionX*8, relY = teleportToY-mapRegionY*8;
if(relX >= 2*8 && relX < 11*8 && relY >= 2*8 && relY < 11*8)
mapRegionDidChange = false;
}
if(mapRegionDidChange) {
mapRegionX = (teleportToX>>3)-6;
mapRegionY = (teleportToY>>3)-6;
}
currentX = teleportToX - 8*mapRegionX;
currentY = teleportToY - 8*mapRegionY;
absX = teleportToX;
absY = teleportToY;
resetWalkingQueue();
teleportToX = teleportToY = -1;
didTeleport = true;
} else {
dir1 = getNextWalkingDirection();
if(dir1 == -1)
return;
if(isRunning) {
dir2 = getNextWalkingDirection();
}
Client c = (Client)this;
//c.sendMessage("Cycle Ended");
int deltaX = 0, deltaY = 0;
if(currentX < 2*8) {
deltaX = 4*8;
mapRegionX -= 4;
mapRegionDidChange = true;
} else if(currentX >= 11*8) {
deltaX = -4*8;
mapRegionX += 4;
mapRegionDidChange = true;
}
if(currentY < 2*8) {
deltaY = 4*8;
mapRegionY -= 4;
mapRegionDidChange = true;
} else if(currentY >= 11*8) {
deltaY = -4*8;
mapRegionY += 4;
mapRegionDidChange = true;
}
if(mapRegionDidChange/* && VirtualWorld.I(heightLevel, currentX, currentY, currentX + deltaX, currentY + deltaY, 0)*/) {
currentX += deltaX;
currentY += deltaY;
for(int i = 0; i < walkingQueueSize; i++) {
walkingQueueX[i] += deltaX;
walkingQueueY[i] += deltaY;
}
}
//CoordAssistant.processCoords(this);
}
}