diff --git a/Assets/Entities/Enemy/EnemyHandler.cs b/Assets/Entities/Enemy/EnemyHandler.cs index 8279f7b..199940f 100644 --- a/Assets/Entities/Enemy/EnemyHandler.cs +++ b/Assets/Entities/Enemy/EnemyHandler.cs @@ -4,11 +4,6 @@ using UnityEngine; public class EnemyHandler : MonoBehaviour { - [Header("Assigned on start")] - [SerializeField] PathFinder pathFinder; - [SerializeField] GridManager gridManager; - - [Header("Parameters")] [SerializeField] [Range(0.1f, 60f)] float spawnRate = 60f; [SerializeField] int objectPoolSize = 15; @@ -18,58 +13,23 @@ public class EnemyHandler : MonoBehaviour [SerializeField] List enemyPrefabs = new List(); [Header("Lists")] - [SerializeField] List path = new List(); [SerializeField] List enemyPools = new List(); [SerializeField] List allEnemies = new List(); - - - public List Path { get { return path; } } - - private void Awake() - { - gridManager = FindObjectOfType(); - } - + private void Start() { //gridManager.CalculateNewPath(); PopulateObjectPools(); - - StartCoroutine(Spawner()); } private void Update() { if (Input.GetKeyDown(KeyCode.N)) { - SpawnNewEnemy(); } } - public void SetPath(List _nodes) - { - path.Clear(); - - foreach (Node _node in _nodes) - { - path.Add(_node); - } - - UpdateEnemyPath(); - } - - void UpdateEnemyPath() - { - foreach (GameObject _pool in enemyPools) - { - foreach (EnemyMovement _enemy in _pool.GetComponentsInChildren()) - { - _enemy.SetPath(path); - } - } - } - void PopulateObjectPools() { foreach (GameObject enemy in enemyPrefabs) @@ -101,22 +61,7 @@ public class EnemyHandler : MonoBehaviour { return allEnemies; } - - void SpawnNewEnemy() - { - int spawnEnemyIndex = Mathf.RoundToInt(Random.Range(-0.49f, 2.49f)); - enemyPools[spawnEnemyIndex].GetComponent().EnableFirstAvailableObject(); - } - - IEnumerator Spawner() - { - while (true) - { - SpawnNewEnemy(); - yield return new WaitForSeconds(spawnRate); - } - } - + public Vector2Int GetCoordinatesFromPosition(Vector3 position) { Vector2Int coordinates = new Vector2Int(); diff --git a/Assets/Entities/Enemy/EnemyMovement.cs b/Assets/Entities/Enemy/EnemyMovement.cs index 50f25cc..e5336b6 100644 --- a/Assets/Entities/Enemy/EnemyMovement.cs +++ b/Assets/Entities/Enemy/EnemyMovement.cs @@ -11,8 +11,7 @@ public class EnemyMovement : MonoBehaviour [SerializeField] EnemyHandler enemyHandler; [SerializeField] ScoreHandler scoreHandler; - [SerializeField] PathFinder pathFinder; - [SerializeField] List path; + Vector3 startPosition; Vector3 endPosition; @@ -24,17 +23,12 @@ public class EnemyMovement : MonoBehaviour { enemyHandler = FindObjectOfType(); scoreHandler = FindObjectOfType(); - pathFinder = FindObjectOfType(); + } void OnEnable() { - transform.localPosition = GetVector3(pathFinder.GetStartPosition()); - SetPath(pathFinder.CalculateNewPath(enemyHandler.GetCoordinatesFromPosition(gameObject.transform.position))); - transform.LookAt(GetVector3(path[1].coordinates)); enemyHandler.AddEnemyToAllEnemies(gameObject); - - CoroutineStarter(); } @@ -46,55 +40,8 @@ public class EnemyMovement : MonoBehaviour StopCoroutine(followPath); } - //Debug.Log($"{this.name} Recalculating path"); - SetPath(pathFinder.CalculateNewPath(enemyHandler.GetCoordinatesFromPosition(gameObject.transform.position))); - CoroutineStarter(); } - - private void CoroutineStarter() - { - followPath = FollowPath(); - StartCoroutine(followPath); - } - public void SetPath(List _path) - { - path.Clear(); - - foreach (Node _node in _path) - { - path.Add(_node); - } - //regenerate start to finish path to not interfere with building - pathFinder.CalculateNewPath(); - } - - IEnumerator FollowPath() - { - - for (int i = 1; i < path.Count; i++) - { - startPosition = transform.position; - endPosition = GetVector3(path[i].coordinates); - travelPercent = 0; - transform.LookAt(endPosition); - //float distance = Vector3.Distance(startPosition, endPosition); - //if (Vector3.Distance(startPosition, endPosition) < 10) - //{ - // travelPercent = 1 - (distance / 10); - //} - - // Debug.Log($"start: {startPosition}. end: {endPosition}"); - while (travelPercent < 1f) - { - travelPercent += Time.deltaTime * speed; - transform.position = Vector3.Lerp(startPosition, endPosition, travelPercent); - yield return new WaitForEndOfFrame(); - } - } - - HandleReachedEndOfPath(); - } - + void HandleReachedEndOfPath() { scoreHandler.ModifyHealth(-damage); diff --git a/Assets/Entities/Handlers/BuildingHandler.cs b/Assets/Entities/Handlers/BuildingHandler.cs index 2bcf320..8d76109 100644 --- a/Assets/Entities/Handlers/BuildingHandler.cs +++ b/Assets/Entities/Handlers/BuildingHandler.cs @@ -3,70 +3,44 @@ using UnityEngine; public class BuildingHandler : MonoBehaviour { - [Header("Assigned on start")] - [SerializeField] ScoreHandler scoreHandler; - [SerializeField] GridManager gridManager; + [Header("Assigned on start")] [SerializeField] + ScoreHandler scoreHandler; - [Header("Assigned on start")] - [SerializeField] int buildingSelector = 0; + [Header("Assigned on start")] [SerializeField] + int buildingSelector = 0; + + [Header("Prefabs")] [SerializeField] List buildings = new List(); - [Header("Prefabs")] - [SerializeField] List buildings = new List(); // Start is called before the first frame update void Start() { scoreHandler = FindObjectOfType(); - gridManager = FindObjectOfType(); } public void BuildTower(GameObject _tileGO) { //Tile _tile = _tileGO.GetComponentInChildren(); - Node _node = gridManager.GetNode(GetVector2(_tileGO)); + //Debug.Log($"Placing tower on Tile: {_tileGO.transform.position}"); //Debug.Log($"Placing tower on Node: {_node.coordinates}"); - if (_node.isBuildable) + if (scoreHandler.CurrentBalance - buildings[buildingSelector].Cost < 0) { - if (scoreHandler.CurrentBalance - buildings[buildingSelector].Cost < 0) - { - print("Insufficient Funds!"); - return; - } - else - { - if (_node.isPath) - { - _node.isBuildable = false; - _node.isWalkable = false; - gridManager.SetNode(_node); - //gridManager.CalculateNewPath(); - - if (!gridManager.CheckForValidPath()) - { - _node.isBuildable = true; - _node.isWalkable = true; - gridManager.SetNode(_node); - print("Not allowed to block path!"); - gridManager.CalculateNewPath(); - return; - } - } - - scoreHandler.ModifyWealth(-buildings[buildingSelector].Cost); - Instantiate(buildings[buildingSelector], _tileGO.transform.position, Quaternion.identity, transform); - - _node.isWalkable = false; - _node.isBuildable = false; - - gridManager.SetNode(_node); - } + print("Insufficient Funds!"); + return; + } + else + { + scoreHandler.ModifyWealth(-buildings[buildingSelector].Cost); + Instantiate(buildings[buildingSelector], _tileGO.transform.position, Quaternion.identity, transform); } } + public Vector2Int GetVector2(GameObject _o) { - return new Vector2Int((Mathf.RoundToInt(_o.transform.position.x) / 10), (Mathf.RoundToInt(_o.transform.position.z / 10))); + return new Vector2Int((Mathf.RoundToInt(_o.transform.position.x) / 10), + (Mathf.RoundToInt(_o.transform.position.z / 10))); } -} +} \ No newline at end of file