Esempio n. 1
0
        public bool ReadTitleData(GetTitleDataResult obj, bool fromRoutineTaskManager = true)
        {
            ServerInfo serverInfo;

            if (obj != null && obj.Data.ContainsKey(MetaStateSettings._TitleDataKey_ServerInfo))
            {
                serverInfo = JsonConvert.DeserializeObject <ServerInfo>(obj.Data[MetaStateSettings._TitleDataKey_ServerInfo]);

                if ((serverInfo.CacheVersion < lastServerInfoCacheVersion) && IsGameAvailable)
                {
                    return(true);                                                                           //ignore this manifest.
                }
                lastServerInfoCacheVersion = serverInfo.CacheVersion;

                if (serverInfo.ServerStatus != ServerStatus.Online)
                {
                    GameUnavailableMessageType gameUnavailableMessageType = GameUnavailableMessageType.MAINTENANCE;

                    if (!string.IsNullOrEmpty(serverInfo.MaintenanceMessage))
                    {
                        try
                        {
                            gameUnavailableMessageType = (GameUnavailableMessageType)Enum.Parse(typeof(GameUnavailableMessageType), serverInfo.MaintenanceMessage);
                        }
                        catch { }
                    }

                    ShowUnavailableMessage(gameUnavailableMessageType);

                    return(false);
                }
                else if (serverInfo.ServerStatus == ServerStatus.Online)
                {
                    //"0.1" is wildcard for dev/staging env
                    if (serverInfo.AppVersion == MetaStateSettings.GetMajorVersion() || serverInfo.AppVersion == "0.10" || serverInfo.AppVersion == "0.1")
                    {
                        IsGameAvailable = true;

                        if (fromRoutineTaskManager && DataLayer.Instance.Connection != null)
                        {
                            if (obj != null && obj.Data.ContainsKey(MetaStateSettings._TitleDataKey_EventManager))
                            {
                                EventManagerState eventManagerState = JsonConvert.DeserializeObject <EventManagerState>(obj.Data[MetaStateSettings._TitleDataKey_EventManager]);
                                GameData.Current.EventManagerState = eventManagerState;
                                GameData.Current.EventManagerState.SyncState(EventData.GetAllEvents());
                            }
                        }
                    }
                    else
                    {
                        ShowUnavailableMessage(GameUnavailableMessageType.VERSION_MISMATCH);
                    }
                }
            }
            else
            {
                if (CheckInternetConnection())
                {
                    ShowUnavailableMessage(GameUnavailableMessageType.HOST_UNREACHABLE);
                }
                else
                {
                    ShowUnavailableMessage(GameUnavailableMessageType.INTERNET_ERROR);
                }

                return(false);
            }

            return(true);
        }
Esempio n. 2
0
        protected virtual void AwakeFirtsInit_ServerInfoReady(UnityWebRequest serverResponse)
        {
            Debug.Log("MetaLoopGameManager Fetching AppVersion.txt Completed.");

            if (serverResponse != null && serverResponse.isDone && !serverResponse.isHttpError && !serverResponse.isNetworkError)
            {
                string majorServerVersion = serverResponse.downloadHandler.text;
                if (majorServerVersion != MetaStateSettings.GetMajorVersion())
                {
                    int localVersion  = Convert.ToInt32(MetaStateSettings.GetMajorVersion().Replace(".", ""));
                    int serverVersion = 0;
                    try
                    {
                        serverVersion = Convert.ToInt32(majorServerVersion.Replace(".", ""));
                    }
                    catch
                    {
                        ShowUnavailableMessage(GameUnavailableMessageType.INTERNET_ERROR);
                        return;
                    }

                    if (localVersion > serverVersion)
                    {
                        UseStagingForPreProdBuild = true;
                    }
                }
            }
            else if (serverResponse != null && (!serverResponse.isDone || serverResponse.isHttpError || serverResponse.isNetworkError))
            {
                ShowUnavailableMessage(GameUnavailableMessageType.INTERNET_ERROR);
                return;
            }

            PlayFabManager.Instance.BackOfficeEnvironement = BackOfficeEnvironement.Staging;

#if PROD
            PlayFabManager.Instance.BackOfficeEnvironement = BackOfficeEnvironement.Prod;
            if (UseStagingForPreProdBuild)
            {
                PlayFabManager.Instance.BackOfficeEnvironement = BackOfficeEnvironement.Staging;
            }
#endif

#if UNITY_EDITOR
            //PlayFabManager.Instance.BackOfficeEnvironement = BackOfficeEnvironement.Dev;
#endif



            switch (PlayFabManager.Instance.BackOfficeEnvironement)
            {
            case BackOfficeEnvironement.Dev:
            case BackOfficeEnvironement.Staging:
                PlayFabSettings.TitleId = MetaStateSettings._PlayFabTitleId_Staging;

                break;

            case BackOfficeEnvironement.Prod:

                PlayFabSettings.TitleId = MetaStateSettings._PlayFabTitleId;
                break;
            }

            PlayFabSettings.RequestType = WebRequestType.UnityWebRequest;


            PlayFabManager.Instance.OnDataMissMatchDetected += OnDataMissMatchDetected;


            Debug.Log("MetaLoopGameManager Setting Environement: " + PlayFabManager.Instance.BackOfficeEnvironement.ToString());



            if (IsFirtsStartInPorgress && !GameServiceManager.IsInit)
            {
                Debug.Log("MetaLoopGameManager GameData_OnGameDataReady; Starting GameServiceManager Login...");
                DOVirtual.DelayedCall(0.5f, () => GameServiceManager.GameService.Init());
                //DOVirtual.DelayedCall(15f, () => CancelGameServiceManager());
            }
            else
            {
                PlayFabManager.Instance.Login(OnPlayFabLoginSuccess, OnPlayFabLoginFailed, SystemInfo.deviceUniqueIdentifier);
                Debug.Log("GAMEMANAGER LoginPlayFab MANUAL");
            }
        }