aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Stendahl <jakob.stendahl@outlook.com>2017-10-06 16:04:38 +0200
committerJakob Stendahl <jakob.stendahl@outlook.com>2017-10-06 16:04:38 +0200
commite13fd4cf1fc0ad9eff857295fd5abc15ab01462c (patch)
tree91786e1557ef801a64e059857dc0ad71c1d281df
parentc5a786326fab8850342005a1eb4da9653c4642c8 (diff)
downloadTD-e13fd4cf1fc0ad9eff857295fd5abc15ab01462c.tar.gz
TD-e13fd4cf1fc0ad9eff857295fd5abc15ab01462c.zip
Startet på tårn, fiksa dev-mode, laga stats UI
-rw-r--r--td/Assets/Materials/placementIndicatorDanger.matbin0 -> 5084 bytes
-rw-r--r--td/Assets/Materials/placementIndicatorDanger.mat.meta9
-rw-r--r--td/Assets/Materials/placementIndicatorSuccess.matbin0 -> 5088 bytes
-rw-r--r--td/Assets/Materials/placementIndicatorSuccess.mat.meta9
-rw-r--r--td/Assets/Prefabs/Enemies/Enemy.prefabbin7824 -> 7824 bytes
-rw-r--r--td/Assets/Prefabs/Towers.meta9
-rw-r--r--td/Assets/Prefabs/Towers/Guy One.prefabbin0 -> 11536 bytes
-rw-r--r--td/Assets/Prefabs/Towers/Guy One.prefab.meta (renamed from td/Assets/Prefabs/UI/GUI.prefab.meta)4
-rw-r--r--td/Assets/Prefabs/UI/GUI.prefabbin37856 -> 0 bytes
-rw-r--r--td/Assets/Prefabs/level design.meta9
-rw-r--r--td/Assets/Prefabs/level design/Grass-dirt.prefab (renamed from td/Assets/Prefabs/Grass-dirt.prefab)bin6828 -> 7672 bytes
-rw-r--r--td/Assets/Prefabs/level design/Grass-dirt.prefab.meta (renamed from td/Assets/Prefabs/Grass-dirt.prefab.meta)0
-rw-r--r--td/Assets/Prefabs/level design/Path straigth.prefab (renamed from td/Assets/Prefabs/Path straigth.prefab)bin7900 -> 8656 bytes
-rw-r--r--td/Assets/Prefabs/level design/Path straigth.prefab.meta (renamed from td/Assets/Prefabs/Path straigth.prefab.meta)0
-rw-r--r--td/Assets/Prefabs/level design/Path turn.prefab (renamed from td/Assets/Prefabs/Path turn.prefab)bin8972 -> 8972 bytes
-rw-r--r--td/Assets/Prefabs/level design/Path turn.prefab.meta (renamed from td/Assets/Prefabs/Path turn.prefab.meta)0
-rw-r--r--td/Assets/Prefabs/level design/grassPart.prefab (renamed from td/Assets/Prefabs/grassPart.prefab)bin6004 -> 6004 bytes
-rw-r--r--td/Assets/Prefabs/level design/grassPart.prefab.meta (renamed from td/Assets/Prefabs/grassPart.prefab.meta)0
-rw-r--r--td/Assets/Prefabs/projectiles.meta9
-rw-r--r--td/Assets/Scenes/Level 1.unitybin83072 -> 111964 bytes
-rw-r--r--td/Assets/Scripts/developerMode.cs36
-rw-r--r--td/Assets/Scripts/gameStats.cs43
-rw-r--r--td/Assets/Scripts/gameStats.cs.meta (renamed from td/Assets/Scripts/touchScript.cs.meta)4
-rw-r--r--td/Assets/Scripts/player.cs48
-rw-r--r--td/Assets/Scripts/player.cs.meta12
-rw-r--r--td/Assets/Scripts/touchScript.cs37
-rw-r--r--td/Assets/Scripts/tower.cs137
-rw-r--r--td/Assets/Scripts/tower.cs.meta12
-rw-r--r--td/Assets/Scripts/waveSpawner.cs76
-rw-r--r--td/Assets/Scripts/waveSpawner.cs.meta12
-rw-r--r--td/ProjectSettings/ProjectSettings.assetbin52178 -> 52238 bytes
-rw-r--r--td/ProjectSettings/TagManager.assetbin4308 -> 4320 bytes
32 files changed, 421 insertions, 45 deletions
diff --git a/td/Assets/Materials/placementIndicatorDanger.mat b/td/Assets/Materials/placementIndicatorDanger.mat
new file mode 100644
index 0000000..37e9e47
--- /dev/null
+++ b/td/Assets/Materials/placementIndicatorDanger.mat
Binary files differ
diff --git a/td/Assets/Materials/placementIndicatorDanger.mat.meta b/td/Assets/Materials/placementIndicatorDanger.mat.meta
new file mode 100644
index 0000000..ea86123
--- /dev/null
+++ b/td/Assets/Materials/placementIndicatorDanger.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: fdaa960eb417543e29a712fa18d4a65f
+timeCreated: 1507034809
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Materials/placementIndicatorSuccess.mat b/td/Assets/Materials/placementIndicatorSuccess.mat
new file mode 100644
index 0000000..36c1413
--- /dev/null
+++ b/td/Assets/Materials/placementIndicatorSuccess.mat
Binary files differ
diff --git a/td/Assets/Materials/placementIndicatorSuccess.mat.meta b/td/Assets/Materials/placementIndicatorSuccess.mat.meta
new file mode 100644
index 0000000..6e21620
--- /dev/null
+++ b/td/Assets/Materials/placementIndicatorSuccess.mat.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: e03c0257685414ec9a62b58f6eb7dbde
+timeCreated: 1507039389
+licenseType: Free
+NativeFormatImporter:
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Prefabs/Enemies/Enemy.prefab b/td/Assets/Prefabs/Enemies/Enemy.prefab
index 5d65c2c..fc3e820 100644
--- a/td/Assets/Prefabs/Enemies/Enemy.prefab
+++ b/td/Assets/Prefabs/Enemies/Enemy.prefab
Binary files differ
diff --git a/td/Assets/Prefabs/Towers.meta b/td/Assets/Prefabs/Towers.meta
new file mode 100644
index 0000000..84da145
--- /dev/null
+++ b/td/Assets/Prefabs/Towers.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: bcbc671350f2542efb1691d76fa90f9e
+folderAsset: yes
+timeCreated: 1507213929
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Prefabs/Towers/Guy One.prefab b/td/Assets/Prefabs/Towers/Guy One.prefab
new file mode 100644
index 0000000..de1c753
--- /dev/null
+++ b/td/Assets/Prefabs/Towers/Guy One.prefab
Binary files differ
diff --git a/td/Assets/Prefabs/UI/GUI.prefab.meta b/td/Assets/Prefabs/Towers/Guy One.prefab.meta
index 856ac47..2747a06 100644
--- a/td/Assets/Prefabs/UI/GUI.prefab.meta
+++ b/td/Assets/Prefabs/Towers/Guy One.prefab.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
-guid: fd69470eb7f824e3bbf2f6bac2d09ec7
-timeCreated: 1506804183
+guid: b3217bd5a74a9409e85e183b0e707047
+timeCreated: 1507213924
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 100100000
diff --git a/td/Assets/Prefabs/UI/GUI.prefab b/td/Assets/Prefabs/UI/GUI.prefab
deleted file mode 100644
index b7a47fa..0000000
--- a/td/Assets/Prefabs/UI/GUI.prefab
+++ /dev/null
Binary files differ
diff --git a/td/Assets/Prefabs/level design.meta b/td/Assets/Prefabs/level design.meta
new file mode 100644
index 0000000..5fa139f
--- /dev/null
+++ b/td/Assets/Prefabs/level design.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: f4efb8722711a4322b5c809507092aa6
+folderAsset: yes
+timeCreated: 1507240816
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Prefabs/Grass-dirt.prefab b/td/Assets/Prefabs/level design/Grass-dirt.prefab
index d943f20..dd9cf57 100644
--- a/td/Assets/Prefabs/Grass-dirt.prefab
+++ b/td/Assets/Prefabs/level design/Grass-dirt.prefab
Binary files differ
diff --git a/td/Assets/Prefabs/Grass-dirt.prefab.meta b/td/Assets/Prefabs/level design/Grass-dirt.prefab.meta
index 0c2256d..0c2256d 100644
--- a/td/Assets/Prefabs/Grass-dirt.prefab.meta
+++ b/td/Assets/Prefabs/level design/Grass-dirt.prefab.meta
diff --git a/td/Assets/Prefabs/Path straigth.prefab b/td/Assets/Prefabs/level design/Path straigth.prefab
index 75c688d..78ad75f 100644
--- a/td/Assets/Prefabs/Path straigth.prefab
+++ b/td/Assets/Prefabs/level design/Path straigth.prefab
Binary files differ
diff --git a/td/Assets/Prefabs/Path straigth.prefab.meta b/td/Assets/Prefabs/level design/Path straigth.prefab.meta
index 875d25e..875d25e 100644
--- a/td/Assets/Prefabs/Path straigth.prefab.meta
+++ b/td/Assets/Prefabs/level design/Path straigth.prefab.meta
diff --git a/td/Assets/Prefabs/Path turn.prefab b/td/Assets/Prefabs/level design/Path turn.prefab
index 28d95c1..28d95c1 100644
--- a/td/Assets/Prefabs/Path turn.prefab
+++ b/td/Assets/Prefabs/level design/Path turn.prefab
Binary files differ
diff --git a/td/Assets/Prefabs/Path turn.prefab.meta b/td/Assets/Prefabs/level design/Path turn.prefab.meta
index ea595d4..ea595d4 100644
--- a/td/Assets/Prefabs/Path turn.prefab.meta
+++ b/td/Assets/Prefabs/level design/Path turn.prefab.meta
diff --git a/td/Assets/Prefabs/grassPart.prefab b/td/Assets/Prefabs/level design/grassPart.prefab
index 442bbc5..442bbc5 100644
--- a/td/Assets/Prefabs/grassPart.prefab
+++ b/td/Assets/Prefabs/level design/grassPart.prefab
Binary files differ
diff --git a/td/Assets/Prefabs/grassPart.prefab.meta b/td/Assets/Prefabs/level design/grassPart.prefab.meta
index 0c263b8..0c263b8 100644
--- a/td/Assets/Prefabs/grassPart.prefab.meta
+++ b/td/Assets/Prefabs/level design/grassPart.prefab.meta
diff --git a/td/Assets/Prefabs/projectiles.meta b/td/Assets/Prefabs/projectiles.meta
new file mode 100644
index 0000000..b66e7d3
--- /dev/null
+++ b/td/Assets/Prefabs/projectiles.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 1fd8e4afa918142cf86708ca153cfa3c
+folderAsset: yes
+timeCreated: 1507240769
+licenseType: Free
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Scenes/Level 1.unity b/td/Assets/Scenes/Level 1.unity
index cf659ae..fbf4717 100644
--- a/td/Assets/Scenes/Level 1.unity
+++ b/td/Assets/Scenes/Level 1.unity
Binary files differ
diff --git a/td/Assets/Scripts/developerMode.cs b/td/Assets/Scripts/developerMode.cs
index b0d7704..4f241cf 100644
--- a/td/Assets/Scripts/developerMode.cs
+++ b/td/Assets/Scripts/developerMode.cs
@@ -7,16 +7,35 @@ public class developerMode : MonoBehaviour {
public string output = "";
public string stack = "";
+ public bool cheatsAllowed;
- bool developerModeActive;
GameObject pnlCanvas;
+ GameObject pnlCheats;
+ Button btnToggleCheats;
Text lblConsoleLog;
+ bool developerModeActive;
+ bool cheatMenuOpen;
+
void Start () {
- pnlCanvas = transform.Find ("Canvas").gameObject;
+ /* Panels */
+ pnlCanvas = this.gameObject.transform.GetChild (0).gameObject;
+ pnlCheats = pnlCanvas.transform.Find ("cheatMenu").gameObject;
+ /* Buttons */
+ /* Button handlers */
+ /* Lablels */
lblConsoleLog = pnlCanvas.transform.Find ("consoleLog").gameObject.GetComponent <Text>();
-
+ /* Do setup */
lblConsoleLog.text = "";
+
+ if (cheatsAllowed) {
+ btnToggleCheats = pnlCanvas.transform.Find ("toggleCheats").gameObject.GetComponent <Button> ();
+ if (btnToggleCheats != null) { btnToggleCheats.onClick.AddListener (btnToggleCheatsHandler); }
+ cheatMenuOpen = false;
+ } else {
+ pnlCanvas.transform.Find ("toggleCheats").gameObject.SetActive (false);
+ }
+ pnlCheats.SetActive (false);
}
void Update () {
@@ -32,8 +51,16 @@ public class developerMode : MonoBehaviour {
this.gameObject.transform.GetChild (0).gameObject.SetActive (false);
}
}
-
+ void btnToggleCheatsHandler() {
+ /* Handler for btnToggleCheats */
+ if (cheatsAllowed) {
+ cheatMenuOpen = !cheatMenuOpen;
+ pnlCheats.SetActive (cheatMenuOpen);
+ }
+ }
+
+ #region GetDebugLog
void OnEnable() {
Application.logMessageReceived += HandleLog;
}
@@ -44,5 +71,6 @@ public class developerMode : MonoBehaviour {
string backLog = lblConsoleLog.text;
lblConsoleLog.text = logString + "\n" + backLog;
}
+ #endregion
}
diff --git a/td/Assets/Scripts/gameStats.cs b/td/Assets/Scripts/gameStats.cs
new file mode 100644
index 0000000..af13f99
--- /dev/null
+++ b/td/Assets/Scripts/gameStats.cs
@@ -0,0 +1,43 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine.UI;
+using UnityEngine;
+
+public class gameStats : MonoBehaviour {
+
+ public player Player;
+ GameObject canvas;
+ Text txtMoney;
+ Text txtScore;
+ int displayedScore;
+ int displayedMoney;
+
+ void Start() {
+ canvas = transform.GetChild (0).gameObject;
+ txtMoney = canvas.transform.Find ("playerMoney").gameObject.GetComponent <Text>();
+ txtScore = canvas.transform.Find ("playerScore").gameObject.GetComponent <Text>();
+ }
+
+ void Update () {
+
+ if (Player.money () != displayedMoney) {
+ displayedMoney = Player.money ();
+ updateMoney (displayedMoney);
+ }
+
+ if (Player.score () != displayedScore) {
+ displayedScore = Player.score ();
+ updateScore (displayedScore);
+ }
+
+ }
+
+ void updateScore(int newScore) {
+ txtScore.text = ("Score: " + newScore.ToString ());
+ }
+
+ void updateMoney(int newMoney) {
+ txtMoney.text = ("Money: " + newMoney.ToString () + "$");
+ }
+
+}
diff --git a/td/Assets/Scripts/touchScript.cs.meta b/td/Assets/Scripts/gameStats.cs.meta
index ab0ba6c..cd4989c 100644
--- a/td/Assets/Scripts/touchScript.cs.meta
+++ b/td/Assets/Scripts/gameStats.cs.meta
@@ -1,6 +1,6 @@
fileFormatVersion: 2
-guid: 8b15d2b1b4d2f4f7fadf48b92f7edec2
-timeCreated: 1506804974
+guid: 48789fb36d2d543209c2f6540f1442d9
+timeCreated: 1507127936
licenseType: Free
MonoImporter:
serializedVersion: 2
diff --git a/td/Assets/Scripts/player.cs b/td/Assets/Scripts/player.cs
new file mode 100644
index 0000000..b972477
--- /dev/null
+++ b/td/Assets/Scripts/player.cs
@@ -0,0 +1,48 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class player : MonoBehaviour {
+
+ public int startingMoney;
+
+ GameObject[] towers;
+
+ int playerMoney;
+ int playerScore;
+
+ bool placingTower;
+
+ void Awake() {
+ playerMoney = startingMoney;
+ }
+
+ #region stats
+ public int score() {
+ return playerScore;
+ }
+
+ public void score(int points) {
+ playerScore += points;
+ }
+
+ public int money() {
+ return playerMoney;
+ }
+
+ public void moneyAdd(int sum) {
+ playerMoney += sum;
+ }
+
+ public void moneySubtract(int sum) {
+ playerMoney -= sum;
+ }
+ #endregion
+
+ public void spawnTower(GameObject towerType) {
+ GameObject tower = Instantiate (towerType, new Vector3 (0, 0, 0), Quaternion.identity, transform.Find ("towers").transform);
+ tower script = tower.GetComponent <tower>();
+ script.player = this;
+ }
+
+}
diff --git a/td/Assets/Scripts/player.cs.meta b/td/Assets/Scripts/player.cs.meta
new file mode 100644
index 0000000..c57a461
--- /dev/null
+++ b/td/Assets/Scripts/player.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b033e147f0b23409bb5c7a98a7208d6b
+timeCreated: 1507125120
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Scripts/touchScript.cs b/td/Assets/Scripts/touchScript.cs
deleted file mode 100644
index c8cdd6a..0000000
--- a/td/Assets/Scripts/touchScript.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class touchScript : MonoBehaviour {
-
-
- private RuntimePlatform platform = Application.platform;
-
- void Update(){
- if(platform == RuntimePlatform.Android || platform == RuntimePlatform.IPhonePlayer){
- if(Input.touchCount > 0) {
- if(Input.GetTouch(0).phase == TouchPhase.Began){
- checkTouch(Input.GetTouch(0).position);
- }
- }
- }else if(platform == RuntimePlatform.WindowsEditor){
- if(Input.GetMouseButtonDown(0)) {
- checkTouch(Input.mousePosition);
- }
- }
- }
-
- void checkTouch(Vector3 pos){
- Vector3 wp = Camera.main.ScreenToWorldPoint(pos);
- Vector2 touchPos = new Vector2(wp.x, wp.y);
- Collider2D hit = Physics2D.OverlapPoint(touchPos);
- Debug.Log("Checking");
- if(hit){
- //hit.transform.gameObject.SendMessage("Clicked",0,SendMessageOptions.DontRequireReceiver);
- Debug.Log("CLICKED");
- }
- }
-
-
-
-}
diff --git a/td/Assets/Scripts/tower.cs b/td/Assets/Scripts/tower.cs
new file mode 100644
index 0000000..0c812b2
--- /dev/null
+++ b/td/Assets/Scripts/tower.cs
@@ -0,0 +1,137 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class tower : MonoBehaviour {
+
+ [Header("Attributes")]
+ public int towerPrice; // The price of the tower, set this in the desiger (tower prefab)
+ public float fireRate; // How long the turret should use to reload, Set in designer (tower prefab)
+ public float turnSpeed; // How fast the turret should rotate. Set in designer (tower prefab)
+ [Range(0, 10)]
+ public float towerRange; // How large the range of the tower is. this is the diameter. Set in designer (tower prefab)
+ [Header("Materials")]
+ public Material materialDanger; // The material used when tower can't be placed, set in the designer (tower prefab)
+ public Material materialSuccess; // The material used when the tower can be placed, or is selected, set in the designer (tower prefab)
+ [Header("Scripting vars")]
+ public player player; // Reference to the player object, should be set when instantiating
+
+ private GameObject placementIndicator; // The placement indicator
+ private Renderer placementIndicatorRenderer; // The renderer of the placement indicator
+ private Plane groundPlane; // Plane used for raycasting when placing tower
+ private float groundYpoint = 0.525f; // What Y-position the Tower should be placed on, this should be constant in every use-case.
+ private bool towerPlaced; // Bool used to descide what to do this frame
+ private bool colliding; // Set if the tower collides with any GameObject, used when placing, to see where it can be placed
+
+ private Transform target;
+ private float fireCountdown;
+
+ void Start () {
+ placementIndicator = transform.GetChild (0).gameObject;
+ placementIndicatorRenderer = placementIndicator.GetComponent<Renderer> ();
+ placementIndicator.transform.localScale = new Vector3 (towerRange*7, 0.00000001f, towerRange*7);
+
+ groundPlane = new Plane (Vector3.up, new Vector3(0f, groundYpoint, 0f));
+ }
+
+ void Update () {
+
+ #region placeTower
+ if (!towerPlaced) {
+ if (Input.touchCount == 1 || Input.GetMouseButton (0)) {
+
+ /* Activate indicator if not already */
+ if (!placementIndicator.activeSelf) { placementIndicator.SetActive (true); }
+ /* Change indicator-color based on placement */
+ if (!colliding) { placementIndicatorRenderer.sharedMaterial = materialDanger; }
+ else { placementIndicatorRenderer.sharedMaterial = materialSuccess; }
+ /* Calculate new position */
+ Ray touchRay = Camera.main.ScreenPointToRay (Input.mousePosition);
+ float rayDistance;
+ if (groundPlane.Raycast (touchRay, out rayDistance)) {
+ transform.position = touchRay.GetPoint (rayDistance);
+ }
+
+ } else {
+
+ /* User let go of the screen, decide if tower can be placed */
+ if (!colliding) { Destroy (gameObject); } // Skal kollidere for å være på et godkjent område
+ else {
+ towerPlaced = true;
+ player.moneySubtract (towerPrice);
+ placementIndicator.SetActive (false);
+ placementIndicatorRenderer.sharedMaterial = materialSuccess;
+ InvokeRepeating ("updateTarget", 0f, 0.5f); // This starts the
+ gameObject.GetComponent <BoxCollider>().enabled = false;
+ }
+
+ }
+
+ return;
+ }
+ #endregion
+
+ // Stop rest of update if no target is aquired
+ if (target == null) {
+ return;
+ }
+ // Target lockon
+ Vector3 direction = target.position - transform.position;
+ Quaternion lookRotation = Quaternion.LookRotation (direction);
+ Vector3 rotation = Quaternion.Lerp (transform.rotation, lookRotation, Time.deltaTime * turnSpeed).eulerAngles;
+ transform.rotation = Quaternion.Euler (0f, rotation.y, 0f);
+
+ if (fireCountdown <= 0f) {
+ // FAIAAAAA
+ fireCountdown = 1f / fireRate;
+ }
+
+ fireCountdown -= Time.deltaTime;
+
+
+ }
+
+ void updateTarget() {
+ /* Method that updates the currentTarget.
+ * The target will be set to the nearest in range */
+ GameObject[] enemies = GameObject.FindGameObjectsWithTag ("enemy");
+ float shortestDistance = Mathf.Infinity;
+ GameObject nearestEnemy = null;
+
+ foreach (var enemy in enemies) {
+ float distanceToEnemy = Vector3.Distance (transform.position, enemy.transform.position);
+ if (distanceToEnemy < shortestDistance) {
+ shortestDistance = distanceToEnemy;
+ nearestEnemy = enemy;
+ }
+ }
+
+ if (nearestEnemy != null && shortestDistance <= towerRange) {
+ Debug.Log ("Target aquired");
+ target = nearestEnemy.transform;
+ } else {
+ target = null;
+ }
+ }
+
+ void OnTriggerEnter(Collider other) {
+ colliding = true;
+ }
+
+ void OnTriggerStay(Collider other) {
+ colliding = true;
+ }
+
+ void OnTriggerExit(Collider other) {
+ colliding = false;
+ }
+
+ void OnDrawGizmosSelected() {
+ /* Show gizmos in designer */
+ Gizmos.color = Color.red;
+ Gizmos.DrawWireSphere (transform.position, towerRange);
+ }
+
+}
+
+
diff --git a/td/Assets/Scripts/tower.cs.meta b/td/Assets/Scripts/tower.cs.meta
new file mode 100644
index 0000000..c31ac8e
--- /dev/null
+++ b/td/Assets/Scripts/tower.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 39d4d93c762d74a628b6292b97f1483f
+timeCreated: 1506962845
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Scripts/waveSpawner.cs b/td/Assets/Scripts/waveSpawner.cs
new file mode 100644
index 0000000..c3fada3
--- /dev/null
+++ b/td/Assets/Scripts/waveSpawner.cs
@@ -0,0 +1,76 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class waveSpawner : MonoBehaviour {
+
+ public static int EnemiesAlive = 0;
+
+ public Wave[] waves;
+
+ public Transform spawnPoint;
+
+ public float timeBetweenWaves = 5f;
+ private float countdown = 2f;
+
+ public Text waveCountdownText;
+
+
+ private int waveIndex = 0;
+
+ void Update ()
+ {
+ if (EnemiesAlive > 0)
+ {
+ return;
+ }
+
+ if (waveIndex == waves.Length)
+ {
+ // WIN LEVEL!!!
+ this.enabled = false;
+ }
+
+ if (countdown <= 0f)
+ {
+ StartCoroutine(SpawnWave());
+ countdown = timeBetweenWaves;
+ return;
+ }
+
+ countdown -= Time.deltaTime;
+
+ countdown = Mathf.Clamp(countdown, 0f, Mathf.Infinity);
+
+ //waveCountdownText.text = string.Format("{0:00.00}", countdown);
+ }
+
+ IEnumerator SpawnWave ()
+ {
+ Wave wave = waves[waveIndex];
+
+ EnemiesAlive = wave.count;
+
+ for (int i = 0; i < wave.count; i++)
+ {
+ SpawnEnemy(wave.enemy);
+ yield return new WaitForSeconds(1f / wave.rate);
+ }
+
+ waveIndex++;
+ }
+
+ void SpawnEnemy (GameObject enemy)
+ {
+ Instantiate(enemy, spawnPoint.position, spawnPoint.rotation);
+ }
+
+}
+
+[System.Serializable]
+public class Wave {
+ public GameObject enemy;
+ public int count;
+ public float rate;
+} \ No newline at end of file
diff --git a/td/Assets/Scripts/waveSpawner.cs.meta b/td/Assets/Scripts/waveSpawner.cs.meta
new file mode 100644
index 0000000..1f1e3cb
--- /dev/null
+++ b/td/Assets/Scripts/waveSpawner.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 9ea53d824cbfc4eb8a4eb4ee6a247bc7
+timeCreated: 1507241433
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/ProjectSettings/ProjectSettings.asset b/td/ProjectSettings/ProjectSettings.asset
index 3182338..64cfb4a 100644
--- a/td/ProjectSettings/ProjectSettings.asset
+++ b/td/ProjectSettings/ProjectSettings.asset
Binary files differ
diff --git a/td/ProjectSettings/TagManager.asset b/td/ProjectSettings/TagManager.asset
index 2c3af94..5c28d30 100644
--- a/td/ProjectSettings/TagManager.asset
+++ b/td/ProjectSettings/TagManager.asset
Binary files differ