示例#1
0
    public override void OnEnter()
    {
        DPrompt.ButtonFlags buttonFlags = DPrompt.ButtonFlags.None;
        if (OkButton)
        {
            buttonFlags |= DPrompt.ButtonFlags.OK;
        }
        if (CancelButton)
        {
            buttonFlags |= DPrompt.ButtonFlags.CANCEL;
        }
        if (YesButton)
        {
            buttonFlags |= DPrompt.ButtonFlags.YES;
        }
        if (NoButton)
        {
            buttonFlags |= DPrompt.ButtonFlags.NO;
        }
        if (CloseButton)
        {
            buttonFlags |= DPrompt.ButtonFlags.CLOSE;
        }
        DPrompt data = new DPrompt(i18nTitleText, i18nBodyText, buttonFlags, Image, IsModal);

        Service.Get <PromptManager>().ShowPrompt(data, onButtonPressed, PrefabOverride);
    }
    public void ShowFatal(string type, string format, params object[] args)
    {
        DPrompt.ButtonFlags buttons = DPrompt.ButtonFlags.None;
        DPrompt             data    = new DPrompt(type, string.Format(format, args), buttons);

        ShowPrompt(data, null, FatalPrefab);
    }
示例#3
0
 private void onConfirmClearLayoutPromptButtonClicked(DPrompt.ButtonFlags flags)
 {
     if (DPrompt.IsConfirmation(flags))
     {
         clearCurrentLayout();
     }
 }
示例#4
0
    private IEnumerator loadPrompt()
    {
        DPrompt.ButtonFlags buttonFlags = DPrompt.ButtonFlags.None;
        for (int j = 0; j < PromptDefinition.Buttons.Length; j++)
        {
            buttonFlags |= PromptDefinition.Buttons[j];
        }
        Sprite image = null;

        if (!string.IsNullOrEmpty(PromptDefinition.SpriteContentKey.Key))
        {
            AssetRequest <Sprite> spriteRequest = Content.LoadAsync(PromptDefinition.SpriteContentKey);
            yield return(spriteRequest);

            image = spriteRequest.Asset;
        }
        if (!string.IsNullOrEmpty(PromptDefinition.PrefabContentKey.Key))
        {
            AssetRequest <GameObject> prefabRequest = Content.LoadAsync(PromptDefinition.PrefabContentKey);
            yield return(prefabRequest);

            if ((bool)prefabRequest.Asset.GetComponent <PromptController>())
            {
                Prefab = prefabRequest.Asset.GetComponent <PromptController>();
            }
        }
        string    titleText2       = PromptDefinition.i18nTitleText;
        string    bodyText2        = PromptDefinition.i18nBodyText;
        bool      translate        = !string.IsNullOrEmpty(titleTextInsert) || !string.IsNullOrEmpty(bodyTextInsert);
        Localizer localizer        = Service.Get <Localizer>();
        string    titleDesktopText = $"{titleText2}.Desktop";
        string    bodyDesktopText  = $"{bodyText2}.Desktop";

        titleText2 = (localizer.tokens.ContainsKey(titleDesktopText) ? titleDesktopText : titleText2);
        bodyText2  = (localizer.tokens.ContainsKey(bodyDesktopText) ? bodyDesktopText : bodyText2);
        if (translate)
        {
            titleText2 = (string.IsNullOrEmpty(titleTextInsert) ? localizer.GetTokenTranslation(titleText2) : string.Format(localizer.GetTokenTranslation(titleText2), titleTextInsert));
            bodyText2  = (string.IsNullOrEmpty(bodyTextInsert) ? localizer.GetTokenTranslation(bodyText2) : string.Format(localizer.GetTokenTranslation(bodyText2), bodyTextInsert));
        }
        _promptData = new DPrompt(titleText2, bodyText2, buttonFlags, image, PromptDefinition.IsModal, PromptDefinition.AutoClose, translate, PromptDefinition.UseCloseButton);
        List <PromptController.CustomButtonDefinition> customButtons = new List <PromptController.CustomButtonDefinition>(PromptDefinition.CustomButtonKeys.Length);

        for (int i = 0; i < PromptDefinition.CustomButtonKeys.Length; i++)
        {
            AssetRequest <CustomButton> request = Content.LoadAsync(PromptDefinition.CustomButtonKeys[i]);
            yield return(request);

            if (request.Asset != null)
            {
                customButtons.Add(request.Asset.Definition);
            }
        }
        _promptData.CustomButtons = customButtons.ToArray();
        if (onCompleteHandler != null)
        {
            onCompleteHandler(this);
        }
    }
示例#5
0
    private void onIconLoaded(string path, Sprite icon)
    {
        DPrompt data = new DPrompt("GlobalUI.IAPWarning.Apple.Title", "GlobalUI.IAPWarning.Apple.Body", DPrompt.ButtonFlags.OK, icon);

        Service.Get <EventDispatcher>().DispatchEvent(default(ShowInAppPurchaseDisclaimerEvent));
        Service.Get <PromptManager>().ShowPrompt(data, onButtonClicked);
        Service.Get <ICPSwrveService>().Action("purchase_disclaimer", "viewed");
    }
示例#6
0
    public void ShowProductLoadedError()
    {
        DPrompt data = new DPrompt("Membership.Purchase.Error", membershipService.GetProductsLoadedErrorMsg());

        Content.LoadAsync(delegate(string path, GameObject prefab)
        {
            onMembershipPromptLoaded(data, closeAfterError: false, prefab);
        }, MembershipPromptPrefabContentKey);
    }
示例#7
0
 protected override GameObject createButtonObject(DPrompt data, int buttonIndex, DPrompt.ButtonFlags flag, ref string i18nText)
 {
     if (flag == DPrompt.ButtonFlags.CLOSE)
     {
         closeButton.SetActive(value: true);
         return(closeButton);
     }
     return(base.createButtonObject(data, buttonIndex, flag, ref i18nText));
 }
示例#8
0
    private void onRestoreFailed(ApplicationService.Error error)
    {
        toggleRestoreButton(value: true);
        membershipService.OnRestoreSuccess -= onRestoreSuccess;
        membershipService.OnRestoreFailed  -= onRestoreFailed;
        DPrompt data = new DPrompt(error.Type, error.Message);

        Content.LoadAsync(delegate(string path, GameObject prefab)
        {
            onMembershipPromptLoaded(data, prefab);
        }, MembershipPromptPrefabContentKey);
    }
 public void OnRestoreClicked()
 {
     if (!Service.Get <SessionManager>().HasSession)
     {
         DPrompt     data      = default(DPrompt);
         ref DPrompt reference = ref data;
         reference = new DPrompt("Membership.Purchase.RestoreMessageTitle", "Membership.Purchase.Restore.LoginRequired");
         Content.LoadAsync(delegate(string path, GameObject prefab)
         {
             onMembershipPromptLoaded(data, prefab);
         }, MembershipPromptPrefabContentKey);
     }
示例#10
0
    public void ExecuteImmediate()
    {
        DPrompt.ButtonFlags buttonFlags = DPrompt.ButtonFlags.None;
        for (int i = 0; i < PromptDefinition.Buttons.Length; i++)
        {
            buttonFlags |= PromptDefinition.Buttons[i];
        }
        Sprite image = null;

        if (!string.IsNullOrEmpty(PromptDefinition.SpriteContentKey.Key))
        {
            image = Content.LoadImmediate(PromptDefinition.SpriteContentKey);
        }
        if (!string.IsNullOrEmpty(PromptDefinition.PrefabContentKey.Key))
        {
            PromptController component = Content.LoadImmediate(PromptDefinition.PrefabContentKey).GetComponent <PromptController>();
            if (component != null)
            {
                Prefab = component;
            }
        }
        string    i18nTitleText = PromptDefinition.i18nTitleText;
        string    i18nBodyText  = PromptDefinition.i18nBodyText;
        bool      flag          = !string.IsNullOrEmpty(titleTextInsert) || !string.IsNullOrEmpty(bodyTextInsert);
        Localizer localizer     = Service.Get <Localizer>();
        string    text          = $"{i18nTitleText}.Desktop";
        string    text2         = $"{i18nBodyText}.Desktop";

        i18nTitleText = (localizer.tokens.ContainsKey(text) ? text : i18nTitleText);
        i18nBodyText  = (localizer.tokens.ContainsKey(text2) ? text2 : i18nBodyText);
        if (flag)
        {
            i18nTitleText = (string.IsNullOrEmpty(titleTextInsert) ? localizer.GetTokenTranslation(i18nTitleText) : string.Format(localizer.GetTokenTranslation(i18nTitleText), titleTextInsert));
            i18nBodyText  = (string.IsNullOrEmpty(bodyTextInsert) ? localizer.GetTokenTranslation(i18nBodyText) : string.Format(localizer.GetTokenTranslation(i18nBodyText), bodyTextInsert));
        }
        _promptData = new DPrompt(i18nTitleText, i18nBodyText, buttonFlags, image, PromptDefinition.IsModal, PromptDefinition.AutoClose, flag, PromptDefinition.UseCloseButton);
        List <PromptController.CustomButtonDefinition> list = new List <PromptController.CustomButtonDefinition>(PromptDefinition.CustomButtonKeys.Length);

        for (int i = 0; i < PromptDefinition.CustomButtonKeys.Length; i++)
        {
            CustomButton customButton = Content.LoadImmediate(PromptDefinition.CustomButtonKeys[i]);
            if (customButton != null)
            {
                list.Add(customButton.Definition);
            }
        }
        _promptData.CustomButtons = list.ToArray();
        if (onCompleteHandler != null)
        {
            onCompleteHandler(this);
        }
    }
示例#11
0
    private void onMembershipPromptLoaded(DPrompt data, bool closeAfterError, GameObject membershipPromptPrefab)
    {
        PromptController component = membershipPromptPrefab.GetComponent <PromptController>();

        if (closeAfterError)
        {
            Service.Get <PromptManager>().ShowPrompt(data, onErrorClosed, component);
        }
        else
        {
            Service.Get <PromptManager>().ShowPrompt(data, null, component);
        }
    }
    public void ShowGiftMessage(List <ServerAddedReward> rewards)
    {
        string text     = "";
        string bodyText = "";
        string i18nText = "";
        string tier     = "";

        if (rewards.Count > 1)
        {
            bodyText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B2");
            foreach (ServerAddedReward reward in rewards)
            {
                ServerAddedReward current = reward;
                string            str     = string.Format(Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B2.Header"), current.instanceId);
                text = text + str + "\n";
            }
            i18nText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B3");
            tier     = "thankyou_multiple";
        }
        else if (rewards.Count == 1)
        {
            ServerAddedReward current = rewards[0];
            if (current.instanceId == getCurrentDisplayName())
            {
                AccountFlowData accountFlowData = Service.Get <MembershipService>().GetAccountFlowData();
                text     = string.Format(Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referee.A"), accountFlowData.Referrer);
                bodyText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referee.A1");
                i18nText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.PopUp.A");
                tier     = "welcome";
            }
            else
            {
                text     = string.Format(Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B.Header"), current.instanceId);
                bodyText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B.Body");
                i18nText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B3");
                tier     = "thankyou_single";
            }
        }
        DPrompt data = new DPrompt(text, bodyText, DPrompt.ButtonFlags.OK, null, isModal: true, autoClose: true, isTranslated: true);

        data.SetText(DPrompt.PROMPT_TEXT_INFO, i18nText, isTranslated: true);
        Service.Get <ICPSwrveService>().Action("refer_gift_award", tier);
        Content.LoadAsync(delegate(string path, GameObject prefab)
        {
            onFriendshipPromptLoaded(data, prefab);
        }, FriendshipPromptPrefabContentKey);
    }
示例#13
0
        public static void AccountBannedPromptSetup(DPrompt promptData, AlertType bannedCategory, DateTime?expirationDate)
        {
            string text = string.Empty;

            if (expirationDate.HasValue)
            {
                TimeSpan value = (expirationDate - DateTime.Now).Value;
                if (value.TotalHours >= 0.0)
                {
                    text = $"{(int)value.TotalHours}hrs {Math.Max(1, value.Minutes)}m";
                }
            }
            promptData.SetText("Moderation.Text.Time", text, isTranslated: true);
            string i18nText = (string.IsNullOrEmpty(text) ? "Account.PermaBan.Body" : "Account.TemporaryBan.Body");

            promptData.SetText(DPrompt.PROMPT_TEXT_BODY, i18nText);
        }
示例#14
0
 public void OnRestoreClicked()
 {
     if (!Service.Get <SessionManager>().HasSession)
     {
         DPrompt data = new DPrompt("Membership.Purchase.RestoreMessageTitle", "Membership.Purchase.Restore.LoginRequired");
         Content.LoadAsync(delegate(string path, GameObject prefab)
         {
             onMembershipPromptLoaded(data, prefab);
         }, MembershipPromptPrefabContentKey);
     }
     else
     {
         string format = "Membership.Purchase.Restore.NothingToRestore";
         ApplicationService.Error error = new ApplicationService.Error("Membership.Purchase.RestoreMessageTitle", format);
         onRestoreFailed(error);
     }
 }
    public GameObject ShowPrompt(DPrompt data, Action <DPrompt.ButtonFlags> callback, PromptController prefab = null)
    {
        if (prefab == null)
        {
            prefab = PromptPrefab;
        }
        GameObject gameObject = UnityEngine.Object.Instantiate(prefab.gameObject);

        gameObject.transform.SetParent(base.transform, worldPositionStays: false);
        PromptController component = gameObject.GetComponent <PromptController>();

        component.ShowPrompt(data, callback);
        if (PromptCreated != null)
        {
            PromptCreated(gameObject);
        }
        return(gameObject);
    }
    public override IEnumerator Execute(ScriptableActionPlayer player)
    {
        DPrompt.ButtonFlags buttonFlags = DPrompt.ButtonFlags.None;
        for (int i = 0; i < Options.Length; i++)
        {
            buttonFlags = (DPrompt.ButtonFlags)((int)buttonFlags | (1 << (int)Options[i].Button));
        }
        DPrompt data = new DPrompt(i18nTitleText, i18nBodyText, buttonFlags);
        Action <DPrompt.ButtonFlags> clickHandler = delegate(DPrompt.ButtonFlags pressed)
        {
            onClick(pressed, player);
        };

        Service.Get <PromptManager>().ShowPrompt(data, clickHandler);
        while (!player.ActionIsFinished)
        {
            yield return(null);
        }
    }
示例#17
0
        public void ShowGiftMessage(List <ServerAddedReward> rewards)
        {
            string text     = "";
            string bodyText = "";
            string i18nText = "";
            string tier     = "";

            if (rewards.Count > 1)
            {
                bodyText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B2");
                using (List <ServerAddedReward> .Enumerator enumerator = rewards.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        string text2 = string.Format(arg0: enumerator.Current.instanceId, format: Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B2.Header"));
                        text = text + text2 + "\n";
                    }
                }
                i18nText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B3");
                tier     = "thankyou_multiple";
            }
            else if (rewards.Count == 1)
            {
                ServerAddedReward serverAddedReward = rewards[0];
                if (serverAddedReward.instanceId == getCurrentDisplayName())
                {
                    AccountFlowData accountFlowData = Service.Get <MembershipService>().GetAccountFlowData();
                    text     = string.Format(Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referee.A"), accountFlowData.Referrer);
                    bodyText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referee.A1");
                    i18nText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.PopUp.A");
                    tier     = "welcome";
                }
                else
                {
                    text     = string.Format(Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B.Header"), serverAddedReward.instanceId);
                    bodyText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B.Body");
                    i18nText = Service.Get <Localizer>().GetTokenTranslation("Playercard.FriendInvite.Referrer.B3");
                    tier     = "thankyou_single";
                }
            }
            DPrompt     data      = default(DPrompt);
            ref DPrompt reference = ref data;
示例#18
0
 public void PurchaseFailed(ApplicationService.Error error, bool closeAfterError)
 {
     membershipService.OnPurchaseFailed  -= PurchaseFailed;
     membershipService.OnPurchaseSuccess -= PurchaseSuccess;
     if (error.Message == "Membership.Purchase.Error.ERROR_PURCHASE_CANCELLED_BY_USER")
     {
         Service.Get <ICPSwrveService>().Funnel(Service.Get <MembershipService>().MembershipFunnelName, "03a", "are_you_sure_view");
         string promptId = (CurrentProduct == null) ? "MembershipAreYouSureNoTrialPrompt" : (CurrentProduct.IsTrial() ? "MembershipAreYouSureTrialPrompt" : "MembershipAreYouSureNoTrialPrompt");
         Service.Get <PromptManager>().ShowPrompt(promptId, onAreYouSurePromptButtonClicked);
     }
     else
     {
         DPrompt data = new DPrompt(error.Type, error.Message);
         Content.LoadAsync(delegate(string path, GameObject prefab)
         {
             onMembershipPromptLoaded(data, closeAfterError, prefab);
         }, MembershipPromptPrefabContentKey);
     }
     if (this.OnPurchaseFailed != null)
     {
         this.OnPurchaseFailed();
     }
 }
示例#19
0
    public override IEnumerator PerformFirstPass()
    {
        if (!Service.Get <GameSettings>().OfflineMode)
        {
            yield return(checkInternetConnection(Url));

            if (!isConnected)
            {
                DPrompt data = new DPrompt("GlobalUI.ErrorMessages.NetworkConnectionError", "GlobalUI.ErrorMessages.CheckNetworkConnection", DPrompt.ButtonFlags.None, Image);
                prompt = Service.Get <PromptManager>().ShowPrompt(data, null);
            }
            while (!isConnected)
            {
                yield return(new WaitForSeconds(RetryTime));

                yield return(checkInternetConnection(Url));
            }
            if (prompt != null)
            {
                Object.Destroy(prompt);
            }
        }
    }
示例#20
0
 private bool onActionEvent(InputEvents.ActionEvent evt)
 {
     if (prop.IsOwnerLocalPlayer && base.enabled && evt.Action == InputEvents.Actions.Cancel)
     {
         if (ShowConfirmationPopup)
         {
             DPrompt data = new DPrompt(i18nConfirmationTitleText, i18nConfirmationBodyText, DPrompt.ButtonFlags.CANCEL | DPrompt.ButtonFlags.OK, ImageOverride);
             Service.Get <PromptManager>().ShowPrompt(data, onConfirmationPromptButtonsClicked);
         }
         else
         {
             Service.Get <ActionConfirmationService>().ConfirmAction(typeof(PropCancel), null, delegate
             {
                 UnequipProp();
             });
         }
         if (RestoreTouchPadControlsOnCancel)
         {
             Service.Get <EventDispatcher>().DispatchEvent(new UIDisablerEvents.EnableUIElement("Joystick"));
         }
     }
     return(false);
 }
    private void createConfirmationPrompt(string titleText, string bodyText, Action <DPrompt.ButtonFlags> callback)
    {
        DPrompt data = new DPrompt(titleText, bodyText, DPrompt.ButtonFlags.NO | DPrompt.ButtonFlags.YES);

        Service.Get <PromptManager>().ShowPrompt(data, callback);
    }
 public void ShowProductLoadedError()
 {
     DPrompt     data      = default(DPrompt);
     ref DPrompt reference = ref data;
    public GameObject ShowError(string type, string message, Action <DPrompt.ButtonFlags> callback = null)
    {
        DPrompt data = new DPrompt(type, message, DPrompt.ButtonFlags.CLOSE);

        return(ShowPrompt(data, callback, ErrorPrefab));
    }
示例#24
0
    private void showIconPrompt(ErrorData errorData, SpriteContentKey iconContentKey)
    {
        DPrompt data = new DPrompt(errorData.TitleToken, errorData.MessageToken, errorData.Buttons, iconSprites[iconContentKey.Key]);

        promptManager.ShowPrompt(data, errorData.Callback ?? new Action <DPrompt.ButtonFlags>(clearShowingError), errorData.PromptPrefab);
    }
示例#25
0
    private void onMembershipPromptLoaded(DPrompt data, GameObject membershipPromptPrefab)
    {
        PromptController component = membershipPromptPrefab.GetComponent <PromptController>();

        Service.Get <PromptManager>().ShowPrompt(data, null, component);
    }
示例#26
0
        private void onLoginError(ILoginResult result)
        {
            toggleInteraction(isInteractable: true);
            string errorMessage = "";

            if (result is ILoginCorruptionDetectedResult)
            {
                errorMessage = Service.Get <Localizer>().GetTokenTranslation("Oops! Something went wrong. Please try again.");
                showGeneralError(errorMessage);
                MonoSingleton <NativeAccessibilityManager> .Instance.Native.HandleError(GeneralErrorText.GetInstanceID());
            }
            else if (result is ILoginFailedAccountLockedOutResult)
            {
                errorMessage = Service.Get <Localizer>().GetTokenTranslation("Acount.Login.Errors.LockedOut");
                showGeneralError(errorMessage);
                MonoSingleton <NativeAccessibilityManager> .Instance.Native.HandleError(GeneralErrorText.GetInstanceID());
            }
            else if (result is ILoginFailedAuthenticationResult)
            {
                showUsernameError(string.Empty);
                if (!isPinging)
                {
                    toggleInteraction(isInteractable: false);
                    isPinging = true;
                    Service.Get <ConnectionManager>().DoPingCheck(delegate(ConnectionManager.NetworkConnectionState connectionState)
                    {
                        isPinging = false;
                        toggleInteraction(isInteractable: true);
                        if (connectionState == ConnectionManager.NetworkConnectionState.NoConnection)
                        {
                            Service.Get <PromptManager>().ShowError("GlobalUI.ErrorMessages.NetworkConnectionError", "GlobalUI.ErrorMessages.CheckNetworkConnection");
                        }
                        else
                        {
                            errorMessage = Service.Get <Localizer>().GetTokenTranslation("Acount.Login.Errors.InvalidCredentials");
                            showGeneralError(errorMessage);
                            MonoSingleton <NativeAccessibilityManager> .Instance.Native.HandleError(GeneralErrorText.GetInstanceID());
                            onInvalidCredentialsError(errorMessage);
                        }
                    });
                }
            }
            else if (result is ILoginFailedMultipleAccountsResult)
            {
                Service.Get <MixLoginCreateService>().OnMultipleAccountsResolutionSuccess += onSendSuccess;
                Service.Get <MixLoginCreateService>().MultipleAccountsResolutionSend(loginPayload.Username);
                Service.Get <PromptManager>().ShowError("Account.Login.Error.MultipleAccountsSameEmail", "Account.Login.Error.ResolveInstructionsEmailSent");
            }
            else if (result is ILoginFailedGatedLocationResult)
            {
                Service.Get <PromptManager>().ShowError("GlobalUI.Homescreen.GeoGate.Title", "GlobalUI.Homescreen.GeoGate.Body");
            }
            else if (result is ILoginFailedParentalConsentResult)
            {
                DPrompt data = new DPrompt("Acount.Login.Errors.ActivationNeeded", "Account.Login.Error.ActivationEmailResend", DPrompt.ButtonFlags.NO | DPrompt.ButtonFlags.YES);
                Service.Get <PromptManager>().ShowPrompt(data, resendActivationEmail);
            }
            else if (result is ILoginFailedProfileDisabledResult)
            {
                errorMessage = Service.Get <Localizer>().GetTokenTranslation("Acount.Login.Errors.BanPermanent");
                showGeneralError(errorMessage);
                MonoSingleton <NativeAccessibilityManager> .Instance.Native.HandleError(GeneralErrorText.GetInstanceID());
            }
            else if (result is ILoginFailedTemporaryBanResult)
            {
                onTemporaryBanError();
            }
            else if (result is ILoginMissingInfoResult)
            {
                if (string.IsNullOrEmpty(loginPayload.Username))
                {
                    errorMessage = string.Format(Service.Get <Localizer>().GetTokenTranslation("Account.Create.Validation.Empty"), Service.Get <Localizer>().GetTokenTranslation("Account.Create.Validation.UsernameField"));
                    showUsernameError(errorMessage);
                }
                if (string.IsNullOrEmpty(loginPayload.Password))
                {
                    errorMessage = string.Format(Service.Get <Localizer>().GetTokenTranslation("Account.Create.Validation.Empty"), Service.Get <Localizer>().GetTokenTranslation("Account.Create.Validation.PasswordField"));
                    showPasswordError(errorMessage);
                }
                onMissingInfoError(errorMessage);
            }
            else if (result is ILoginFailedRateLimitedResult || result is ILoginSecurityUpdateResult)
            {
                string type   = "";
                string format = "Account.General.Error.RateLimited";
                Service.Get <EventDispatcher>().DispatchEvent(new ApplicationService.Error(type, format));
            }
            else
            {
                errorMessage = Service.Get <Localizer>().GetTokenTranslation("Account.Create.Validation.UnknownError");
                showGeneralError(errorMessage);
                MonoSingleton <NativeAccessibilityManager> .Instance.Native.HandleError(GeneralErrorText.GetInstanceID());

                if (Service.Get <MixLoginCreateService>().RegistrationConfig == null || Service.Get <MixLoginCreateService>().RegistrationAgeBand == null || Service.Get <MixLoginCreateService>().UpdateAgeBand == null)
                {
                    string step   = ((Service.Get <MixLoginCreateService>().RegistrationConfig == null) ? "config" : "ageband");
                    string type   = "Account.Create.Error.OneID.Title";
                    string format = "Account.Create.Error.OneID";
                    Service.Get <EventDispatcher>().DispatchEvent(new SessionErrorEvents.RegistrationConfigError(type, format, step));
                }
            }
            loginController.OnLoginError -= onLoginError;
        }