private void OnPeriodHashObtained(PeriodHashEventArgs e)
    {
        EventHandler <PeriodHashEventArgs> handler = PeriodHashObtained;

        if (handler != null)
        {
            handler(this, e);
        }
    }
    public IEnumerator GetPeriodHash()
    {
        var task = ParseCloud.CallFunctionAsync <string>("PeriodicHash", new Dictionary <string, object>());

        while (!task.IsCompleted)
        {
            yield return(null);
        }

        if (task.IsFaulted)
        {
            foreach (var e in task.Exception.InnerExceptions)
            {
                Debug.Log("Exception type: " + e.GetType());
                //Exception parseException = e;
                ParseException parseException = (ParseException)e;
                Debug.Log("Error message " + parseException.Message);
                Debug.Log("Error code: " + parseException.Code);
            }
            var ea = new PeriodHashEventArgs();
            ea.Seed    = 0;
            ea.Success = false;
            OnPeriodHashObtained(ea);
        }
        else
        {
            if (task.Result == null)
            {
                var ea = new PeriodHashEventArgs();
                ea.Seed    = 0;
                ea.Success = false;
                OnPeriodHashObtained(ea);
            }
            else
            {
                var seed = task.Result.GetHashCode();
                GlobalData.Instance.rawSeed          = task.Result.ToString();
                GlobalData.Instance.periodicModeSeed = seed;
                var ea = new PeriodHashEventArgs();
                ea.Seed    = seed;
                ea.Success = true;
                OnPeriodHashObtained(ea);
            }
        }

        yield return(null);
    }
 void OnPeriodHashObtained(object sender, PeriodHashEventArgs e)
 {
     if (e.Success)
     {
         GlobalData.Instance.periodicModeSeed = e.Seed;
         Message.Text = I2.Loc.ScriptLocalization.Get("SeedObtained");
         CameraFade.StartAlphaFade(Color.white, false, 1f, 2f, () => {
             PersistentUtility.Instance.GoToScene("GameScene");
         });
     }
     else
     {
         var animation = LoadingAnimation.GetComponent <dfSpriteAnimation>();
         animation.Stop();
         LoadingAnimation.IsVisible = false;
         Message.Text = I2.Loc.ScriptLocalization.Get("ErrorTryLater");
         CameraFade.StartAlphaFade(Color.white, false, 1f, 2f, () => {
             PersistentUtility.Instance.GoToScene("MainMenuScene");
         });
     }
 }