mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
9cfb3b9e5d
- Added functionality on the DiscoveryServer to return a random server to the player - Added elements to the UI to support auto-selecting a server - Added client side code to request a random server Tags: #story[1281]
65 lines
2.1 KiB
Java
65 lines
2.1 KiB
Java
package seng302.gameServer.messages;
|
|
|
|
import seng302.discoveryServer.util.ServerListing;
|
|
|
|
public class ServerRegistrationMessage extends Message {
|
|
private int size;
|
|
|
|
public ServerRegistrationMessage(ServerListing serverListing) {
|
|
String serverName = serverListing.getServerName();
|
|
String mapName = serverListing.getMapName();
|
|
String address = serverListing.getAddress();
|
|
int port = serverListing.getPortNumber();
|
|
int players = serverListing.getPortNumber();
|
|
int capacity = serverListing.getCapacity();
|
|
String roomCode = serverListing.getRoomCode();
|
|
|
|
createMessage(serverName, mapName, address, port, players, capacity, roomCode);
|
|
}
|
|
|
|
public static ServerRegistrationMessage getEmptyRegistration() {
|
|
return new ServerRegistrationMessage("","","",0,0,0,"");
|
|
}
|
|
|
|
@Override
|
|
public int getSize() {
|
|
return size;
|
|
}
|
|
|
|
public ServerRegistrationMessage(String serverName, String mapName, String address, int port, int players, int capacity, String roomCode){
|
|
createMessage(serverName, mapName, address, port, players, capacity, roomCode);
|
|
}
|
|
|
|
private void createMessage(String serverName, String mapName, String address, int port, int players, int capacity, String roomCode){
|
|
size = serverName.getBytes().length + mapName.length() + address.length() + roomCode.length() + 36;
|
|
|
|
setHeader(new Header(MessageType.REPO_REGISTRATION_REQUEST, 0x01, (short) getSize()));
|
|
allocateBuffer();
|
|
writeHeaderToBuffer();
|
|
|
|
int nameLength = serverName.length();
|
|
int mapNameLength = mapName.length();
|
|
int addressLength = address.length();
|
|
int roomCodeLength = roomCode.length();
|
|
|
|
// Put fields here
|
|
putInt(nameLength, 6);
|
|
putInt(mapNameLength, 6);
|
|
putInt(addressLength, 6);
|
|
putInt(roomCodeLength, 6);
|
|
|
|
putInt(port, 4);
|
|
putInt(players, 4);
|
|
putInt(capacity, 4);
|
|
|
|
putBytes(serverName.getBytes());
|
|
putBytes(mapName.getBytes());
|
|
putBytes(address.getBytes());
|
|
putBytes(roomCode.getBytes());
|
|
|
|
writeCRC();
|
|
rewind();
|
|
}
|
|
|
|
}
|