200 lines
9.3 KiB
C#
200 lines
9.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
public class RocketUpgradePanel : MonoBehaviour
|
|
{
|
|
public TMP_Text txtRocketLevel;
|
|
public TMP_Text txtEnergyGain;
|
|
public TMP_Text txtSpeed;
|
|
public TMP_Text txtBoostConsumption;
|
|
|
|
public Button btn_upgrade_speed;
|
|
public Button btn_upgrade_energy;
|
|
public Button btn_upgrade_boost;
|
|
|
|
// RocketLevel CurrentLevel,NextLevel;
|
|
|
|
string selectedRocket;
|
|
public ParticleSystem[] fullscreenFX;
|
|
|
|
// public bool Affordable => DBmanager.Metal >= NextLevel.metalCost && DBmanager.Coins >= NextLevel.goldCost;
|
|
|
|
void Awake(){
|
|
btn_upgrade_speed.onClick.AddListener(OnUpgradeSpeed);
|
|
btn_upgrade_energy.onClick.AddListener(OnUpgradeEnergy);
|
|
btn_upgrade_boost.onClick.AddListener(OnUpgradeBoost);
|
|
|
|
}
|
|
int curSpeedLevel;
|
|
int curEnergyLevel;
|
|
int curBoostLevel;
|
|
|
|
public int curRocketLevel => Mathf.Clamp(curSpeedLevel + curEnergyLevel + curBoostLevel+1,1,10);
|
|
SkinType rarity;
|
|
public float curSpeed => SkinShopManager.GetStatsForRarity(rarity)[curSpeedLevel].speedMultiplier;
|
|
public float curEnergy => SkinShopManager.GetStatsForRarity(rarity)[curEnergyLevel].moonMultiplier;
|
|
public float curBoost => SkinShopManager.GetStatsForRarity(rarity)[curBoostLevel].boostConsumption;
|
|
|
|
public RocketLevel nextSpeedStats =>SkinShopManager.GetStatsForRarity(rarity)[curSpeedLevel];
|
|
public RocketLevel nextEnergyStats =>SkinShopManager.GetStatsForRarity(rarity)[curEnergyLevel];
|
|
public RocketLevel nextBoostStats =>SkinShopManager.GetStatsForRarity(rarity)[curBoostLevel];
|
|
public RocketLevel nextRocketLevel => (curRocketLevel < 10) ? SkinShopManager.GetPriceForRarity(rarity)[curRocketLevel] : null;
|
|
|
|
|
|
|
|
public float nextSpeed => SkinShopManager.GetStatsForRarity(rarity)[curSpeedLevel+1].speedMultiplier;
|
|
public float nextEnergy => SkinShopManager.GetStatsForRarity(rarity)[curEnergyLevel+1].moonMultiplier;
|
|
public float nextBoost => SkinShopManager.GetStatsForRarity(rarity)[curBoostLevel+1].boostConsumption;
|
|
|
|
|
|
public void Show(string rocketName){
|
|
PurchasedSkin data = DBmanager.GetSkinByName(rocketName);
|
|
if(data==null){Debug.LogError("Couldn't find data for skin : " + rocketName);return;}
|
|
selectedRocket = rocketName;
|
|
rarity = SkinShopManager.GetRarityFromName(rocketName);
|
|
// txtLevel.text = "Level " +currentLevel.Level;
|
|
|
|
if(data == null){
|
|
Debug.LogError("You don't own this skin " + rocketName);
|
|
return;
|
|
}
|
|
|
|
curSpeedLevel = data.speedLevel;
|
|
curEnergyLevel = data.energyLevel;
|
|
curBoostLevel = data.boostLevel;
|
|
txtRocketLevel.text = "Level " + curRocketLevel;
|
|
txtEnergyGain.text = $"{ curEnergy } per Crystal";
|
|
txtSpeed.text = $"{curSpeed*100}%";
|
|
txtBoostConsumption.text = $"{ curBoost *100}%";
|
|
int maxLevels =SkinShopManager.GetStatsForRarity(rarity).Length;
|
|
// int maxleve
|
|
|
|
bool boostAvailable = curBoostLevel < maxLevels-1;
|
|
bool speedAvailable = curSpeedLevel < maxLevels-1;
|
|
bool energyAvailable = curEnergyLevel < maxLevels-1;
|
|
|
|
if(energyAvailable) {txtEnergyGain.text += $" -> <color=green> {nextEnergy}</color>";}
|
|
if(speedAvailable) {txtSpeed.text += $" -> <color=green> {nextSpeed*100}%</color>";}
|
|
if(boostAvailable) {txtBoostConsumption.text += $" -> <color=green> {nextBoost*100}%</color>";}
|
|
|
|
if(curRocketLevel < 10){
|
|
txtRocketLevel.text += $" -> <color=green> {curRocketLevel+1}</color>";
|
|
}else{
|
|
txtRocketLevel.text += " <color=green> <b> MAX! </b></color>";
|
|
}
|
|
|
|
|
|
if(nextRocketLevel == null){
|
|
btn_upgrade_boost.interactable = false;
|
|
btn_upgrade_energy.interactable = false;
|
|
btn_upgrade_speed.interactable=false;
|
|
btn_upgrade_boost.transform.GetChild(1).gameObject.SetActive(false);
|
|
btn_upgrade_energy.transform.GetChild(1).gameObject.SetActive(false);
|
|
btn_upgrade_speed.transform.GetChild(1).gameObject.SetActive(false);
|
|
|
|
}else{
|
|
btn_upgrade_boost.interactable = DBmanager.Coins >= nextRocketLevel.goldCost && DBmanager.Metal >= nextRocketLevel.metalCost && curRocketLevel < 10 && boostAvailable && curBoostLevel < maxLevels-1;
|
|
btn_upgrade_energy.interactable = DBmanager.Coins >= nextRocketLevel.goldCost && DBmanager.Metal >= nextRocketLevel.metalCost&& curRocketLevel < 10&& energyAvailable && curEnergyLevel < maxLevels -1;
|
|
btn_upgrade_speed.interactable = DBmanager.Coins >= nextRocketLevel.goldCost && DBmanager.Metal >= nextRocketLevel.metalCost&& curRocketLevel < 10&& speedAvailable && curSpeedLevel < maxLevels-1;
|
|
|
|
btn_upgrade_boost.GetComponentInChildren<TMP_Text>().text = curBoostLevel < maxLevels-1 ? "Upgrade" : "Max!";
|
|
btn_upgrade_boost.transform.GetChild(1).gameObject.SetActive(boostAvailable);
|
|
|
|
btn_upgrade_boost.transform.GetChild(1).GetChild(0).gameObject.SetActive(nextRocketLevel.goldCost > 0);
|
|
btn_upgrade_boost.transform.GetChild(1).GetChild(0).GetComponentInChildren<TMP_Text>().text = nextRocketLevel.goldCost.ToString();
|
|
btn_upgrade_boost.transform.GetChild(1).GetChild(1).gameObject.SetActive(nextRocketLevel.metalCost > 0);
|
|
btn_upgrade_boost.transform.GetChild(1).GetChild(1).GetComponentInChildren<TMP_Text>().text = nextRocketLevel.metalCost.ToString();
|
|
|
|
btn_upgrade_speed.GetComponentInChildren<TMP_Text>().text = curSpeedLevel < maxLevels-1 ? "Upgrade" : "Max!";
|
|
btn_upgrade_speed.transform.GetChild(1).gameObject.SetActive(speedAvailable);
|
|
|
|
btn_upgrade_speed.transform.GetChild(1).GetChild(0).gameObject.SetActive(nextRocketLevel.goldCost > 0);
|
|
btn_upgrade_speed.transform.GetChild(1).GetChild(0).GetComponentInChildren<TMP_Text>().text = nextRocketLevel.goldCost.ToString();
|
|
btn_upgrade_speed.transform.GetChild(1).GetChild(1).gameObject.SetActive(nextRocketLevel.metalCost > 0);
|
|
btn_upgrade_speed.transform.GetChild(1).GetChild(1).GetComponentInChildren<TMP_Text>().text = nextRocketLevel.metalCost.ToString();
|
|
|
|
btn_upgrade_energy.GetComponentInChildren<TMP_Text>().text = curEnergyLevel < maxLevels-1 ? "Upgrade" : "Max!";
|
|
btn_upgrade_energy.transform.GetChild(1).gameObject.SetActive(energyAvailable);
|
|
|
|
btn_upgrade_energy.transform.GetChild(1).GetChild(0).gameObject.SetActive(nextRocketLevel.goldCost > 0);
|
|
btn_upgrade_energy.transform.GetChild(1).GetChild(0).GetComponentInChildren<TMP_Text>().text = nextRocketLevel.goldCost.ToString();
|
|
btn_upgrade_energy.transform.GetChild(1).GetChild(1).gameObject.SetActive(nextRocketLevel.metalCost > 0);
|
|
btn_upgrade_energy.transform.GetChild(1).GetChild(1).GetComponentInChildren<TMP_Text>().text = nextRocketLevel.metalCost.ToString();
|
|
}
|
|
gameObject.SetActive(true);
|
|
}
|
|
|
|
void OnUpgradeSpeed(){
|
|
bool Affordable = DBmanager.Coins >= nextSpeedStats.goldCost && DBmanager.Metal >= nextSpeedStats.metalCost;
|
|
if(!Affordable){
|
|
MessageDialog.instance.ShowMessage("Error","Not enough resources to upgrade.");
|
|
return;
|
|
}
|
|
|
|
DBmanager.UpgradeRocketSpeed(selectedRocket, nextSpeedStats);
|
|
SkinShopManager.instance.Populate();
|
|
// MessageDialog.instance.ShowMessage("Success","Rocket Upgraded Successfully!");
|
|
AudioManager.instnace.UpgradeRocket();
|
|
// Hide();
|
|
Show(selectedRocket);
|
|
//UpgradeEffect.top_instance.Show(txtSpeed.rectTransform.position);
|
|
foreach(ParticleSystem particle in fullscreenFX)
|
|
{
|
|
particle.Play();
|
|
}
|
|
|
|
}
|
|
|
|
void OnUpgradeBoost(){
|
|
bool Affordable = DBmanager.Coins >= nextBoostStats.goldCost && DBmanager.Metal >= nextBoostStats.metalCost;
|
|
if(!Affordable){
|
|
MessageDialog.instance.ShowMessage("Error","Not enough resources to upgrade.");
|
|
return;
|
|
}
|
|
|
|
DBmanager.UpgradeRocketBoost(selectedRocket, nextBoostStats);
|
|
SkinShopManager.instance.Populate();
|
|
// MessageDialog.instance.ShowMessage("Success","Rocket Upgraded Successfully!");
|
|
AudioManager.instnace.UpgradeRocket();
|
|
|
|
// Hide();
|
|
Show(selectedRocket);
|
|
|
|
// UpgradeEffect.top_instance.Show(txtBoostConsumption.rectTransform.position);
|
|
foreach (ParticleSystem particle in fullscreenFX)
|
|
{
|
|
particle.Play();
|
|
}
|
|
|
|
}
|
|
|
|
void OnUpgradeEnergy(){
|
|
bool Affordable = DBmanager.Coins >= nextEnergyStats.goldCost && DBmanager.Metal >= nextEnergyStats.metalCost;
|
|
if(!Affordable){
|
|
MessageDialog.instance.ShowMessage("Error","Not enough resources to upgrade.");
|
|
return;
|
|
}
|
|
|
|
DBmanager.UpgradeRocketEnergy(selectedRocket, nextEnergyStats);
|
|
SkinShopManager.instance.Populate();
|
|
// MessageDialog.instance.ShowMessage("Success","Rocket Upgraded Successfully!");
|
|
AudioManager.instnace.UpgradeRocket();
|
|
|
|
// Hide();
|
|
Show(selectedRocket);
|
|
// UpgradeEffect.top_instance.Show(txtEnergyGain.rectTransform.position);
|
|
foreach (ParticleSystem particle in fullscreenFX)
|
|
{
|
|
particle.Play();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public void Hide(){
|
|
gameObject.SetActive(false);
|
|
}
|
|
}
|