You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PlumberUltimateAds/Assets/Scripts/Top10RankChecker.cs

125 lines
3.7 KiB
C#

using UnityEngine;
using PlayFab;
using PlayFab.ClientModels;
using Google.Impl;
using MS;
using TMPro; // Required for TextMeshPro
using System;
public class Top10RankChecker : MonoBehaviour
{
public static Top10RankChecker Instance { get; private set; }
public Popup top10Panel;
public LeaderboardType leaderboardType = LeaderboardType.PiPuzzle;
public TextMeshProUGUI timeSpentText;
public TextMeshProUGUI DifficultyText;
private const string LastRankKey = "LastKnownRank";
private const string LevelTimeKey = "LastLevelTimeSpent";
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
}
private void Start()
{
//CheckMyRank();
}
public void CheckMyRank()
{
string statName = leaderboardType.GetStatisticName();
var request = new GetLeaderboardAroundPlayerRequest
{
StatisticName = statName,
MaxResultsCount = 1
};
PlayFabClientAPI.GetLeaderboardAroundPlayer(request, result =>
{
if (result.Leaderboard != null && result.Leaderboard.Count > 0)
{
int currentRank = result.Leaderboard[0].Position;
int lastRank = PlayerPrefs.GetInt(LastRankKey, 999);
Debug.Log($"Current Rank: {currentRank}, Last Rank: {lastRank}");
if (lastRank > 9 && currentRank <= 9)
{
ShowTimeSpent();
ShowDifficultylevel();
top10Panel.Open();
Debug.Log("🎉 Entered Top 10! Showing panel.");
}
PlayerPrefs.SetInt(LastRankKey, currentRank);
PlayerPrefs.Save();
}
}, error =>
{
Debug.LogError("Failed to fetch leaderboard around player: " + error.GenerateErrorReport());
});
}
public void CheckMyRank(string statisticsName)
{
string statName = statisticsName;
var request = new GetLeaderboardAroundPlayerRequest
{
StatisticName = statName,
MaxResultsCount = 10
};
PlayFabClientAPI.GetLeaderboardAroundPlayer(request, result =>
{
if (result.Leaderboard != null && result.Leaderboard.Count > 0)
{
int currentRank = result.Leaderboard[0].Position;
int lastRank = PlayerPrefs.GetInt(LastRankKey, 999);
Debug.Log($"Current Rank: {currentRank}, Last Rank: {lastRank}");
if (lastRank > 9 && currentRank <= 9)
{
ShowTimeSpent();
ShowDifficultylevel();
top10Panel.Open();
Debug.Log("🎉 Entered Top 10! Showing panel.");
}
PlayerPrefs.SetInt(LastRankKey, currentRank);
PlayerPrefs.Save();
}
}, error =>
{
Debug.LogError("Failed to fetch leaderboard around player: " + error.GenerateErrorReport());
});
}
private void ShowTimeSpent()
{
float rawSeconds = PlayerPrefs.GetFloat(LevelTimeKey, 0f);
int minutes = Mathf.FloorToInt(rawSeconds / 60f);
int seconds = Mathf.FloorToInt(rawSeconds % 60f);
string formattedTime = $"{minutes}m and {seconds}s";
if (timeSpentText != null)
timeSpentText.text = formattedTime;
else
Debug.LogWarning("timeSpentText is not assigned in Top10RankChecker");
}
void ShowDifficultylevel()
{
DifficultyText.text = GameManager.currentLevelGroup.LevelGroupName;
}
}