288 lines
8.3 KiB
C#
288 lines
8.3 KiB
C#
using System.Xml.Serialization;
|
|
using TMPro;
|
|
using Unity.VisualScripting;
|
|
using Unity.VisualScripting.Antlr3.Runtime;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering.VirtualTexturing;
|
|
using UnityEngine.U2D;
|
|
|
|
public class ShopScript : MonoBehaviour
|
|
{
|
|
[Header("Panels")]
|
|
|
|
[SerializeField] GameObject shopPanel;
|
|
[SerializeField] GameObject errorPanel;
|
|
[SerializeField] GameObject backgroundPanel;
|
|
|
|
[SerializeField] public bool paymentSystemActive = false;
|
|
|
|
//TMP_Text textfeld;
|
|
[SerializeField] TMP_Text textfeld;
|
|
|
|
[Header("Scripte")]
|
|
|
|
[SerializeField] InventoryScript inventory;
|
|
[SerializeField] ChangeHealth healthScript;
|
|
[SerializeField] HandleEnergy battery;
|
|
[SerializeField] GameObject audioScript;
|
|
|
|
AudioManager audio;
|
|
|
|
[Header("BuyValues")]
|
|
|
|
private float moneten = 10f; //als vorerstiger Ersatz für tatsächliches Geld
|
|
|
|
private float gemsCost = 1.00f; //1€
|
|
private float manyGemsCost = 2.00f; //2€
|
|
private int updateCost = 100;
|
|
|
|
private float duration = 4f;
|
|
|
|
#region DevMode
|
|
[Header("DevMode")]
|
|
|
|
[SerializeField] GameObject devPanel;
|
|
[SerializeField] GameObject devButton;
|
|
|
|
//TMP_Text textfeldA; //als textfeld
|
|
//TMP_Text textfeldB;
|
|
//TMP_Text textfeldC;
|
|
|
|
[SerializeField] TMP_Text textfeldA; //als text
|
|
[SerializeField] TMP_Text textfeldB;
|
|
[SerializeField] TMP_Text textfeldC;
|
|
[SerializeField] TMP_Text errorText;
|
|
|
|
[Header("ShopTextfieldCost")]
|
|
|
|
[SerializeField] TMP_Text healthCost;
|
|
[SerializeField] TMP_Text energyCost;
|
|
[SerializeField] TMP_Text gemCost;
|
|
[SerializeField] TMP_Text moreGemsCost;
|
|
|
|
#endregion
|
|
private void Awake()
|
|
{
|
|
inventory = backgroundPanel.GetComponent<InventoryScript>();
|
|
healthScript = backgroundPanel.GetComponent<ChangeHealth>();
|
|
battery = backgroundPanel.GetComponent<HandleEnergy>();
|
|
audio = audioScript.GetComponent<AudioManager>();
|
|
|
|
}
|
|
void Start()
|
|
{
|
|
|
|
shopPanel.SetActive(false);
|
|
errorPanel.SetActive(false);
|
|
devPanel.SetActive(false);
|
|
|
|
healthCost.text = updateCost.ToString();
|
|
energyCost.text = updateCost.ToString();
|
|
gemCost.text = gemsCost.ToString() + " €";
|
|
moreGemsCost.text = manyGemsCost.ToString() + " €";
|
|
|
|
//textfeld = this.text;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
|
|
textfeld.text = inventory.Gems.ToString();
|
|
|
|
textfeldA.text = "Energy: " + inventory.StandardEnergy.ToString();
|
|
textfeldB.text = "Health: " + inventory.StandardHealth.ToString();
|
|
textfeldC.text = "Moneten: " + moneten.ToString();
|
|
|
|
}
|
|
|
|
public void OpenShop()
|
|
{
|
|
shopPanel.SetActive(true);
|
|
LeanTween.scale(shopPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
Vibrator.Vibrate();
|
|
|
|
audio.PlaySFX(audio.button);
|
|
}
|
|
|
|
public void CloseShop()
|
|
{
|
|
LeanTween.scale(shopPanel, transform.localScale * 0f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
shopPanel.SetActive(false);
|
|
audio.PlaySFX(audio.button);
|
|
}
|
|
|
|
public void ClosePanel()
|
|
{
|
|
LeanTween.scale(errorPanel, transform.localScale * 0f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
errorPanel.SetActive(false);
|
|
audio.PlaySFX(audio.button);
|
|
}
|
|
|
|
public void AddLife()
|
|
{
|
|
|
|
if (inventory.Gems - updateCost < 0)
|
|
{
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "Not enough gems!";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
}
|
|
|
|
else
|
|
{
|
|
inventory.StandardHealth++;
|
|
|
|
inventory.Gems -= updateCost;
|
|
|
|
audio.PlaySFX(audio.buy);
|
|
}
|
|
}
|
|
|
|
public void AddEnergy()
|
|
{
|
|
if (inventory.Gems - updateCost <0)
|
|
{
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "Not enough gems!";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
}
|
|
|
|
else
|
|
{
|
|
inventory.StandardEnergy++;
|
|
|
|
inventory.Gems -= updateCost;
|
|
|
|
audio.PlaySFX(audio.buy);
|
|
}
|
|
}
|
|
|
|
public void BuyGems()
|
|
{
|
|
if (paymentSystemActive)
|
|
{
|
|
|
|
if (moneten - gemsCost < 0)
|
|
{
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "Your card is empty!";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
}
|
|
|
|
else
|
|
{
|
|
moneten -= gemsCost;
|
|
Debug.Log("Ich mag Moeneten");
|
|
inventory.Gems += 100;
|
|
audio.PlaySFX(audio.buy);
|
|
}
|
|
}
|
|
|
|
else
|
|
{
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "Payment System inactive!";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
}
|
|
}
|
|
|
|
public void BuyMore()
|
|
{
|
|
|
|
if (paymentSystemActive)
|
|
{
|
|
if (moneten - manyGemsCost < 0)
|
|
{
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "Your card is empty!";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
}
|
|
|
|
else
|
|
{
|
|
moneten -= manyGemsCost;
|
|
Debug.Log("Ich mag Moeneten");
|
|
|
|
inventory.Gems += 200;
|
|
|
|
audio.PlaySFX(audio.buy);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "Payment System inactive!";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
}
|
|
}
|
|
|
|
public void ShowDevMode()
|
|
{
|
|
devPanel.SetActive(true);
|
|
LeanTween.scale(devPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
|
|
//textfeldA = textA;
|
|
//textfeldB = textB;
|
|
//textfeldC = textC;
|
|
|
|
//textfeldA.text = inventory.Energy.ToString();
|
|
//textfeldB.text = inventory.Health.ToString();
|
|
//textfeldC.text = moneten.ToString();
|
|
|
|
audio.PlaySFX(audio.button);
|
|
}
|
|
|
|
public void ResetValues()
|
|
{
|
|
inventory.Gems = 100;
|
|
inventory.StandardEnergy = 10;
|
|
inventory.StandardHealth = 3;
|
|
moneten = 10f;
|
|
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "Values have been reset.";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
|
|
audio.PlaySFX(audio.button);
|
|
}
|
|
|
|
public void ChangeActivation()
|
|
{
|
|
SpriteRenderer spriteRenderer = GetComponent<SpriteRenderer>();
|
|
|
|
if (!paymentSystemActive)
|
|
{
|
|
paymentSystemActive = true;
|
|
spriteRenderer.sprite = Resources.Load<Sprite>("T_12_ok.png");
|
|
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "PaymentSystem active";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
|
|
audio.PlaySFX(audio.button);
|
|
}
|
|
|
|
else
|
|
{
|
|
paymentSystemActive = false;
|
|
|
|
spriteRenderer.sprite = Resources.Load<Sprite>("T_11_no.png");
|
|
|
|
errorPanel.SetActive(true);
|
|
errorText.text = "PaymentSystem inactive!";
|
|
LeanTween.scale(errorPanel, transform.localScale * 0.5f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
|
|
}
|
|
}
|
|
|
|
public void CloseDevPanel()
|
|
{
|
|
LeanTween.scale(devPanel, transform.localScale * 0f, duration * Time.deltaTime).setDelay(.1f).setEase(LeanTweenType.easeOutBounce);
|
|
devPanel.SetActive(false);
|
|
|
|
ClosePanel();
|
|
|
|
audio.PlaySFX(audio.button);
|
|
}
|
|
}
|