243 lines
7.3 KiB
C#
Executable File
243 lines
7.3 KiB
C#
Executable File
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using TMPro;
|
|
using UnityEngine.Events;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
using System.Threading.Tasks;
|
|
|
|
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[] twepsTxt;
|
|
|
|
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 TMP_Text[] rankText;
|
|
public Image[] rankImages;
|
|
public TMP_Text rankCost;
|
|
// public Image RankIcon;
|
|
|
|
// 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
|
|
{
|
|
|
|
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 usernameTxt in usernameTxts)
|
|
{
|
|
usernameTxt.text = DBmanager.DisplayName;
|
|
}
|
|
foreach (TMP_Text txt in coinsTxt)
|
|
{
|
|
txt.text = DBmanager.Coins.ToString();
|
|
}
|
|
foreach (TMP_Text txt in gemsTxt)
|
|
{
|
|
txt.text = DBmanager.Gems.ToString();
|
|
}
|
|
foreach (TMP_Text txt in twepsTxt)
|
|
{
|
|
txt.text = DBmanager.Tweps.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()}";
|
|
}
|
|
|
|
foreach(TMP_Text rankTxt in rankText){
|
|
rankTxt.text = DBmanager.CurrentRank.name;
|
|
}
|
|
|
|
foreach(Image rankImg in rankImages){
|
|
rankImg.sprite = DBmanager.CurrentRank.image;
|
|
ParticleSystem[] effects = rankImg.transform.parent.parent.GetComponentsInChildren<ParticleSystem>();
|
|
foreach(ParticleSystem effect in effects){
|
|
effect.startColor = new Color(DBmanager.CurrentRank.color.r,DBmanager.CurrentRank.color.g, DBmanager.CurrentRank.color.b, effect.startColor.a);
|
|
}
|
|
}
|
|
|
|
rankCost.text = DBmanager.CurrentRank.entryFee.ToString();
|
|
// RankIcon.sprite = DBmanager.CurrentRank.image;
|
|
}
|
|
|
|
public async void LoadMinigame()
|
|
{
|
|
// loadingScreen.SetActive(true);
|
|
// await Task.Delay(1000);
|
|
// SceneManager.LoadScene("Minigame");
|
|
LoadingScreen.instance.LoadLevel("Minigame");
|
|
AudioManager.instnace.BattleCasual();
|
|
|
|
}
|
|
|
|
public void LoadRanked(){
|
|
if(DBmanager.Metal < DBmanager.CurrentRank.entryFee){
|
|
MessageDialog.instance.ShowMessage("Sorry", "You don't have enough energy to enter a Ranked match.");
|
|
return;
|
|
}
|
|
LoadingScreen.instance.LoadLevel("MinigameMatchmaking");
|
|
AudioManager.instnace.BattleRanked();
|
|
}
|
|
|
|
|
|
public void Signout(){
|
|
string msg = "You are about to sign out from this account.";
|
|
if(DBmanager.isGuest){
|
|
msg+="\n<color=red><b>Warning<b>: You haven't linked this account.\nIf you proceed then your progress will be lost</color>";
|
|
}
|
|
MessageDialog.instance.ShowQuestion("Confirm", msg+"\n\n Are you sure to continue?", signout, ()=>{});
|
|
}
|
|
|
|
|
|
public void DeleteAccount()
|
|
{
|
|
string msg = "You are about to Delete this account.";
|
|
|
|
MessageDialog.instance.ShowQuestion("Confirm", msg + "\n\n Are you sure to continue?", deleteAccount, () => { });
|
|
}
|
|
|
|
void deleteAccount()
|
|
{
|
|
DBmanager.DeleteAccount();
|
|
signout();
|
|
}
|
|
void signout(){
|
|
PlayerPrefs.DeleteAll();
|
|
PlayerPrefs.Save();
|
|
|
|
LoadingScreen.instance.LoadLevel("Login");
|
|
}
|
|
|
|
public void RewardChestEnergy(){
|
|
DBmanager.SetMetal(50,true);
|
|
}
|
|
|
|
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 OnTwepsClicked(){
|
|
MessageDialog.instance.ShowMessage("Coming Soon!", "To be introduced soon.");
|
|
}
|
|
|
|
public void OnBoughtIAPGems(int Amount){
|
|
DBmanager.SetGems(DBmanager.Gems + Amount);
|
|
AudioManager.instnace.Spend();
|
|
}
|
|
|
|
public void OnIAPFailed(){
|
|
|
|
}
|
|
}
|
|
|