package protocol.swg;
import java.nio.ByteOrder;
import java.util.TimeZone;
import org.apache.mina.core.buffer.IoBuffer;
public class LoginEnumCluster extends SWGMessage {
private byte[] servers;
private int serverCount = 0;
private int maxCharacters = 8;
private int maxPopulation = 250;
private int maxConcurrent = 12;
private TimeZone timeZone = TimeZone.getDefault();
public LoginEnumCluster(int maxCharacters) {
this.maxCharacters = maxCharacters;
}
public void deserialize(IoBuffer data) {
}
public IoBuffer serialize() {
if (servers == null || servers.length == 0)
return IoBuffer.allocate(0);
IoBuffer result = IoBuffer.allocate(22 + servers.length).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short)3);
result.putInt(0xC11C63B9);
result.putInt(serverCount);
result.put(servers);
result.putInt(maxCharacters);
result.putInt(maxPopulation);
result.putInt(maxConcurrent);
int size = result.position();
return IoBuffer.allocate(size).put(result.array(), 0, size).flip();
}
public void addServer(int galaxyID, String serverName) {
IoBuffer result = IoBuffer.allocate(10 + serverName.length()).order(ByteOrder.LITTLE_ENDIAN);
result.putInt(galaxyID);
result.put(getAsciiString(serverName));
result.putInt(Math.abs(timeZone.getRawOffset() / 3600000));
result.flip();
if (servers == null)
servers = result.array();
else
servers = IoBuffer.allocate(servers.length + result.capacity())
.put(servers)
.put(result.array())
.flip()
.array();
serverCount++;
}
public int getSize() {
return 22 + servers.length;
}
}