You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.6 KiB
96 lines
2.6 KiB
using System; |
|
|
|
using TMPro; |
|
using UnityEngine; |
|
using UnityEngine.UI; |
|
|
|
public class Store : MonoBehaviour |
|
{ |
|
[SerializeField] |
|
private GameManager gameManager; |
|
|
|
[Header("Store Settings")] |
|
[SerializeField] |
|
[Tooltip("Base price of store")] |
|
private float BaseStorePrice = 1.00f; |
|
[SerializeField] |
|
[Tooltip("Amount that the Price multiplies for each store purchase")] |
|
private float PriceMultiplier = 1.10f; |
|
[SerializeField] |
|
[Tooltip("Profit made by store per reset")] |
|
private float StoreProfit = 0.50f; |
|
[SerializeField] |
|
[Tooltip("Time in seconds until store makes a profit")] |
|
private float StoreReset = 4.0f; |
|
[SerializeField] |
|
[Tooltip("Turns on/off the store manager")] |
|
private bool ManagerOpen = false; |
|
|
|
[Header("Store UI")] |
|
[SerializeField] |
|
private TextMeshProUGUI StoreCountText; |
|
[SerializeField] |
|
private Button BuyButton; |
|
[SerializeField] |
|
private Slider StoreSlider; |
|
|
|
private int StoreCount = 0; |
|
private float StoreTime = 0.0f; |
|
private float NextStorePrice = 0.0f; |
|
private TextMeshProUGUI BuyButtonText; |
|
bool StoreOpen = false; |
|
|
|
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created |
|
void Start() |
|
{ |
|
|
|
NextStorePrice = BaseStorePrice; |
|
BuyButtonText = BuyButton.GetComponentInChildren<TextMeshProUGUI>(); |
|
BuyButtonText.text = String.Format("Buy: {0:C2}", NextStorePrice); |
|
StoreCountText.text = StoreCount.ToString(); |
|
} |
|
|
|
// Update is called once per frame |
|
void Update() |
|
{ |
|
if(StoreOpen) |
|
{ |
|
StoreTime += Time.deltaTime; |
|
if (StoreTime >= StoreReset) |
|
{ |
|
if (!ManagerOpen) |
|
{ |
|
StoreOpen = false; |
|
} |
|
StoreTime = 0.0f; |
|
gameManager.AddToBalance(StoreProfit * StoreCount); |
|
} |
|
|
|
} |
|
StoreSlider.value = StoreTime / StoreReset; |
|
if(gameManager.CanAfford(NextStorePrice)) |
|
{ |
|
BuyButton.interactable = true; |
|
} |
|
} |
|
|
|
public void Buy() |
|
{ |
|
StoreCount++; |
|
StoreCountText.text = StoreCount.ToString(); |
|
NextStorePrice = BaseStorePrice * Mathf.Pow(PriceMultiplier, StoreCount); |
|
BuyButtonText.text = String.Format("Buy: {0:C2}", NextStorePrice); |
|
gameManager.SubtractFromBalance(NextStorePrice); |
|
if (!gameManager.CanAfford(NextStorePrice)) |
|
{ |
|
BuyButton.interactable = false; |
|
} |
|
} |
|
|
|
public void OpenStore() |
|
{ |
|
StoreOpen = true; |
|
} |
|
|
|
}
|
|
|