public void Read( PacketReader reader ) { Message = Deserialize(reader.ReadString()); }
// login logic private bool LoginSequence() { PacketReader loginPacket = new PacketReader( reader ); if( loginPacket.opcode != (uint)InputCodes.Handshake ) { Logger.LogAlert( "Session.LoginSequence: Unexpected opcode in the first packet: " + loginPacket.opcode ); LoginFailure( "Unexpected handshake message - possible protocol mismatch!" ); return false; } int clientProtocolVersion = (int)loginPacket.ReadByte(); if( clientProtocolVersion != Config.ProtocolVersion ) { Logger.LogAlert( "Session.LoginSequence: Wrong protocol version: " + clientProtocolVersion ); LoginFailure( "Incompatible protocol version!" ); return false; } player.name = loginPacket.ReadString(); if( !Player.IsValidName( player.name ) ) { Logger.LogAlert( "Session.LoginSequence: Unacceptible player name: " + player.name ); LoginFailure( "Invalid characters in player name!" ); return false; } Logger.LogAlert( "Session.LoginSequence: Success! " + player.name + " authenticated." ); LoginSuccess(); // string verificationKey = loginPacket.ReadString(); // byte unused = loginPacket.ReadByte(); return true; }