Example #1
0
    IEnumerator ScenarioGetLoop(Func <QuickUser> UserGetter)
    {
        lastGetRequestTime = Time.time;
        while (true)
        {
            UserScenarioState responseScenario = null;
            bool errorReceived = false;
            lastGetRequestTime = Time.time;

            Database.GetUserScenarioState(
                UserGetter(),
                (result) => responseScenario = result,
                delegate { errorReceived = true; });

            while (responseScenario == null && !errorReceived)
            {
                yield return(null);
            }

            if (errorReceived)
            {
                ResetDatabaseScenario();
            }
            else
            {
                HandleDatabaseScenario(responseScenario, UserGetter());
            }

            yield return(new WaitForSeconds(getLoopDelay - (Time.time - lastGetRequestTime)));
        }
    }
Example #2
0
 void HandleNewDatabaseScenario(UserScenarioState dBScenario)
 {
     // Start a new scenario if the database has a scenario to load.
     if (string.IsNullOrEmpty(dBScenario.currentScenario))
     {
         return;
     }
     currentScenarioState = dBScenario;
     StartScenario(dBScenario.currentScenario);
 }
Example #3
0
    public void StartScenario(string scenario)
    {
        // Update our scenario's user.
        if (currentScenarioState == null || Login.CurrentUser != currentScenarioState.user)
        {
            currentScenarioState = new UserScenarioState(scenario, Login.CurrentUser);
        }

        // Set our scenario, and stream that we are using this scenario.
        currentScenarioState.currentScenario = scenario;

        // Close, then tell that a scenario was loaded.
        Close();
        ScenarioLoaded?.Invoke(currentScenarioState.currentScenario);
    }
Example #4
0
    void HandleDatabaseScenario(UserScenarioState loadedScenario, QuickUser user)
    {
        if (string.IsNullOrEmpty(loadedScenario.currentScenario))
        {
            return;
        }

        // If the scenario state from the database is too old, reset it and stop.
        DateTime parsedDate = JavascriptDateUtility.ToDateTime(loadedScenario.startDate);

        if ((DateTime.Now - parsedDate).TotalMinutes > 1)
        {
            ResetDatabaseScenario();
            return;
        }

        loadedScenario.user    = user;
        DatabaseScenario.Value = loadedScenario;
        return;
    }