public void CompleteHandshake(IInitializationData initializationData) { var packet = new PacketBuilder(PacketFamily.Connection, PacketAction.Accept) .AddShort((short)initializationData[InitializationDataKey.SendMultiple]) .AddShort((short)initializationData[InitializationDataKey.ReceiveMultiple]) .AddShort((short)initializationData[InitializationDataKey.ClientID]) .Build(); _packetSendService.SendPacket(packet); }
public void ShowError(IInitializationData initializationData) { switch (initializationData.Response) { case InitReply.ClientOutOfDate: { var versionNumber = initializationData[InitializationDataKey.RequiredVersionNumber]; var extra = $" 0.000.0{versionNumber}"; var messageBox = _messageBoxFactory.CreateMessageBox(DialogResourceID.CONNECTION_CLIENT_OUT_OF_DATE, extra, EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogLargeHeader); messageBox.ShowDialog(); } break; case InitReply.BannedFromServer: { var banType = (BanType)initializationData[InitializationDataKey.BanType]; if (banType == BanType.PermanentBan) { var messageBox = _messageBoxFactory.CreateMessageBox(DialogResourceID.CONNECTION_IP_BAN_PERM, EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogLargeHeader); messageBox.ShowDialog(); } else if (banType == BanType.TemporaryBan) { var banMinutesRemaining = initializationData[InitializationDataKey.BanTimeRemaining]; var extra = $" {banMinutesRemaining} minutes."; var messageBox = _messageBoxFactory.CreateMessageBox(DialogResourceID.CONNECTION_IP_BAN_TEMP, extra, EODialogButtons.Ok, EOMessageBoxStyle.SmallDialogLargeHeader); messageBox.ShowDialog(); } } break; case InitReply.ErrorState: ShowError(ConnectResult.SocketError); break; default: throw new ArgumentOutOfRangeException(); } }