コード例 #1
0
        public static void SetAchievement(Achievements a)
        {
            Debug.Log("SetAchievement " + a);

            if (!GameplayManager.m_i_am_a_cheater && !GameManager.m_cheating_detected)
            {
#if UNITY_XBOXONE
#if !UNITY_EDITOR
                XboxOneAchievements.UnlockAchievement(a);
#endif
#elif UNITY_PS4 && !UNITY_EDITOR
                PS4Manager.UnlockTrophy((int)a);
#else
                if (CloudProvider == CloudProviders.Steam)
                {
                    bool result = Steamworks.SteamUserStats.SetAchievement(a.ToString());
                    Debug.Log("Result = " + result);
                    StoreStats();
#if !UNITY_STANDALONE_LINUX
                }
                else if (CloudProvider == CloudProviders.Galaxy)
                {
                    try {
                        Galaxy.Api.GalaxyInstance.Stats().SetAchievement(a.ToString());
                        StoreStats();
                    }
                    catch (Exception ex) {
                        Debug.Log("Error setting Galaxy achievement: " + ex.Message);
                    }
#endif
                }
#endif
            }
        }
コード例 #2
0
        public static string ReadTextUserData(string filename)
        {
#if UNITY_XBOXONE && !UNITY_EDITOR
            byte [] bytes = XboxOneConnectedStorage.GetData(filename);
            if (bytes == null)
            {
                return(null);
            }
            else
            {
                return(new string(Encoding.ASCII.GetChars(bytes)));
            }
#elif UNITY_PS4 && !UNITY_EDITOR
            byte [] bytes = PS4Manager.ReadData(filename);
            if (bytes == null)
            {
                return(null);
            }
            else
            {
                return(new string(Encoding.ASCII.GetChars(bytes)));
            }
#else
            try {
                return(File.ReadAllText(Path.Combine(persistentDataPath, filename)));
            }
            catch {
                return(null);
            }
#endif
        }
コード例 #3
0
        //For PS4.  Does nothing on PC and Xbox
        public static bool OpenMountPoint(MountPointType type, int index, MountPointMode mode, bool async = false)
        {
#if UNITY_PS4
            return(PS4Manager.OpenMountPoint(type, index, mode, async));
#else
            return(true);
#endif
        }
コード例 #4
0
        //Called once per frame to do platform-specific stuff
        public static void Update()
        {
#if UNITY_XBOXONE && !UNITY_EDITOR
            XboxOneManager.Update();
#elif UNITY_PS4 && !UNITY_EDITOR
            PS4Manager.Update();
#endif

            UpdatePresence();
        }
コード例 #5
0
        public static string[] GetUserDataList(string extension)
        {
#if UNITY_XBOXONE && !UNITY_EDITOR
            return(XboxOneConnectedStorage.GetListOfBlobNamesThatMatchExtension(extension).ToArray());
#elif UNITY_PS4 && !UNITY_EDITOR
            return(PS4Manager.GetFileList(extension));
#else
            return(Directory.GetFiles(persistentDataPath, "*" + extension));
#endif
        }
コード例 #6
0
        //Write a string to the per-user storage
        public static void WriteTextUserData(string filename, string text)
        {
#if UNITY_XBOXONE && !UNITY_EDITOR
            XboxOneConnectedStorage.SaveData(filename, Encoding.ASCII.GetBytes(text));
#elif UNITY_PS4
            PS4Manager.WriteData(filename, Encoding.ASCII.GetBytes(text));
#else
            File.WriteAllText(Path.Combine(persistentDataPath, filename), text);
#endif
        }
コード例 #7
0
        //Write a chunk of data to the per-user storage
        public static void WriteBinaryUserData(string filename, byte[] data)
        {
#if UNITY_XBOXONE && !UNITY_EDITOR
            XboxOneConnectedStorage.SaveData(filename, data);
#elif UNITY_PS4
            PS4Manager.WriteData(filename, data);
#else
            File.WriteAllBytes(Path.Combine(persistentDataPath, filename), data);
#endif
        }
コード例 #8
0
        //Called at startup to initialize platform-specific stuff
        public static void Init()
        {
#if UNITY_XBOXONE
#if !UNITY_EDITOR
            XboxOneManager.Init();
#endif
#elif UNITY_PS4
            PS4Manager.Init();

            //Check if PS4's language changed; if so we override the pilot's setting
            SystemLanguage lang = Application.systemLanguage;
            m_system_language_changed = ((int)lang != PlayerPrefs.GetInt("SystemLanguage"));
            Debug.Log("System language changed: " + m_system_language_changed);
            PlayerPrefs.SetInt("SystemLanguage", (int)lang);
#elif !PLAYABLE_TEASER
            if (Steam.Initialize())
            {
                CloudProvider = CloudProviders.Steam;

                //Check if Steam's language changed; if so we override the pilot's setting
                string lang = Steamworks.SteamApps.GetCurrentGameLanguage();
                m_system_language_changed = (lang != PlayerPrefs.GetString("SteamLanguage"));
                Debug.Log("System language changed: " + m_system_language_changed);
                PlayerPrefs.SetString("SteamLanguage", lang);

                //Set up callback for Steam overlay opened
                Steamworks.Callback <Steamworks.GameOverlayActivated_t> .Create(pCallback => {
                    if (pCallback.m_bActive != 0)
                    {
                        if (GameManager.m_game_state == GameManager.GameState.GAMEPLAY)
                        {
                            GameManager.m_gm.OpenPauseMenu();
                        }
                    }
                });
            }
            else                    //Try Galaxy


            {
#if !UNITY_STANDALONE_LINUX
                //Create Galaxy manager
                GogGalaxyManager galaxy_manager = GameManager.m_gm.gameObject.AddComponent <GogGalaxyManager>();

                if (galaxy_manager != null)
                {
                    Debug.Log("SignedIn: " + Galaxy.Api.GalaxyInstance.User().SignedIn());
                    Debug.Log("LoggedOn: " + Galaxy.Api.GalaxyInstance.User().IsLoggedOn());
                }

                //A callback on success will set CloudProvider to Galaxy
#endif
            }
#endif
        }
コード例 #9
0
        //Read a chunk of data from the per-user storage
        public static byte[] ReadBinaryUserData(string filename)
        {
#if UNITY_XBOXONE && !UNITY_EDITOR
            return(XboxOneConnectedStorage.GetData(filename));
#elif UNITY_PS4 && !UNITY_EDITOR
            return(PS4Manager.ReadData(filename));
#else
            try {
                return(File.ReadAllBytes(Path.Combine(persistentDataPath, filename)));
            }
            catch {
                return(null);
            }
#endif
        }
コード例 #10
0
        public static void DeleteMountPoint(MountPointType type, int index)
        {
#if UNITY_PS4
            switch (type)
            {
            case MountPointType.Pilot:
                PS4Manager.DeleteMountPoint("Pilot");
                break;

            case MountPointType.SavedGame:
                PS4Manager.DeleteMountPoint("SavedGame" + index);
                break;

            case MountPointType.Temp:
                PS4Manager.DeleteMountPoint("Temp");
                break;

            default:
                throw new Exception("Unknown Mount Point type");
            }
#else
            throw new Exception("Cannot delete mount point on this system");
#endif
        }
コード例 #11
0
        //For PS4.  Does nothing on PC and Xbox
        public static void CloseMountPoint()
        {
#if UNITY_PS4
            PS4Manager.CloseMountPoint();
#endif
        }
コード例 #12
0
        private static void UpdatePresence()
        {
            m_UpdatePresenceTimer -= Time.unscaledDeltaTime;
            if (m_UpdatePresenceTimer > 0.0f)
            {
                return;
            }
            m_UpdatePresenceTimer = m_UpdatePresenceDelaySeconds;

            PresenceState state  = PresenceState.NUM;
            bool          paused = false;
            LevelInfo     level  = null;

            if (GameManager.m_game_state == GameManager.GameState.NONE)
            {
                state = PresenceState.Starting;
            }
            else if ((GameManager.m_game_state == GameManager.GameState.MENU) && !MenuManager.m_game_paused)
            {
                state = (MenuManager.m_menu_state == MenuState.MP_PRE_MATCH_MENU) ? PresenceState.WaitingForMatch : PresenceState.Menus;
            }
            else
            {
#if !UNITY_XBOXONE
                //Playing something
                paused = MenuManager.m_game_paused;
                level  = GameplayManager.Level;
#endif

                if (GameplayManager.Level.Mission.Type == MissionType.TRAINING)
                {
                    state = PresenceState.Training;
                }
                else if (NetworkManager.IsMultiplayerSceneLoading() || NetworkManager.IsMultiplayerSceneLoaded())
                {
                    state  = PresenceState.Multiplayer;
                    paused = false;
                }
                else if (GameplayManager.IsChallengeMode)
                {
                    state = PresenceState.Challenge;
                }
                else
                {
                    state = PresenceState.Mission;
                }
            }

            Assert.True(state != PresenceState.NUM);

            if ((state == m_prev_state) && (paused == m_prev_paused) && (level == m_prev_level))
            {
                return;
            }
            Debug.Log("Presence: " + state + " " + paused + " " + ((level == null) ? "" : level.DisplayName));

            m_prev_state  = state;
            m_prev_paused = paused;
            m_prev_level  = level;

#if UNITY_XBOXONE
#if !UNITY_EDITOR
            XboxOneRichPresence.SetPresence(state, paused);
#endif
#elif UNITY_PS4
            PS4Manager.SetPresence(state, paused, level);
#else
            if (CloudProvider == CloudProviders.Steam)
            {
                Steam.SetPresence(state, paused, level);
            }
#if !UNITY_STANDALONE_LINUX
            else if (CloudProvider == CloudProviders.Galaxy)
            {
                GogGalaxyManager.SetPresence(state, paused, level);
            }
#endif
#endif
        }