/// <summary>
        /// Attempt to authenticate, enumerate account characters, and attach to default character
        /// </summary>
        /// <returns>True if ready to play, false if one or more steps were unsuccessful</returns>
        public async Task <bool> ConnectAsync()
        {
            var connected = false;

            if (WebSocketService.GetState() == WebSocketState.Open)
            {
                var loginState = GetState();
                if (GetState() == LoginState.Guest)
                {
                    var account = GetAccount();
                    if (account?.Id != null)
                    {
                        await LoginAsync(account.Name, account.Password);
                    }
                }
            }
            return(connected);
        }