138 lines
4.6 KiB
C#
138 lines
4.6 KiB
C#
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<RankingReward>(reward);
|
|
Debug.Log("Odbierz nagrode rankingow¹ za miejsce " + rankingReward.POSITION + " id:" + rankingReward.ID);
|
|
Transform parent = UnityEngine.Object.FindObjectOfType<MainGameScene>().transform;
|
|
currentRankingRewardPopUpItem = UnityEngine.Object.Instantiate(RankingRewardPopUpPrefab, parent).GetComponent<RankingRewardPopUpItem>();
|
|
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<TournamentReward>(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<MainGameScene>().transform;
|
|
currentTournamentRewardPopUpItem = UnityEngine.Object.Instantiate(TournamentRewardPopUpPrefab, parent).GetComponent<TournamentRewardPopUpItem>();
|
|
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<SaveDataManager>.Instance.IsCurrentlySandbox() && SteamUserStats.GetAchievement("WIN_TOURNAMENT_ACHIEVMENT", out var pbAchieved) && !pbAchieved && SteamUserStats.SetAchievement("WIN_TOURNAMENT_ACHIEVMENT"))
|
|
{
|
|
SteamUserStats.StoreStats();
|
|
}
|
|
}
|
|
ServerManager.Instance.rewardsOwnData.RemoveAt(index);
|
|
}
|
|
}
|