private static void RefreshLoggedInState()
        {
            var isLoggedIn = Client.MasterServer.CurrentPlayerIsLoggedIn;

            if (isLoggedIn)
            {
                MenuLogin.SetDisplayed(MenuLoginMode.None);
                RefreshCurrentGameServerConnectionState();
            }
            else
            {
                var connectionState = Client.MasterServer.MasterServerConnectionState;

                if (Api.Client.SteamApi.IsSteamClient &&
                    Api.Client.SteamApi.State == SteamApiState.Connecting)
                {
                    connectionState = ConnectionState.Connecting;
                }

                MenuLogin.SetDisplayed(connectionState == ConnectionState.Connecting
                                           ? MenuLoginMode.Connecting
                                           : MenuLoginMode.Login);
            }
        }
        public static void ShowDialog(MasterClientLoginErrorCode errorCode)
        {
            string errorMessage;
            var    title = DefaultTitle;

            switch (errorCode)
            {
            case MasterClientLoginErrorCode.TokenDisabled:
                // the master token has been expired and user need to login again
                // don't display any errors
                return;

            case MasterClientLoginErrorCode.LoginOrPasswordIncorrect:
                errorMessage = IncorrectEmailOrPassword;
                break;

            case MasterClientLoginErrorCode.GameNotOwned:
                errorMessage = GameNotOwned;
                break;

            case MasterClientLoginErrorCode.AccountBlocked:
                errorMessage = AccountBlocked;
                break;

            case MasterClientLoginErrorCode.AccountNotActivated:
                DialogWindow.ShowDialog(
                    EmailWithTheActivation_Title,
                    EmailWithTheActivation_Message,
                    okText: Api.Client.SteamApi.IsSteamClient
                                    ? CoreStrings.Button_Continue
                                    : CoreStrings.Button_OK,
                    okAction: () =>
                {
                    if (Api.Client.SteamApi.IsSteamClient)
                    {
                        Api.Client.SteamApi.TryLoginWithSteamAccount();
                    }
                },
                    textAlignment: TextAlignment.Left);
                return;

            case MasterClientLoginErrorCode.UsernameNotSelected:
                MenuLogin.SetDisplayed(MenuLoginMode.SelectUsername);
                return;

            case MasterClientLoginErrorCode.UsernameInvalid:
                MenuLogin.SetDisplayed(MenuLoginMode.SelectUsername);
                title        = UsernameInvalid_Title;
                errorMessage = UsernameRequirements;
                break;

            case MasterClientLoginErrorCode.UsernameUsed:
                MenuLogin.SetDisplayed(MenuLoginMode.SelectUsername);
                title        = UsernameUsed_Title;
                errorMessage = UsernameUsed_Message;
                break;

            case MasterClientLoginErrorCode.SteamUserNotAssigned:
                // display regular login menu (the game will detect this is a Steam version and properly handle that)
                MenuLogin.SetDisplayed(MenuLoginMode.Login);
                return;

            case MasterClientLoginErrorCode.UserHasAssignedDifferentSteamId:
                title        = UserHasAssignedDifferentSteamId_Title;
                errorMessage = UserHasAssignedDifferentSteamId_Message;
                break;

            case MasterClientLoginErrorCode.UnknownError:
            default:
                errorMessage = UnknownError;
                break;
            }

            DialogWindow.ShowDialog(title,
                                    errorMessage,
                                    zIndexOffset: 9002,
                                    textAlignment: TextAlignment.Left);
        }