public override void HandleUIEvent(GameObject source, object eventData)
 {
     if (source == dialogComponent.CreateAccountButton.gameObject)
     {
         manager.PushState(new CreateAccount());
     }
     else if (source == dialogComponent.SignInButton.gameObject)
     {
         manager.PushState(new SignInWithEmail());
     }
     else if (source == dialogComponent.AnonymousSignIn.gameObject)
     {
         manager.PushState(
             new WaitForTask(auth.SignInAnonymouslyAsync().ContinueWith(t => {
             SignInState.SetState(SignInState.State.Anonymous);
         }),
                             StringConstants.LabelSigningIn, true));
     }
     else if (source == dialogComponent.DontSignIn.gameObject)
     {
         CommonData.isNotSignedIn = true;
         manager.PopState();
     }
     else if (source == dialogComponent.GooglePlaySignIn.gameObject)
     {
         manager.PushState(
             new WaitForTask(GooglePlayServicesSignIn.SignIn(),
                             StringConstants.LabelSigningIn, true));
     }
 }
 // Initialization method.  Called after the state
 // is added to the stack.
 public override void Initialize()
 {
     auth            = Firebase.Auth.FirebaseAuth.DefaultInstance;
     dialogComponent = SpawnUI <Menus.ChooseSignInGUI>(StringConstants.PrefabsChooseSigninMenu);
     dialogComponent.GooglePlaySignIn.gameObject.SetActive(
         GooglePlayServicesSignIn.GooglePlayServicesEnabled());
 }
 public override void HandleUIEvent(GameObject source, object eventData)
 {
     if (source == menuComponent.AddEmailButton.gameObject)
     {
         manager.PushState(new AddEmail());
     }
     else if (source == menuComponent.SignOutButton.gameObject)
     {
         auth.SignOut();
         GooglePlayServicesSignIn.SignOut();
         SignInState.SetState(SignInState.State.SignedOut);
         manager.ClearStack(new Startup());
     }
     else if (source == menuComponent.DeleteAccountButton.gameObject)
     {
         manager.SwapState(new ConfirmationDialog(StringConstants.DeleteAccountDialogTitle,
                                                  StringConstants.DeleteAccountDialogMessage, new DeleteAccount(), null));
     }
     else if (source == menuComponent.AddGooglePlayButton.gameObject)
     {
         manager.PushState(
             new WaitForTask(GooglePlayServicesSignIn.LinkAccount(),
                             StringConstants.LabelSigningIn, true));
     }
     else if (source == menuComponent.MainButton.gameObject)
     {
         manager.PopState();
     }
 }
 // Resume the state.  Called when the state becomes active
 // when the state above is removed.  That state may send an
 // optional object containing any results/data.  Results
 // can also just be null, if no data is sent.
 public override void Resume(StateExitValue results)
 {
     if (results != null)
     {
         if (results.sourceState == typeof(WaitingForDBLoad <UserData>))
         {
             var resultData = results.data as WaitingForDBLoad <UserData> .Results;
             if (resultData.wasSuccessful)
             {
                 if (resultData.results != null)
                 {
                     // Got some results back!  Use this data.
                     CommonData.currentUser = new DBStruct <UserData>(
                         CommonData.DBUserTablePath + userID, CommonData.app);
                     CommonData.currentUser.Initialize(resultData.results);
                     Debug.Log("Fetched user " + CommonData.currentUser.data.name);
                 }
                 else
                 {
                     // Make a new user, using default credentials.
                     Debug.Log("Could not find user " + userID + " - Creating new profile.");
                     UserData temp = new UserData();
                     temp.name = StringConstants.DefaultUserName;
                     temp.id   = userID;
                     CommonData.currentUser = new DBStruct <UserData>(
                         CommonData.DBUserTablePath + userID, CommonData.app);
                     CommonData.currentUser.Initialize(temp);
                     CommonData.currentUser.PushData();
                 }
             }
             else
             {
                 // Can't fetch data.  Assume internet problems, stay offline.
                 CommonData.currentUser = null;
             }
         }
     }
     // Whether we successfully fetched, or had to make a new user,
     // return control to the calling state.
     manager.PopState();
     if (GooglePlayServicesSignIn.CanAutoSignIn())
     {
         manager.PushState(
             new WaitForTask(GooglePlayServicesSignIn.SignIn(),
                             StringConstants.LabelSigningIn, true));
     }
 }
Example #5
0
        public override void Resume(StateExitValue results)
        {
            ShowUI();
            if (results != null)
            {
                if (results.sourceState == typeof(WaitForTask))
                {
                    WaitForTask.Results taskResults = results.data as WaitForTask.Results;
                    if (taskResults.task.IsFaulted)
                    {
                        manager.SwapState(new ManageAccount());
                        manager.PushState(new BasicDialog(StringConstants.DeleteAccountFail +
                                                          taskResults.task.Exception.ToString()));
                    }
                    else
                    {
                        // Delete the user's profile data:
                        string           path     = CommonData.DBUserTablePath + userId;
                        FirebaseDatabase database = FirebaseDatabase.GetInstance(CommonData.app);

                        // Delete all maps associated with this user:
                        database.GetReference(path).SetValueAsync(null);
                        foreach (MapListEntry map in CommonData.currentUser.data.maps)
                        {
                            path = CommonData.DBMapTablePath + map.mapId;
                            database.GetReference(path).SetValueAsync(null);
                        }
                        GooglePlayServicesSignIn.SignOut();
                        SignInState.SetState(SignInState.State.SignedOut);

                        manager.SwapState(new ChooseSignInMenu());
                        manager.PushState(new BasicDialog(StringConstants.DeleteAccountSuccess));
                    }
                }
            }
        }
Example #6
0
        // Initialization method.  Called after the state
        // is added to the stack.
        public override void Initialize()
        {
            Time.timeScale = 0.0f;
            // When the game starts up, it needs to either download the user data
            // or create a new profile.
            auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

            // We go through the full auth system, to request a user id.
            // If we need to sign in, do that.  Otherwise, if we know who we are,
            // so fetch the user data.
            if (auth.CurrentUser == null)
            {
                if (CommonData.inVrMode || CommonData.testLab.IsTestingScenario)
                {
                    manager.PushState(new WaitForTask(auth.SignInAnonymouslyAsync(),
                                                      StringConstants.LabelSigningIn, true));
                }
                else
                {
                    if (GooglePlayServicesSignIn.CanAutoSignIn())
                    {
                        manager.PushState(
                            new WaitForTask(GooglePlayServicesSignIn.SignIn(),
                                            StringConstants.LabelSigningIn, true));
                    }
                    else
                    {
                        manager.PushState(new ChooseSignInMenu());
                    }
                }
            }
            else
            {
                manager.PushState(new States.FetchUserData(auth.CurrentUser.UserId));
            }
        }