LieutenantChampignon/Projet Unity/Lieutenant Champignon/Assets/Scripts/PlayerLogic.cs

98 lines
2.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine.InputSystem;
using TMPro;
using UnityEngine;
public class PlayerLogic : MonoBehaviour
{
[SerializeField]
private bool isALootableObjectNearby = false;
[SerializeField]
private bool lootNextTick = false;
[SerializeField]
private int coinCount = 0;
[SerializeField]
private int keyCount = 0;
[SerializeField]
private Vector3 respawnLocation;
[SerializeField]
private Vector3 initalSpawnLocation;
[SerializeField]
public GameObject GameOverMenu;
[SerializeField]
public GameObject WinMenu;
public void addCoins(int number){
coinCount += number;
TMP_Text textCoins = GameObject.Find("CoinsText").GetComponent<TMP_Text>();
textCoins.text = "Coins: "+coinCount+"/150";
if (coinCount == 150){
GameObject.Find("InvisibleWall").SetActive(false);
}
}
public void addKeys(int number){
keyCount += number;
TMP_Text textKeys = GameObject.Find("KeysText").GetComponent<TMP_Text>();
textKeys.text = "Keys: "+keyCount;
}
public void die(){
this.gameObject.SetActive(false);
GameOverMenu.SetActive(true);
}
public void win(){
this.gameObject.SetActive(false);
WinMenu.SetActive(true);
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "killOnContact") {}
else if (other.tag == "Coin") {
addCoins(1);
}
else if (other.tag == "Key"){
addKeys(1);
}
else if (other.tag == "Lootable") isALootableObjectNearby = true;
else if (other.tag == "WinCondition"){
win();
}
}
void OnTriggerStay(Collider other)
{
if (other.tag == "Lootable"){
if (isALootableObjectNearby && lootNextTick){
if (keyCount > 0){
Lootable lootableObject = other.GetComponent<Lootable>();
addCoins(lootableObject.loot());
addKeys(-1);
}
lootNextTick = false;
}
}
}
public void Inspect(){
lootNextTick = true;
}
void OnTriggerExit(Collider other)
{
if (other.tag == "Lootable") isALootableObjectNearby = false;
}
}