private void OnServerDataReceived(object sender, SimpleClient.DataReceivedEventArgs e) { BigEndianReader bigEndianReader = new BigEndianReader(e.Data.Data); NetworkMessage msg = MessageReceiver.BuildMessage((uint)e.Data.MessageId.Value, (IDataReader)bigEndianReader); if (msg == null) { this.Send(e.Data, NetworkDestinationEnum.Client); } else { switch (msg.MessageId) { case 1: if (!this.Game) { this.Send(e.Data, NetworkDestinationEnum.Client); this.Window = new UserForm(this); this.Window.Text = "Nouveau client"; WindowManager.AddChildrenForm((Form)this.Window); break; } break; case 22: this.Window.Text = ((IdentificationSuccessMessage)msg).Login; this.Send(e.Data, NetworkDestinationEnum.Client); break; case 42: SelectedServerDataMessage serverDataMessage = (SelectedServerDataMessage)msg; TicketsManager.RegisterTicket(serverDataMessage.Address, (ushort)serverDataMessage.Ports[0], this.Instance, this.Window); this.Send((NetworkMessage) new SelectedServerDataMessage(serverDataMessage.ServerId, "127.0.0.1", Configuration.GamePort, serverDataMessage.CanCreateNewCharacter, serverDataMessage.Ticket), NetworkDestinationEnum.Client); this.Register = true; break; case 101: this.Send((NetworkMessage) new AuthenticationTicketMessage(this.Lang, this.Ticket), NetworkDestinationEnum.Server); break; case 153: CharacterSelectedSuccessMessage selectedSuccessMessage = (CharacterSelectedSuccessMessage)msg; UserForm window = this.Window; window.Text = window.Text + " (" + selectedSuccessMessage.Infos.Name + ")"; this.Send(e.Data, NetworkDestinationEnum.Client); break; case 6253: this.RDM = ((RawDataMessage)msg).Content; this.Window.Button_SaveRDM.Enabled = true; this.Send(e.Data, NetworkDestinationEnum.Client); break; case 6469: SelectedServerDataExtendedMessage dataExtendedMessage = (SelectedServerDataExtendedMessage)msg; TicketsManager.RegisterTicket(dataExtendedMessage.Address, (ushort)dataExtendedMessage.Ports[0], this.Instance, this.Window); this.Send((NetworkMessage) new SelectedServerDataExtendedMessage(dataExtendedMessage.ServerId, "127.0.0.1", Configuration.GamePort, dataExtendedMessage.CanCreateNewCharacter, dataExtendedMessage.Ticket, dataExtendedMessage.Servers), NetworkDestinationEnum.Client); this.Register = true; break; default: this.Send(e.Data, NetworkDestinationEnum.Client); break; } this.OnMessageReceived(new SyncClient.MessageReceivedEventArgs(msg, e.Data)); } }
private void ServerDataReceived(object sender, SimpleClient.DataReceivedEventArgs e) { try { var messageDataReader = new BigEndianReader(e.Data.Data); NetworkMessage message = MessageReceiver.BuildMessage((uint)e.Data.MessageId.Value, messageDataReader); SaveMsg(message, ConnectionDestination.Server); if (ServerMessageReceived != null) { OnServerMessageReceived(new MessageReceivedEventArgs(message)); } if (message == null) { Send(e.Data, ConnectionDestination.Client); return; } // here if (message.MessageId == 6469 || message.MessageId == 42) { SelectedServerDataMessage msg = (SelectedServerDataMessage)message; TicketsManager.RegisterTicket(Client.AccountName, Client.Network.Instance, msg); ((ClientNetwork)Client.Network).Ticket = true; Client.Network.Send(new SelectedServerDataMessage(msg.serverId, "127.0.0.1", new uint[] { 443 }, msg.canCreateNewCharacter, msg.ticket), ConnectionDestination.Client); message.Cancel = true; Client.UnloadClient(); } if (message.MessageId == 22) { IdentificationSuccessMessage msg = (IdentificationSuccessMessage)message; Client.AccountName = msg.login; } if (message.MessageId == 153) { CharacterSelectedSuccessMessage msg = (CharacterSelectedSuccessMessage)message; Client.Dock.Invoke((MethodInvoker) delegate { Client.Dock.Text = msg.infos.name + " (" + Client.AccountName + ")"; }); } if (!message.Cancel) { Send(e.Data, ConnectionDestination.Client); messageDataReader.Dispose(); message = null; } } catch (Exception ex) { if (Client != null && WindowManager.MainWindow.Logger != null) { WindowManager.MainWindow.Logger.Error("[Network] ServerDataReceived Function -> " + ex.Message); } } }