using System; using Steamworks; using UnityEngine; public class RewardsManager : MonoBehaviour { [Serializable] private class RankingReward { public int ID; public int POSITION; } [Serializable] private class TournamentReward { public int TOURNAMENT_ID; public string TOURNAMENT_NAME; public int PARTICIPANTS_JOINED; public int ENTRY_FEE; public int POSITION; public string TYPE; } public GameObject RankingRewardPopUpPrefab; public GameObject TournamentRewardPopUpPrefab; private RankingRewardPopUpItem currentRankingRewardPopUpItem; private TournamentRewardPopUpItem currentTournamentRewardPopUpItem; private void Start() { CheckRewards(); InvokeRepeating("CheckRewards", 2f, 2f); } private void FixedUpdate() { } public void CheckRewards() { if (!SteamManager.Initialized || GameManager.Instance._playerData.currentPlayerProfileIndex == -1) { return; } ServerManager.Instance.GetOwnRewards(); if ((bool)currentRankingRewardPopUpItem || (bool)currentTournamentRewardPopUpItem) { return; } for (int i = 0; i < ServerManager.Instance.rewardsOwnData.Count; i++) { string rEWARD_TYPE = ServerManager.Instance.rewardsOwnData[i].REWARD_TYPE; if (!(rEWARD_TYPE == "Ranking")) { if (rEWARD_TYPE == "Tournament") { ShowTournamentReward(ServerManager.Instance.rewardsOwnData[i].REWARD, i); } } else { ShowRankingsReward(ServerManager.Instance.rewardsOwnData[i].REWARD, i); } } } private void ShowRankingsReward(string reward, int index) { if (!currentRankingRewardPopUpItem) { RankingReward rankingReward = new RankingReward(); rankingReward = JsonUtility.FromJson(reward); Debug.Log("Odbierz nagrode rankingow¹ za miejsce " + rankingReward.POSITION + " id:" + rankingReward.ID); Transform parent = UnityEngine.Object.FindObjectOfType().transform; currentRankingRewardPopUpItem = UnityEngine.Object.Instantiate(RankingRewardPopUpPrefab, parent).GetComponent(); currentRankingRewardPopUpItem.position = rankingReward.POSITION; ServerManager.Instance.rewardsOwnData.RemoveAt(index); } } private void ShowTournamentReward(string reward, int index) { if ((bool)currentTournamentRewardPopUpItem || string.IsNullOrEmpty(reward)) { return; } TournamentReward tournamentReward = new TournamentReward(); tournamentReward = JsonUtility.FromJson(reward); Debug.Log("Odbierz nagrode turniejow¹ za miejsce " + tournamentReward.POSITION + " id:" + tournamentReward.TOURNAMENT_ID); for (int i = 0; i < TournamentManager.Instance.tournamentPrizes.Length; i++) { if (!(tournamentReward.TYPE == TournamentManager.Instance.tournamentPrizes[i].tournamentType.ToString()) || tournamentReward.POSITION != TournamentManager.Instance.tournamentPrizes[i].Position) { continue; } Transform parent = UnityEngine.Object.FindObjectOfType().transform; currentTournamentRewardPopUpItem = UnityEngine.Object.Instantiate(TournamentRewardPopUpPrefab, parent).GetComponent(); currentTournamentRewardPopUpItem.position = tournamentReward.POSITION; currentTournamentRewardPopUpItem.cash = Mathf.RoundToInt((float)(tournamentReward.PARTICIPANTS_JOINED * tournamentReward.ENTRY_FEE) * ((float)TournamentManager.Instance.tournamentPrizes[i].PrizepoolPercent * 0.01f)); currentTournamentRewardPopUpItem.rankingPoints = TournamentManager.Instance.tournamentPrizes[i].RankingPoints; if (tournamentReward.TOURNAMENT_NAME == "None") { switch (tournamentReward.TYPE) { case "Cyclic": currentTournamentRewardPopUpItem.tournamentName = LanguageManager.Instance.GetText("CYCLIC_TOURNAMENT") + " #" + tournamentReward.TOURNAMENT_ID; break; case "Daily": currentTournamentRewardPopUpItem.tournamentName = LanguageManager.Instance.GetText("DAILY_TOURNAMENT") + " #" + tournamentReward.TOURNAMENT_ID; break; case "Players": currentTournamentRewardPopUpItem.tournamentName = LanguageManager.Instance.GetText("PLAYERS_TOURNAMENT") + " #" + tournamentReward.TOURNAMENT_ID; break; } } else { currentTournamentRewardPopUpItem.tournamentName = tournamentReward.TOURNAMENT_NAME; } if (tournamentReward.POSITION == 0 && !Singleton.Instance.IsCurrentlySandbox() && SteamUserStats.GetAchievement("WIN_TOURNAMENT_ACHIEVMENT", out var pbAchieved) && !pbAchieved && SteamUserStats.SetAchievement("WIN_TOURNAMENT_ACHIEVMENT")) { SteamUserStats.StoreStats(); } } ServerManager.Instance.rewardsOwnData.RemoveAt(index); } }