Rocket individual upgrades

This commit is contained in:
Sewmina
2022-10-26 06:57:09 +05:30
parent dd89c3fbb5
commit edbfdcfe6e
15 changed files with 2951 additions and 10614 deletions

View File

@@ -8,55 +8,133 @@ public class RocketUpgradePanel : MonoBehaviour
public TMP_Text txtEnergyGain;
public TMP_Text txtSpeed;
public TMP_Text txtBoostConsumption;
public TMP_Text txtLevel;
public TMP_Text txtCostGold;
public TMP_Text txtCostMetal;
public Button btn_upgrade;
RocketLevel CurrentLevel,NextLevel;
SkinShopItemData selectedRocket;
public Button btn_upgrade_speed;
public Button btn_upgrade_energy;
public Button btn_upgrade_boost;
public bool Affordable => DBmanager.Metal >= NextLevel.metalCost && DBmanager.Coins >= NextLevel.goldCost;
// RocketLevel CurrentLevel,NextLevel;
string selectedRocket;
// public bool Affordable => DBmanager.Metal >= NextLevel.metalCost && DBmanager.Coins >= NextLevel.goldCost;
void Awake(){
btn_upgrade.onClick.AddListener(OnUpgrade);
btn_upgrade_speed.onClick.AddListener(OnUpgradeSpeed);
btn_upgrade_energy.onClick.AddListener(OnUpgradeEnergy);
btn_upgrade_boost.onClick.AddListener(OnUpgradeBoost);
}
public void Show(RocketLevel currentLevel, RocketLevel nextLevel, SkinShopItemData rocketData){
CurrentLevel = currentLevel;
NextLevel = nextLevel;
selectedRocket = rocketData;
txtLevel.text = "Level " +currentLevel.Level;
txtEnergyGain.text = $"{currentLevel.moonMultiplier} Per moon";
txtSpeed.text = $"{currentLevel.speedMultiplier*100}%";
txtBoostConsumption.text = $"{currentLevel.boostConsumption*100}%";
int curSpeedLevel;
int curEnergyLevel;
int curBoostLevel;
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;
if(nextLevel != null){
txtLevel.text += $" -> <color=green> Level {nextLevel.Level}</color>";
txtEnergyGain.text += $" -> <color=green> {nextLevel.moonMultiplier}</color>";
txtSpeed.text += $" -> <color=green> {nextLevel.speedMultiplier*100}%</color>";
txtBoostConsumption.text += $" -> <color=green> {nextLevel.boostConsumption*100}%</color>";
public RocketLevel nextSpeedStats =>SkinShopManager.GetStatsForRarity(rarity)[curSpeedLevel];
public RocketLevel nextEnergyStats =>SkinShopManager.GetStatsForRarity(rarity)[curEnergyLevel];
public RocketLevel nextBoostStats =>SkinShopManager.GetStatsForRarity(rarity)[curBoostLevel];
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;
btn_upgrade.interactable = Affordable;
txtCostGold.text = nextLevel.goldCost.ToString();
txtCostMetal.text = nextLevel.metalCost.ToString();
txtCostGold.transform.parent.gameObject.SetActive(nextLevel.goldCost > 0);
txtCostMetal.transform.parent.gameObject.SetActive(nextLevel.metalCost > 0);
txtEnergyGain.text = $"{ curEnergy } Per moon";
txtSpeed.text = $"{curSpeed*100}%";
txtBoostConsumption.text = $"{ curBoost *100}%";
int maxLevels =SkinShopManager.GetStatsForRarity(rarity).Length;
if(curEnergyLevel < maxLevels-1) {txtEnergyGain.text += $" -> <color=green> {nextEnergy}</color>";}
if(curSpeedLevel < maxLevels-1) {txtSpeed.text += $" -> <color=green> {nextSpeed*100}%</color>";}
if(curBoostLevel < maxLevels-1) {txtBoostConsumption.text += $" -> <color=green> {nextBoost*100}%</color>";}
btn_upgrade_boost.interactable = DBmanager.Coins >= nextBoostStats.goldCost && DBmanager.Metal >= nextBoostStats.metalCost && curBoostLevel < maxLevels-1;
btn_upgrade_energy.interactable = DBmanager.Coins >= nextEnergyStats.goldCost && DBmanager.Metal >= nextEnergyStats.metalCost&& curEnergyLevel < maxLevels-1;
btn_upgrade_speed.interactable = DBmanager.Coins >= nextSpeedStats.goldCost && DBmanager.Metal >= nextSpeedStats.metalCost&& curSpeedLevel < maxLevels-1;
btn_upgrade_boost.transform.GetChild(1).GetChild(0).gameObject.SetActive(nextBoostStats.goldCost > 0);
btn_upgrade_boost.transform.GetChild(1).GetChild(0).GetComponentInChildren<TMP_Text>().text = nextBoostStats.goldCost.ToString();
btn_upgrade_boost.transform.GetChild(1).GetChild(1).gameObject.SetActive(nextBoostStats.metalCost > 0);
btn_upgrade_boost.transform.GetChild(1).GetChild(1).GetComponentInChildren<TMP_Text>().text = nextBoostStats.metalCost.ToString();
btn_upgrade_speed.transform.GetChild(1).GetChild(0).gameObject.SetActive(nextSpeedStats.goldCost > 0);
btn_upgrade_speed.transform.GetChild(1).GetChild(0).GetComponentInChildren<TMP_Text>().text = nextSpeedStats.goldCost.ToString();
btn_upgrade_speed.transform.GetChild(1).GetChild(1).gameObject.SetActive(nextSpeedStats.metalCost > 0);
btn_upgrade_speed.transform.GetChild(1).GetChild(1).GetComponentInChildren<TMP_Text>().text = nextSpeedStats.metalCost.ToString();
btn_upgrade_energy.transform.GetChild(1).GetChild(0).gameObject.SetActive(nextEnergyStats.goldCost > 0);
btn_upgrade_energy.transform.GetChild(1).GetChild(0).GetComponentInChildren<TMP_Text>().text = nextEnergyStats.goldCost.ToString();
btn_upgrade_energy.transform.GetChild(1).GetChild(1).gameObject.SetActive(nextEnergyStats.metalCost > 0);
btn_upgrade_energy.transform.GetChild(1).GetChild(1).GetComponentInChildren<TMP_Text>().text = nextEnergyStats.metalCost.ToString();
gameObject.SetActive(true);
}
void OnUpgrade(){
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.UpgradeRocket(selectedRocket.name, NextLevel);
DBmanager.UpgradeRocketSpeed(selectedRocket, nextSpeedStats);
SkinShopManager.instance.Populate();
MessageDialog.instance.ShowMessage("Success","Rocket Upgraded Successfully!");
// MessageDialog.instance.ShowMessage("Success","Rocket Upgraded Successfully!");
AudioManager.instnace.ChestOpen();
Hide();
// Hide();
Show(selectedRocket);
}
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.ChestOpen();
// Hide();
Show(selectedRocket);
}
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.ChestOpen();
// Hide();
Show(selectedRocket);
}
public void Hide(){

View File

@@ -13,11 +13,19 @@ public class SkinShopItem : MonoBehaviour
// public GameObject notPurchasedIndicator;
public SkinShopItemData skinData;
[Header("Stats")]
public TMP_Text txtLevel;
// public TMP_Text txtLevel;
public TMP_Text txtEnergyGain;
public TMP_Text txtSpeed;
public TMP_Text txtBoostConsumption;
public float curSpeed => SkinShopManager.GetStatsForRarity(rarity)[curSpeedLevel].speedMultiplier;
public float curEnergy => SkinShopManager.GetStatsForRarity(rarity)[curEnergyLevel].moonMultiplier;
public float curBoost => SkinShopManager.GetStatsForRarity(rarity)[curBoostLevel].boostConsumption;
SkinType rarity;
int curSpeedLevel;
int curEnergyLevel;
int curBoostLevel;
public void Set(SkinShopItemData data, bool available){
skinData = data;
// newItem.backgroundImg.color = (skinsData.skins[i].skinType==SkinType.Base) ? basicColor : (skinsData.skins[i].skinType==SkinType.Rare ? rareColor : legendaryColor);
@@ -37,19 +45,25 @@ public class SkinShopItem : MonoBehaviour
banners[3].SetActive(data.skinType== SkinType.Legendary);
//Level
txtLevel.text = "";
rarity = SkinShopManager.GetRarityFromName(data.name);
PurchasedSkin purchasedSkin = DBmanager.GetSkinByName(data.name);
if(purchasedSkin != null){
curSpeedLevel = purchasedSkin.speedLevel;
curEnergyLevel = purchasedSkin.energyLevel;
curBoostLevel = purchasedSkin.boostLevel;
}
// txtLevel.text = "";
txtEnergyGain.transform.parent.gameObject.SetActive(available);
txtSpeed.transform.parent.gameObject.SetActive(available);
txtBoostConsumption.transform.parent.gameObject.SetActive(available);
if(available){
int curLevel = DBmanager.SkinsPurchased[data.name];
RocketLevel level = SkinShopManager.GetStatsForRarity(data)[curLevel];
txtLevel.text = "Level " +(curLevel+1);
txtEnergyGain.text = level.moonMultiplier.ToString();
txtSpeed.text = (level.speedMultiplier * 100).ToString("n0") + "%";
txtBoostConsumption.text = (level.boostConsumption * 100).ToString("n0") + "%";
txtEnergyGain.text = curEnergy.ToString();
txtSpeed.text = (curSpeed * 100).ToString("n0") + "%";
txtBoostConsumption.text = (curBoost * 100).ToString("n0") + "%";
}
}
@@ -62,7 +76,7 @@ public class SkinShopItem : MonoBehaviour
frame.enabled=false;
}
if(!DBmanager.SkinsPurchased.ContainsKey(skinData.name)){
if(DBmanager.GetSkinIdByName(skinData.name) < 0){
frame.color = Color.red;
// notPurchasedIndicator.SetActive(true);
// notPurchasedIndicator.GetComponentInChildren<TMP_Text>().text = skinData.price.ToString();

View File

@@ -76,7 +76,7 @@ public class SkinShopManager : MonoBehaviour
bool isAvailable = skinShopBuilding.curLevel >= rarity;
if(!isAvailable){continue;}
bool isOwned = DBmanager.SkinsPurchased.ContainsKey(skinsData.skins[i].name);
bool isOwned = DBmanager.GetSkinIdByName(skinsData.skins[i].name) >= 0;
if(skinShopBuilding.curLevel == rarity){
@@ -129,7 +129,7 @@ public class SkinShopManager : MonoBehaviour
btn_Equip.gameObject.SetActive(false); btn_Buy.gameObject.SetActive(false);
return;
}
if(DBmanager.SkinsPurchased.ContainsKey(data.name)){ // <-- purchased
if(DBmanager.GetSkinIdByName(data.name)>=0){ // <-- purchased
btn_Equip.gameObject.SetActive(true);
btn_Upgrade.gameObject.SetActive(true);
btn_Buy.gameObject.SetActive(false);
@@ -163,9 +163,7 @@ public class SkinShopManager : MonoBehaviour
}
void onUpgrade(){
RocketLevel[] levels = GetStatsForRarity(selectedSkin);
int curLevel = DBmanager.SkinsPurchased[selectedSkin.name];
upgradePanel.Show(levels[curLevel], levels[curLevel+1],selectedSkin);
upgradePanel.Show(selectedSkin.name);
}
public void onBuy(){

View File

@@ -176,6 +176,9 @@ public class SpaceshipController : NetworkBehaviour
if (isLocalPlayer)
{
ResetStats();
if(MinigameManager.instance.isRanked){
DBmanager.SetMetal(DBmanager.Metal + DBmanager.CurrentRank.energyReward);
}
if (joystick == null) { joystick = FindObjectOfType<Joystick>(); }
FindObjectOfType<CameraFollower>().SetTarget(transform);
string myName = PlayerPrefs.GetString("username");
@@ -190,7 +193,7 @@ public class SpaceshipController : NetworkBehaviour
}
//Set Skin
if (!DBmanager.SkinsPurchased.ContainsKey(SkinShopManager.GetEquipedSkin()))
if (DBmanager.GetSkinIdByName(SkinShopManager.GetEquipedSkin()) < 0)
{
//False skin purchase
}
@@ -198,22 +201,23 @@ public class SpaceshipController : NetworkBehaviour
{
string skin = SkinShopManager.GetEquipedSkin();
SkinType rarity = SkinShopManager.GetRarityFromName(skin);
int level = DBmanager.SkinsPurchased[skin];
RocketLevel stats = SkinShopManager.GetStatsForRarity(rarity)[level];
PurchasedSkin purchasedSkin = DBmanager.GetSkinByName(skin);
float m_speed = SkinShopManager.GetStatsForRarity(rarity)[purchasedSkin.speedLevel].speedMultiplier;
float m_energy = SkinShopManager.GetStatsForRarity(rarity)[purchasedSkin.energyLevel].moonMultiplier;
float m_boost = SkinShopManager.GetStatsForRarity(rarity)[purchasedSkin.boostLevel].boostConsumption;
if (isServer)
{
skinName = skin;
speedMultiplier = stats.speedMultiplier;
energyGain = stats.moonMultiplier;
boostConsumption = stats.boostConsumption;
speedMultiplier = m_speed;
energyGain = m_energy;
boostConsumption = m_boost;
}
else
{
CmdSetSkin(skin);
CmdSetStats(stats.speedMultiplier, stats.moonMultiplier,stats.boostConsumption);
CmdSetStats(m_speed, m_energy, m_boost);
}
}