Handler created for PromptRecallMsg

This commit is contained in:
2024-03-27 13:34:32 -04:00
parent 5cfbd9998c
commit 507ec302e7
4 changed files with 86 additions and 67 deletions
@@ -23,7 +23,6 @@ import engine.math.Vector3fImmutable;
import engine.net.DispatchMessage;
import engine.net.client.ClientConnection;
import engine.net.client.msg.MoveToPointMsg;
import engine.net.client.msg.PromptRecallMsg;
import engine.net.client.msg.TeleportToPointMsg;
import engine.net.client.msg.UpdateStateMsg;
import engine.objects.*;
@@ -489,56 +488,6 @@ public enum MovementManager {
ac.teleport(ac.getLoc());
}
public static void HandlePromptRecall(PromptRecallMsg msg, ClientConnection origin) throws MsgSendException {
PlayerCharacter player = SessionManager.getPlayerCharacter(origin);
boolean recallAccepted;
if (player == null)
return;
boolean confirmed = msg.getConfirmed();
if (confirmed == true) {
long timeElapsed = System.currentTimeMillis() - player.getTimeStamp("PromptRecall");
//send fail message
recallAccepted = timeElapsed < 15000;
} else
recallAccepted = false;
if (recallAccepted == true) {
//handle recall
long type = player.getTimeStamp("LastRecallType");
if (type == 1) { //recall to bind
player.teleport(player.getBindLoc());
player.setSafeMode();
} else { //recall to rg
float dist = 9999999999f;
Building rg = null;
Vector3fImmutable rgLoc;
for (Runegate runegate : Runegate._runegates.values()) {
rgLoc = runegate.gateBuilding.getLoc();
float distanceSquaredToRunegate = player.getLoc().distanceSquared2D(rgLoc);
if (distanceSquaredToRunegate < sqr(dist))
rg = runegate.gateBuilding;
}
//nearest runegate found. teleport characterTarget
if (rg != null) {
player.teleport(rg.getLoc());
player.setSafeMode();
}
}
}
}
public static void stuck(ClientConnection origin) {
PlayerCharacter sourcePlayer = origin.getPlayerCharacter();