So I recently tried to make a shop system using foreach but cant get it to work the buttons won’t change except one, they all work when I buy them, but not when I equip or unequip an item if would be great if someone can take it look and tell me what’s wrong please and thank you
using MoreMountains.NiceVibrations;
using UnityEngine;
using UnityEngine.Events;
using TMPro;
using EasyMobile;
using System.Collections.Generic;
using UnityEngine.Serialization;
public class ShopManager : MonoBehaviour
{
[FormerlySerializedAs("NotEnoughText")] [SerializeField]
private UnityEvent notEnoughText;
private float _playerMoney;
private int _itemValueRainbowSkin;
private int _itemValueGrayTrail;
private int _itemValueGreenTrail;
private int _itemValueRainbowTrail;
private int _itemValueGreenSkin;
public List<ShopItem> shopItems;
[System.Serializable]
public class ShopItem
{
public string itemName;
public GameObject buyButton;
public GameObject equipButton;
public GameObject unequipButton;
[FormerlySerializedAs("Cost")] public float cost;
public TextMeshProUGUI costText;
}
// Start is called before the first frame update
private void Start()
{
CheckButtons();
}
public void UnEquip(string itemName)
{
_itemValueRainbowSkin = PlayerPrefs.GetInt("ItemValueRainbowSkin");
_itemValueGrayTrail = PlayerPrefs.GetInt("ItemValueGrayTrail");
_itemValueGreenTrail = PlayerPrefs.GetInt("ItemValueGreenTrail");
_itemValueGreenSkin = PlayerPrefs.GetInt("ItemValueGreenSkin");
_itemValueRainbowTrail = PlayerPrefs.GetInt("ItemValueRainbowTrail");
foreach (var item in shopItems)
{
#region RainbowSkin
if (item.itemName == itemName)
{
if (_itemValueRainbowSkin > 1)
{
PlayerPrefs.SetInt("ItemValueRainbowSkin", 1);
CheckButtons();
return;
}
}
#endregion
#region GreenSkinUnEquip
if (item.itemName == itemName)
{
if (_itemValueGreenSkin > 1)
{
PlayerPrefs.SetInt("ItemValueGreenSkin", 1);
CheckButtons();
return;
}
}
#endregion
#region GrayTrailUnEquip
if (item.itemName == itemName)
{
if (_itemValueGrayTrail > 1)
{
PlayerPrefs.SetInt("ItemValueGrayTrail", 1);
CheckButtons();
return;
}
}
#endregion
#region GreenTrailUnEquip
if (item.itemName == itemName)
{
if (_itemValueGreenTrail > 1)
{
PlayerPrefs.SetInt("ItemValueGreenTrail", 1);
CheckButtons();
return;
}
}
#endregion
#region RainbowTrailUnEquip
if (item.itemName == itemName)
{
if (_itemValueRainbowTrail > 0)
{
PlayerPrefs.SetInt("ItemValueRainbowTrail", 1);
CheckButtons();
return;
}
}
#endregion
}
}
public void Equip(string itemName)
{
_itemValueRainbowSkin = PlayerPrefs.GetInt("ItemValueRainbowSkin");
_itemValueGrayTrail = PlayerPrefs.GetInt("ItemValueGrayTrail");
_itemValueGreenTrail = PlayerPrefs.GetInt("ItemValueGreenTrail");
_itemValueGreenSkin = PlayerPrefs.GetInt("ItemValueGreenSkin");
_itemValueRainbowTrail = PlayerPrefs.GetInt("ItemValueRainbowTrail");
foreach (var item in shopItems)
{
#region RainbowSkinEquip
if (item.itemName == itemName)
{
if (_itemValueRainbowSkin > 0)
{
PlayerPrefs.SetInt("ItemValueRainbowSkin", 2);
if (_itemValueGreenSkin == 2)
{
PlayerPrefs.SetInt("ItemValueGreenSkin", 1);
}
CheckButtons();
return;
}
}
#endregion
#region RainbowTrailEquip
if (item.itemName == itemName)
{
if (_itemValueRainbowTrail > 0)
{
PlayerPrefs.SetInt("ItemValueRainbowTrail", 2);
if (_itemValueGreenTrail == 2)
{
PlayerPrefs.SetInt("ItemValueGreenTrail", 1);
}
if (_itemValueGrayTrail == 2)
{
PlayerPrefs.SetInt("ItemValueGrayTrail", 1);
}
CheckButtons();
return;
}
}
#endregion
#region GreenSkinEquip
if (item.itemName == itemName)
{
if (_itemValueGreenSkin > 0)
{
PlayerPrefs.SetInt("ItemValueGreenSkin", 2);
if (_itemValueRainbowSkin == 2)
{
PlayerPrefs.SetInt("ItemValueRainbowSkin", 1);
}
CheckButtons();
return;
}
}
#endregion
#region GrayTrailEquip
if (item.itemName == itemName)
{
if (_itemValueGrayTrail > 0)
{
PlayerPrefs.SetInt("ItemValueGrayTrail", 2);
if (_itemValueGreenTrail == 2)
{
PlayerPrefs.SetInt("ItemValueGreenTrail", 1);
}
if (_itemValueRainbowTrail == 2)
{
PlayerPrefs.SetInt("ItemValueRainbowTrail", 1);
}
CheckButtons();
return;
}
}
#endregion
#region GreenTrailEquip
if (item.itemName == itemName)
{
if (_itemValueGreenTrail > 0)
{
PlayerPrefs.SetInt("ItemValueGreenTrail", 2);
if (_itemValueGrayTrail == 2)
{
PlayerPrefs.SetInt("ItemValueGrayTrail", 1);
}
if (_itemValueRainbowTrail == 2)
{
PlayerPrefs.SetInt("ItemValueRainbowTrail", 1);
}
CheckButtons();
return;
}
}
#endregion
}
}
private void CheckButtons()
{
_itemValueRainbowSkin = PlayerPrefs.GetInt("ItemValueRainbowSkin");
_itemValueGrayTrail = PlayerPrefs.GetInt("ItemValueGrayTrail");
_itemValueGreenTrail = PlayerPrefs.GetInt("ItemValueGreenTrail");
_itemValueGreenSkin = PlayerPrefs.GetInt("ItemValueGreenSkin");
_itemValueRainbowTrail = PlayerPrefs.GetInt("ItemValueRainbowTrail");
_playerMoney = PlayerPrefs.GetFloat("money");
FindObjectOfType<ItemManager>().CheckForEquipedItems();
foreach (var item in shopItems)
{
if (item.itemName == "RainbowSkin")
{
switch (_itemValueRainbowSkin)
{
case 0:
if (!item.buyButton.activeSelf)
{
item.buyButton.SetActive(true);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "$" + item.cost;
break;
case 1:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (!item.equipButton.activeSelf)
{
item.equipButton.SetActive(true);
}
item.costText.text = "";
break;
case 2:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (!item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(true);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "";
break;
}
}
if (item.itemName == "GreenSkin")
{
switch (_itemValueGreenSkin)
{
case 0:
if (!item.buyButton.activeSelf)
{
item.buyButton.SetActive(true);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "$" + item.cost;
break;
case 1:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (!item.equipButton.activeSelf)
{
item.equipButton.SetActive(true);
}
item.costText.text = "";
break;
case 2:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (!item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(true);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "";
break;
}
}
if (item.itemName == "GrayTrail")
{
switch (_itemValueGrayTrail)
{
case 0:
if (!item.buyButton.activeSelf)
{
item.buyButton.SetActive(true);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "$" + item.cost;
break;
case 1:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (!item.equipButton.activeSelf)
{
item.equipButton.SetActive(true);
}
item.costText.text = "";
break;
case 2:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (!item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(true);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "";
break;
}
}
if (item.itemName == "GreenTrail")
{
switch (_itemValueGreenTrail)
{
case 0:
if (!item.buyButton.activeSelf)
{
item.buyButton.SetActive(true);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "$" + item.cost;
break;
case 1:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (!item.equipButton.activeSelf)
{
item.equipButton.SetActive(true);
}
item.costText.text = "";
break;
case 2:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (!item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(true);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "";
break;
}
}
if (item.itemName == "RainbowTrail")
{
switch (_itemValueRainbowTrail)
{
case 0:
if (!item.buyButton.activeSelf)
{
item.buyButton.SetActive(true);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "$" + item.cost;
break;
case 1:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(false);
}
if (!item.equipButton.activeSelf)
{
item.equipButton.SetActive(true);
}
item.costText.text = "";
break;
case 2:
if (item.buyButton.activeSelf)
{
item.buyButton.SetActive(false);
}
if (!item.unequipButton.activeSelf)
{
item.unequipButton.SetActive(true);
}
if (item.equipButton.activeSelf)
{
item.equipButton.SetActive(false);
}
item.costText.text = "";
break;
}
}
}
}
public void BuySkinExecuter(string skinName)
{
BuySkinManager(skinName);
}
public void BuyTrailExecuter(string trailName)
{
BuyTrailManager(trailName);
}
private void BuySkinManager(string itemName)
{
_playerMoney = PlayerPrefs.GetFloat("money");
foreach (var item in shopItems)
{
switch (itemName)
{
case "RainbowSkin":
if (_playerMoney >= item.cost)
{
var moneytosaveafterpurchase = _playerMoney - item.cost;
PlayerPrefs.SetFloat("money", moneytosaveafterpurchase);
PlayerPrefs.SetInt("ItemValueRainbowSkin", 1);
CheckButtons();
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Success);
}
}
}
if (_playerMoney < item.cost)
{
NativeUI.AlertPopup.Alert("Alert!", "Not Enough Money!");
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Failure);
}
}
notEnoughText.Invoke();
}
break;
case "GreenSkin":
if (_playerMoney >= item.cost)
{
var moneytosaveafterpurchase = _playerMoney - item.cost;
PlayerPrefs.SetFloat("money", moneytosaveafterpurchase);
PlayerPrefs.SetInt("ItemValueGreenSkin", 1);
CheckButtons();
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Success);
}
}
}
if (_playerMoney < item.cost)
{
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Failure);
}
}
notEnoughText.Invoke();
}
break;
}
MoneyManager.Instance.UpdateMoneyText(MoneyManager.Instance.moneyCountenabled);
}
}
private void BuyTrailManager(string itemName)
{
_playerMoney = PlayerPrefs.GetFloat("money");
foreach (var item in shopItems)
{
switch (itemName)
{
case "GreenTrail":
if (_playerMoney >= item.cost)
{
var moneytosaveafterpurchase = _playerMoney - item.cost;
PlayerPrefs.SetFloat("money", moneytosaveafterpurchase);
PlayerPrefs.SetInt("ItemValueGreenTrail", 1);
CheckButtons();
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Success);
}
}
}
if (_playerMoney < item.cost)
{
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Failure);
}
}
notEnoughText.Invoke();
}
break;
case "GrayTrail":
if (_playerMoney >= item.cost)
{
var moneytosaveafterpurchase = _playerMoney - item.cost;
PlayerPrefs.SetFloat("money", moneytosaveafterpurchase);
PlayerPrefs.SetInt("ItemValueGrayTrail", 1);
CheckButtons();
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Success);
}
}
}
if (_playerMoney < item.cost)
{
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Failure);
}
}
notEnoughText.Invoke();
}
break;
case "RainbowTrail":
if (_playerMoney >= item.cost)
{
var moneytosaveafterpurchase = _playerMoney - item.cost;
PlayerPrefs.SetFloat("money", moneytosaveafterpurchase);
PlayerPrefs.SetInt("ItemValueRainbowTrail", 1);
CheckButtons();
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Success);
}
}
}
if (_playerMoney < item.cost)
{
if (SettingsManager.IsVibrationsOn)
{
if (MMVibrationManager.HapticsSupported())
{
MMVibrationManager.Haptic(HapticTypes.Failure);
}
}
notEnoughText.Invoke();
}
break;
}
MoneyManager.Instance.UpdateMoneyText(MoneyManager.Instance.moneyCountenabled);
}
}
}