package net.scapeemulator.game.msg.handler;
import net.scapeemulator.game.model.Position;
import net.scapeemulator.game.model.mob.WalkingQueue;
import net.scapeemulator.game.model.player.Player;
import net.scapeemulator.game.msg.MessageHandler;
import net.scapeemulator.game.msg.impl.WalkMessage;
import net.scapeemulator.game.msg.impl.WalkMessage.Step;
public final class WalkMessageHandler extends MessageHandler<WalkMessage> {
@Override
public void handle(Player player, WalkMessage message) {
if(player.actionsBlocked() || player.frozen()) {
player.getWalkingQueue().setMinimapFlagReset(true);
return;
}
int z = player.getPosition().getHeight();
WalkingQueue queue = player.getWalkingQueue();
Step[] steps = message.getSteps();
Position position = new Position(steps[0].getX(), steps[0].getY(), z);
queue.addFirstStep(position);
queue.setRunningQueue(message.isRunning()); // must be after first step
// which reset()s
for (int i = 1; i < steps.length; i++) {
position = new Position(steps[i].getX(), steps[i].getY(), z);
queue.addStep(position);
}
player.resetTurnToTarget();
player.getInterfaceSet().resetAll();
player.getScriptInput().reset();
player.stopAction();
player.getCombatHandler().setNoRetaliate(3);
}
}