// Construction
 public CConnectionDroppedMessage( EConnectRefusalReason reason )
     : base()
 {
     Reason = reason;
 }
 public CClientHelloResponse( EMessageRequestID request_id, EConnectRefusalReason reason )
     : base(request_id)
 {
     Reason = reason;
 }
        private void Handle_Connection_Dropped( EConnectRefusalReason reason )
        {
            Reset_Complete_Logical_State();

            switch ( reason )
            {
                case EConnectRefusalReason.Unknown:
                    CClientResource.Output_Text( EClientTextID.Client_Connection_Refused_Unknown );
                    break;

                case EConnectRefusalReason.Name_Already_Connected:
                    CClientResource.Output_Text( EClientTextID.Client_Connection_Refused_Name_Already_Connected );
                    break;

                case EConnectRefusalReason.Invalid_Password:
                    CClientResource.Output_Text( EClientTextID.Client_Connection_Refused_Invalid_Password );
                    break;

                case EConnectRefusalReason.Unable_To_Announce_To_Chat_Server:
                    CClientResource.Output_Text( EClientTextID.Client_Connection_Refused_Chat );
                    break;

                case EConnectRefusalReason.Unable_To_Join_Required_Chat_Channel:
                    CClientResource.Output_Text( EClientTextID.Client_Connection_Refused_Default_Chat );
                    break;

                case EConnectRefusalReason.Internal_Persistence_Error:
                    CClientResource.Output_Text( EClientTextID.Client_Connection_Refused_Internal_Persistence_Error );
                    break;
            }
        }