//Downloads the leaderboard data if it has arrived, else null. //Returns the array of requested entries, and the total leaderboard length (not the requested data length) //Also returns the index in the list of the item for the current user, or -1 if the user not in the list public static LeaderboardEntry[] GetLeaderboardData(out int leaderboard_length, out int user_index, out LeaderboardDataState result) { #if UNITY_XBOXONE return(XboxOneLeaderboards.GetLeaderboardData(out leaderboard_length, out user_index, out result)); #elif UNITY_PS4 return(PS4Leaderboards.GetData(out leaderboard_length, out user_index, out result)); #else if (CloudProvider == CloudProviders.Steam) { return(Steam.GetLeaderboardData(out leaderboard_length, out user_index, out result)); #if !UNITY_STANDALONE_LINUX } else if (CloudProvider == CloudProviders.Galaxy) { return(GogGalaxyManager.GetLeaderboardData(out leaderboard_length, out user_index, out result)); #endif } else { leaderboard_length = 0; user_index = -1; result = LeaderboardDataState.NoProvider; return(null); } #endif }
//Returns true if data requested, or false if data is not available //range_start of -1 means get entries around the player public static CloudDataYield RequestChallengeLeaderboardData(string level_name, bool submode, int difficulty_level, int range_start, int num_entries, bool friends) { string leaderboard_name = GetChallengeLeaderboardName(level_name, submode, difficulty_level); #if UNITY_XBOXONE #if !UNITY_EDITOR return(XboxOneLeaderboards.RequestLeaderboardData(leaderboard_name, range_start, num_entries, friends)); #else return(null); #endif #elif UNITY_PS4 return(PS4Leaderboards.RequestChallengeData(leaderboard_name, range_start, num_entries, friends)); #else if (CloudProvider == CloudProviders.Steam) { return(Steam.RequestLeaderboardData(leaderboard_name, range_start, num_entries, friends)); #if !UNITY_STANDALONE_LINUX } else if (CloudProvider == CloudProviders.Galaxy) { return(GogGalaxyManager.RequestLeaderboardData(leaderboard_name, range_start, num_entries, friends)); #endif } else { return(null); } #endif }
// // Interfaces to CloudData functions // public static CloudDataYield UpdateChallengeLeaderboardScore(string level_name, bool submode, int difficulty_level, int score, int kills, int weapon, float time) { #if UNITY_XBOXONE return(XboxOneLeaderboards.UpdateLeaderboardScore(level_name, submode, difficulty_level, score, kills, weapon, time)); #elif UNITY_PS4 string leaderboard_name = Platform.GetChallengeLeaderboardName(level_name, submode, difficulty_level); return(PS4Leaderboards.UpdateChallengeScore(leaderboard_name, score, kills, weapon, time)); #else string leaderboard_name = Platform.GetChallengeLeaderboardName(level_name, submode, difficulty_level); if (CloudProvider == CloudProviders.Steam) { return(Steam.UpdateLeaderboardScore(leaderboard_name, score, kills, weapon, time)); #if !UNITY_STANDALONE_LINUX } else if (CloudProvider == CloudProviders.Galaxy) { return(GogGalaxyManager.UpdateLeaderboardScore(leaderboard_name, score, kills, weapon, time)); #endif } else { return(null); } #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 }
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 }