done
This commit is contained in:
129
Assets/Scripts/GameManager.cs
Normal file
129
Assets/Scripts/GameManager.cs
Normal file
@@ -0,0 +1,129 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Assertions;
|
||||
|
||||
public class GameManager : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Player _player;
|
||||
|
||||
private float _lastTimeof2Seconds;
|
||||
[SerializeField] private TMPro.TextMeshProUGUI _timer;
|
||||
|
||||
[SerializeField] private TMPro.TextMeshProUGUI _gameOver;
|
||||
|
||||
[SerializeField] private GameObject _potionPrefab;
|
||||
private Vector2 _potionGroundSpawnRange = new Vector2(-48f, 48f);
|
||||
private int _healthDecrease = -2;
|
||||
|
||||
[SerializeField] private GameObject _keyPrefab;
|
||||
private HiddenObject _keyInstanceScript;
|
||||
private GameObject _keyInstance;
|
||||
private bool isKeyCollected = false;
|
||||
|
||||
[SerializeField] private GameObject _chestClosedPrefab;
|
||||
[SerializeField] private GameObject _chestOpenPrefab;
|
||||
private GameObject _chestInstance;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
Assert.IsNotNull(_player);
|
||||
_lastTimeof2Seconds = Time.time;
|
||||
_gameOver.enabled = false;
|
||||
|
||||
SpawnPotion();
|
||||
|
||||
Assert.IsNotNull(_keyPrefab);
|
||||
_keyInstance = Instantiate(_keyPrefab,
|
||||
new Vector3(
|
||||
Random.Range(_potionGroundSpawnRange.x, _potionGroundSpawnRange.y),
|
||||
0.5f,
|
||||
Random.Range(_potionGroundSpawnRange.x, _potionGroundSpawnRange.y)
|
||||
),
|
||||
Quaternion.identity);
|
||||
|
||||
_keyInstanceScript = _keyInstance.transform.GetChild(0).gameObject.GetComponent<HiddenObject>();
|
||||
Assert.IsNotNull(_keyInstance);
|
||||
|
||||
Assert.IsNotNull(_chestClosedPrefab);
|
||||
_chestInstance = Instantiate(_chestClosedPrefab,
|
||||
new Vector3(
|
||||
Random.Range(_potionGroundSpawnRange.x, _potionGroundSpawnRange.y),
|
||||
0.5f,
|
||||
Random.Range(_potionGroundSpawnRange.x, _potionGroundSpawnRange.y)
|
||||
),
|
||||
Quaternion.LookRotation(Vector3.up));
|
||||
}
|
||||
|
||||
public void CollectKey()
|
||||
{
|
||||
isKeyCollected = true;
|
||||
Debug.Log("Collected Key");
|
||||
}
|
||||
|
||||
public void OpenChest()
|
||||
{
|
||||
if (!isKeyCollected)
|
||||
{
|
||||
Debug.LogWarning("Key not collected");
|
||||
return;
|
||||
}
|
||||
|
||||
Instantiate(
|
||||
_chestOpenPrefab,
|
||||
new Vector3(
|
||||
_chestInstance.transform.position.x,
|
||||
0.5f,
|
||||
_chestInstance.transform.position.z
|
||||
),
|
||||
Quaternion.LookRotation(Vector3.up)
|
||||
);
|
||||
GameOver(true);
|
||||
}
|
||||
public void SpawnPotion()
|
||||
{
|
||||
Assert.IsNotNull(_potionPrefab);
|
||||
Instantiate(_potionPrefab,
|
||||
new Vector3(
|
||||
Random.Range(_potionGroundSpawnRange.x, _potionGroundSpawnRange.y),
|
||||
0.5f,
|
||||
Random.Range(_potionGroundSpawnRange.x, _potionGroundSpawnRange.y)),
|
||||
Quaternion.identity);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
_timer.SetText(((int)(Time.time)).ToString());
|
||||
if (Time.time - _lastTimeof2Seconds > 2)
|
||||
{
|
||||
Debug.Log("Decreasing health");
|
||||
_lastTimeof2Seconds = Time.time;
|
||||
_player.AddHealth(_healthDecrease);
|
||||
}
|
||||
|
||||
if (_player.GetHealth() <= 0)
|
||||
{
|
||||
GameOver();
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.R))
|
||||
{
|
||||
_keyInstanceScript.ShowObjectForSeconds(3);
|
||||
}
|
||||
}
|
||||
|
||||
private void GameOver(bool isWon = false)
|
||||
{
|
||||
_player.SetIsMovementEnabled(false);
|
||||
_healthDecrease = 0;
|
||||
if (isWon)
|
||||
{
|
||||
_gameOver.SetText("You won!");
|
||||
}
|
||||
else
|
||||
{
|
||||
_gameOver.SetText("You lost!");
|
||||
}
|
||||
_gameOver.enabled = true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user