MoparClassic/LoginServer/src/org/moparscape/msc/ls/packethandler/loginserver/PlayerInfoRequestHandler.java

42 lines
1.3 KiB
Java

package org.moparscape.msc.ls.packethandler.loginserver;
import org.apache.mina.common.IoSession;
import org.moparscape.msc.ls.Server;
import org.moparscape.msc.ls.model.World;
import org.moparscape.msc.ls.net.LSPacket;
import org.moparscape.msc.ls.net.Packet;
import org.moparscape.msc.ls.packetbuilder.LSPacketBuilder;
import org.moparscape.msc.ls.packethandler.PacketHandler;
public class PlayerInfoRequestHandler implements PacketHandler {
public void handlePacket(Packet p, final IoSession session) throws Exception {
final long uID = ((LSPacket) p).getUID();
final long user = p.readLong();
final World w = Server.getServer().findWorld(user);
if (w == null) {
LSPacketBuilder builder = new LSPacketBuilder();
builder.setUID(uID);
builder.addByte((byte) 0);
session.write(builder.toPacket());
return;
}
w.getActionSender().requestPlayerInfo(user, new PacketHandler() {
public void handlePacket(Packet p, IoSession s) throws Exception {
LSPacketBuilder builder = new LSPacketBuilder();
builder.setUID(uID);
if (p.readByte() == 0) {
builder.addByte((byte) 0);
} else {
builder.addByte((byte) 1);
builder.addShort(w == null ? 0 : w.getID());
builder.addBytes(p.getRemainingData());
}
session.write(builder.toPacket());
}
});
}
}