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 } }
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 }
//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 }
//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(); }
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 }
//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 }
//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 }
//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 }
//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 }
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 }
//For PS4. Does nothing on PC and Xbox public static void CloseMountPoint() { #if UNITY_PS4 PS4Manager.CloseMountPoint(); #endif }
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 }