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();
            }
        }