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(); } AudioManager.instnace.SetMusic(0); } 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(){ MessageDialog.instance.ShowQuestion("Confirm", "You are about to sign out from this account. Are you sure to continue?", signout, ()=>{}); } void signout(){ PlayerPrefs.DeleteAll(); PlayerPrefs.Save(); LoadingScreen.instance.LoadLevel("Login"); } public void BuyChest(ChestButton chestBtn){ if(DBmanager.Gems < chestBtn.Price){ MessageDialog.instance.ShowMessage("Failed", "Insufficient Gems to complete the purchase"); return; } DBmanager.SetGems(DBmanager.Gems-chestBtn.Price); ChestOpener.instance.OpenChest(chestBtn.chestData); } 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(); } }