-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTimeManager.cs
More file actions
79 lines (70 loc) · 2.15 KB
/
Copy pathTimeManager.cs
File metadata and controls
79 lines (70 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class TimeManager : MonoBehaviour
{
[SerializeField] private EnemySpawnerScript enemySpawner;
[SerializeField] public float prepTime = 15;
[SerializeField] public float totalTimer;
[SerializeField] private float waveTime = 30;
[SerializeField] private TMP_Text PrepTimeText;
[SerializeField] private TMP_Text TotalTimeText;
private int currentWave = 1;
private int prevWave;
private bool gameStarted;
private bool gameEnded;
private bool running = true;
private GameEventsManagerScript GEManager;
private void Awake()
{
GEManager = GameObject.Find("GameEventsManager").GetComponent<GameEventsManagerScript>();
}
private void OnEnable()
{
GEManager.OnGameOver += GameOver;
}
private void OnDisable()
{
GEManager.OnGameOver -= GameOver;
}
void GameOver()
{
running = false;
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if(running)
totalTimer += Time.deltaTime;
currentWave = (int)((totalTimer + prepTime) / waveTime) - 1;
if(totalTimer > prepTime && !gameStarted)
{
StartCoroutine(SpawnRoutine());
gameStarted = true;
PrepTimeText.transform.parent.gameObject.SetActive(false);
}
else if(!gameStarted)
{
PrepTimeText.transform.parent.gameObject.SetActive(true);
PrepTimeText.text = (prepTime - totalTimer).ToString("F1");
}
if(!gameEnded && gameStarted)
{
TotalTimeText.text = (totalTimer - prepTime).ToString("F1");
TotalTimeText.gameObject.SetActive(true);
}
}
IEnumerator SpawnRoutine()
{
while(true && running)
{
enemySpawner.SpawnEnemyAtRandomPosition(Mathf.Clamp(1 * currentWave, 2, 7));
yield return new WaitForSeconds(waveTime);
}
}
}