UPF/Assets/Game/Scripts/GameManager.cs
2022-10-06 23:45:04 +05:30

174 lines
5.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.Events;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using System.Threading.Tasks;
using UnityEngine.Monetization;
public class GameManager : MonoBehaviour
{
private static GameManager _instance;
public static GameManager instance => _instance;
public TMP_Text[] usernameTxts;
public TMP_Text[] coinsTxt;
public TMP_Text[] gemsTxt;
public TMP_Text metalTxt;
// public TMP_Text oxygenTxt;
public TMP_Text[] trophiesTxts;
public TMP_Text[] mostTimeTxts;
public TMP_Text doubleKillsTxt;
public TMP_Text tripleKillsTxt;
public TMP_Text quadKillsTxt;
public TMP_Text pentaKillsTxt;
public TMP_Text[] levelTxts;
public Slider[] levelSliders;
public TMP_Text[] levelProgressTxts;
// public GameObject loadingScreen;
[Header("Profile")]
public GameObject profilePopup;
public GameObject networkErrorPopup;
public float NetworkCheckInterval = 3;
void Start()
{
_instance = this;
//Go back to login if not logged
if (!DBmanager.LoggedIn)
{
SceneManager.LoadScene(0);
}
else
{
foreach (TMP_Text usernameTxt in usernameTxts)
{
usernameTxt.text = DBmanager.username;
}
RefreshData();
}
}
float networkCheckTimer = 0;
void Update()
{
networkCheckTimer += Time.deltaTime;
if (networkCheckTimer > NetworkCheckInterval)
{
Debug.Log(Application.internetReachability);
if (Application.internetReachability == NetworkReachability.NotReachable)
{
networkErrorPopup.SetActive(true);
}else{
networkErrorPopup.SetActive(false);
}
networkCheckTimer=0;
}
}
public static void Refresh(){
if(_instance != null){
_instance.RefreshData();
}
}
private void RefreshData()
{
foreach (TMP_Text txt in coinsTxt)
{
txt.text = DBmanager.Coins.ToString();
}
foreach (TMP_Text txt in gemsTxt)
{
txt.text = DBmanager.Gems.ToString();
}
metalTxt.text = DBmanager.Metal.ToString();
foreach(TMP_Text trophiesTxt in trophiesTxts){
trophiesTxt.text = DBmanager.Trophies.ToString();
}
foreach(TMP_Text mostTimeTxt in mostTimeTxts){
mostTimeTxt.text = SceneData.SecondsToText(DBmanager.MostTime);
}
doubleKillsTxt.text = DBmanager.DoubleKills.ToString();
tripleKillsTxt.text = DBmanager.TripleKills.ToString();
quadKillsTxt.text = DBmanager.QuadKills.ToString();
pentaKillsTxt.text = DBmanager.PentaKills.ToString();
// oxygenTxt.text = DBmanager.Trophies.ToString();
foreach (TMP_Text levelTxt in levelTxts)
{
levelTxt.text = Mathf.CeilToInt(DBmanager.Level).ToString();
}
float levelExcess = DBmanager.Level - Mathf.FloorToInt(DBmanager.Level);
Debug.Log("Level : " + DBmanager.Level);
foreach (Slider levelSlider in levelSliders)
{
levelSlider.value = Mathf.Clamp(levelExcess, 0.1f, 1);
}
foreach (TMP_Text levelProgressTxt in levelProgressTxts)
{
levelProgressTxt.text = $"{DBmanager.Xp}/{DBmanager.XpForNextLevel()}";
}
}
public async void LoadMinigame()
{
// loadingScreen.SetActive(true);
// await Task.Delay(1000);
// SceneManager.LoadScene("Minigame");
LoadingScreen.instance.LoadLevel("Minigame");
}
public void LoadRanked(){
LoadingScreen.instance.LoadLevel("MinigameMatchmaking");
}
public void Signout(){
PlayerPrefs.DeleteAll();
PlayerPrefs.Save();
LoadingScreen.instance.LoadLevel("Login");
}
public void BuyChest(ChestButton button){
if(DBmanager.Gems < button.Price){
MessageDialog.instance.ShowMessage("Failed", "Insufficient Gems to complete the purchase");
return;
}
DBmanager.SetGems(DBmanager.Gems-button.Price);
ChestOpener.instance.OpenChest((int)button.minLuck, (int)button.maxLuck);
}
public void BuyGold(GoldPackButton button){
if(DBmanager.Gems < button.Price){
MessageDialog.instance.ShowMessage("Failed", "Insufficient Gems to complete the purchase");
return;
}
AudioManager.instnace.Spend();
DBmanager.SetGems(DBmanager.Gems-button.Price);
DBmanager.SetCoins(DBmanager.Coins + button.Amount);
}
public void OnBoughtIAPGems(int Amount){
DBmanager.SetGems(DBmanager.Gems + Amount);
AudioManager.instnace.Spend();
}
}