Modification start date
[BattleCats.git] / Assets / Scripts / EnemiesScript / Wave.cs
blob08ad8571bece2d4ee4d7da406e79a00473b46c09
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine.UI;
4 using UnityEngine;
6 [System.Serializable]
7 public class YarnPosition
9 public static float yarnPosX = 0.0f;
10 public static float yarnPosY = 0.0f;
11 public float DisplayYarnPosX = 0.0f;
12 public float DisplayYarnPosY = 0.0f;
15 public class Boundaries
17 public static float UpperBoundary;
18 public static float LeftBoundary;
19 public static float RightBoundary;
20 public static float LowerBoundary;
23 public class Wave : MonoBehaviour
25 //for visualisation
26 [SerializeField]
27 public YarnPosition localYarnPosition;
29 GameObject camera;
31 [SerializeField]
32 GameObject EnemyTypeA;
34 [SerializeField]
35 GameObject EnemyTypeB;
37 [SerializeField]
38 GameObject EnemyTypeC;
40 [SerializeField]
41 float UpperBoundary;
43 [SerializeField]
44 float LeftBoundary;
46 [SerializeField]
47 float RightBoundary;
49 [SerializeField]
50 float LowerBoundary;
52 [SerializeField]
53 int NumberOfTripletsPerWave;
55 private int currentWaveNumber;
57 // Idle timer variables
58 [SerializeField]
59 float mSpawnTime = 5.0f;
61 [SerializeField]
62 float mSpawnDelay = 15.0f;
64 private float mTimer = 0.0f;
65 private int counter = 0;
67 private bool waveStarted = false;
69 // Use this for initialization
70 void Start()
72 transform.position = new Vector2(camera.transform.position.x, camera.transform.position.y + Boundaries.UpperBoundary);
73 currentWaveNumber = 0;
76 // Update is called once per frame
77 void Update()
79 UpdateYarnGlobalPosition();
80 UpdateGlobalBoundaries();
81 transform.position = new Vector2(YarnPosition.yarnPosX, YarnPosition.yarnPosY + Boundaries.UpperBoundary);
83 mTimer += Time.deltaTime;
85 if (mTimer > mSpawnTime && currentWaveNumber != NumberOfTripletsPerWave)
87 waveStarted = true;
88 mTimer = 0;
89 SpawnType(1);
90 SpawnType(2);
91 SpawnType(3);
93 currentWaveNumber++;
97 private void UpdateYarnGlobalPosition()
99 YarnPosition.yarnPosX = camera.transform.position.x;
100 YarnPosition.yarnPosY = camera.transform.position.y;
101 localYarnPosition.DisplayYarnPosX = camera.transform.position.x;
102 localYarnPosition.DisplayYarnPosY = camera.transform.position.y;
105 private void UpdateGlobalBoundaries()
107 Boundaries.LeftBoundary = LeftBoundary + YarnPosition.yarnPosX;
108 Boundaries.RightBoundary = RightBoundary + YarnPosition.yarnPosX;
109 Boundaries.UpperBoundary = UpperBoundary + YarnPosition.yarnPosY;
110 Boundaries.LowerBoundary = LowerBoundary + YarnPosition.yarnPosY;
113 private void SpawnType(int typeNumber)
115 Vector2 spawnPosition = new Vector2(0,0);
117 if (typeNumber == 1)
119 spawnPosition = GenerateSpawnPositionAB();
120 var typeA = Instantiate(EnemyTypeA, spawnPosition, Quaternion.identity);
122 else if (typeNumber == 2)
124 spawnPosition = GenerateSpawnPositionAB();
125 var typeB = Instantiate(EnemyTypeB, spawnPosition, Quaternion.identity);
127 else if (typeNumber == 3)
129 spawnPosition = GenerateSpawnPositionC();
130 var typeC = Instantiate(EnemyTypeC, spawnPosition, Quaternion.identity);
134 private Vector2 GenerateSpawnPositionAB()
136 var positionSection = UnityEngine.Random.Range(0, 3);
137 float xPosition = 0;
138 float yPosition = 0;
140 if (positionSection == 0)
142 xPosition = Boundaries.LeftBoundary - 1.0f;
143 yPosition = UnityEngine.Random.Range(Boundaries.LowerBoundary + 6.0f, Boundaries.UpperBoundary - 1.0f);
146 else if (positionSection == 1)
148 xPosition = UnityEngine.Random.Range(Boundaries.LeftBoundary + 1.0f, Boundaries.RightBoundary - 1.0f);
149 yPosition = transform.position.y;
151 else if(positionSection == 2)
153 xPosition = Boundaries.RightBoundary + 1.0f;
154 yPosition = UnityEngine.Random.Range(Boundaries.LowerBoundary + 6.0f, Boundaries.UpperBoundary - 1.0f);
157 return new Vector2(xPosition, yPosition);
160 private Vector2 GenerateSpawnPositionC()
162 var positionSection = UnityEngine.Random.Range(0, 2);
163 float xPosition = 0;
164 float yPosition = 0;
166 if (positionSection == 0)
168 xPosition = Boundaries.LeftBoundary - 1.0f;
170 else if (positionSection == 1)
172 xPosition = Boundaries.RightBoundary + 1.0f;
175 yPosition = Boundaries.LowerBoundary + 6.0f;
177 return new Vector2(xPosition, yPosition);
180 public GameObject GetCamera()
182 return this.camera;
185 public void SetCamera(GameObject cam)
187 camera = cam;