using System; using System.Collections.Generic; using PlayFab; using PlayFab.ClientModels; using UnityEngine; public class PlayFabLeaderboards : MonoBehaviour { public static string DisplayName; public void UpdateLevelsCompleted(int levelsCompleted) { UpdateStatistic(GameConstants.LevelCompletedStatsKey, levelsCompleted); Top10RankChecker.Instance.CheckMyRank(); } public void UpdateLevelCompletionTime(string tier, int levelNumber, int completionTimeInSeconds) { string statisticName = $"{GameConstants.GameNamePrefix}_{tier}_Level_{levelNumber}_Time"; Debug.Log("Ali Levels Completing Time: "+ completionTimeInSeconds+" statistics name: "+ statisticName); UpdateStatistic(statisticName, completionTimeInSeconds); Top10RankChecker.Instance.CheckMyRank(statisticName); } private void UpdateStatistic(string statName, int value) { var request = new UpdatePlayerStatisticsRequest { Statistics = new List { new StatisticUpdate { StatisticName = statName, Value = value } } }; if (PlayFabClientAPI.IsClientLoggedIn()) { PlayFabClientAPI.UpdatePlayerStatistics(request, OnStatisticsUpdateSuccess, OnStatisticsUpdateFailure); } } public void GetLeaderboard(string statisticName, int maxResults, Action> onSuccess, Action onFailure) { var request = new GetLeaderboardRequest { StatisticName = statisticName, StartPosition = 0, MaxResultsCount = maxResults }; PlayFabClientAPI.GetLeaderboard(request, result => onSuccess(result.Leaderboard), onFailure); } public void GetLeaderboardByKey(string key, Action> onSuccess, Action onFailure) { GetLeaderboard(key, 1, onSuccess, onFailure); } public void SetDisplayName(string displayName) { DisplayName = displayName; if (!PlayFabClientAPI.IsClientLoggedIn()) return; var request = new UpdateUserTitleDisplayNameRequest { DisplayName = displayName }; PlayFabClientAPI.UpdateUserTitleDisplayName(request, OnDisplayNameUpdateSuccess, OnDisplayNameUpdateFailure); } private void OnStatisticsUpdateSuccess(UpdatePlayerStatisticsResult result) { Debug.Log("Successfully updated player statistics!"); } private void OnStatisticsUpdateFailure(PlayFabError error) { Debug.LogError("Failed to update player statistics: " + error.GenerateErrorReport()); } private void OnDisplayNameUpdateSuccess(UpdateUserTitleDisplayNameResult result) { Debug.Log("Display name set successfully: " + result.DisplayName); } private void OnDisplayNameUpdateFailure(PlayFabError error) { Debug.LogError("Failed to set display name: " + error.GenerateErrorReport()); } }