public override BasePacket Distinction(byte[] buffer) { PacketHeader header = PacketHeader.ParseFrom(buffer); MessageType type = (MessageType)header.packetType; try { switch (type) { case MessageType.LoginRequest: return(new ProtobufPacket <LoginRequestPacket>(buffer)); case MessageType.LoginAnswer: return(new ProtobufPacket <LoginAnswerPacket>(buffer)); case MessageType.JoinRoomRequest: return(new ProtobufPacket <JoinRoomRequestPacket>(buffer)); case MessageType.JoinRoomAnswer: return(new ProtobufPacket <JoinRoomAnswerPacket>(buffer)); case MessageType.ExitRoomRequest: return(new ProtobufPacket <ExitRoomRequestPacket>(buffer)); case MessageType.ExitRoomAnswer: return(new ProtobufPacket <ExitRoomAnswerPacket>(buffer)); case MessageType.CreateRoomRequest: return(new ProtobufPacket <CreateRoomRequestPacket>(buffer)); case MessageType.CreateRoomAnswer: return(new ProtobufPacket <CreateRoomAnswerPacket>(buffer)); case MessageType.RoomListRequest: return(new ProtobufPacket <RoomListRequestPacket>(buffer)); case MessageType.RoomListAnswer: return(new ProtobufPacket <RoomListAnswerPacket>(buffer)); case MessageType.WhisperRequest: return(new ProtobufPacket <WhisperRequestPacket>(buffer)); case MessageType.WhisperAnswer: return(new ProtobufPacket <WhisperAnswerPacket>(buffer)); case MessageType.SignUpRequest: return(new ProtobufPacket <SignUpRequestPacket>(buffer)); case MessageType.SignUpAnswer: return(new ProtobufPacket <SignUpAnswerPacket>(buffer)); case MessageType.ChattingRequest: return(new ProtobufPacket <ChattingRequestPacket>(buffer)); case MessageType.ChattingAnswer: return(new ProtobufPacket <ChattingAnswerPacket>(buffer)); case MessageType.CreateAndJoinRoomRequest: return(new ProtobufPacket <CreateAndJoinRoomRequestPacket>(buffer)); case MessageType.CreateAndJoinRoomAnswer: return(new ProtobufPacket <CreateAndJoinRoomAnswerPacket>(buffer)); default: return(null); } } catch (PacketDecodeFailException e) { Debug.ErrorLog(e.Message); } return(null); }