/*
* This packet is an offer of an opponent to a waiting client
*
* @author Jonathan Walsh (jwalsh8484@gmail.com)
*/
package egs.packets;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
public class OppOfferPacket extends Packet {
short options;
String user_name;
public OppOfferPacket( short game_name, short game_version,
String user_name ) throws PacketException {
/*Set up the header*/
message_type = MSG_OPP_OFFER;
this.game_name = game_name;
this.game_version = game_version;
/*fill in rest of packet*/
if ( user_name.length() > 30 ) {
throw new PacketException( "Invalid user length (must be <30)" );
}
this.user_name = user_name;
data_area_size = 4 + 30*2;
}
public OppOfferPacket( byte[] raw ) {
ByteBuffer buf = setHeaderNew( raw );
options = buf.getShort();
short empty = buf.getShort();
/*get user name*/
char[] un = new char[30];
for ( int i = 0; i < 30; i++ )
un[i] = buf.getChar();
user_name = new String(un);
}
public byte[] getRaw() {
ByteBuffer buf = makeBufferWithHeader( data_area_size );
buf.putShort( options );
buf.putShort( (short)0 );
/*put in the username*/
int i = 0;
for ( ; i < user_name.length(); i++ )
buf.putChar( user_name.charAt( i ) );
for ( ; i < 30; i++ )
buf.putChar( '\0' );
return buf.array();
}
public String toString() {
String ret = super.toString() + "\noptions = " + options;
ret = ret + "\nuser_name=" + user_name;
return ret;
}
public short get_options() { return options; }
public String get_user_name() { return user_name; }
}
|