diff --git a/Assets/Entities/Enemies/Scripts/EnemyHandler.cs b/Assets/Entities/Enemies/Scripts/EnemyHandler.cs deleted file mode 100644 index 199940f..0000000 --- a/Assets/Entities/Enemies/Scripts/EnemyHandler.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class EnemyHandler : MonoBehaviour -{ - [Header("Parameters")] - [SerializeField] [Range(0.1f, 60f)] float spawnRate = 60f; - [SerializeField] int objectPoolSize = 15; - - [Header("Prefabs")] - [SerializeField] GameObject objectPool; - [SerializeField] List enemyPrefabs = new List(); - - [Header("Lists")] - [SerializeField] List enemyPools = new List(); - [SerializeField] List allEnemies = new List(); - - private void Start() - { - //gridManager.CalculateNewPath(); - - PopulateObjectPools(); - } - - private void Update() - { - if (Input.GetKeyDown(KeyCode.N)) - { - } - } - - void PopulateObjectPools() - { - foreach (GameObject enemy in enemyPrefabs) - { - GameObject newPool = Instantiate(objectPool, transform); - newPool.transform.name = $"ObjectPool:{enemy.name}"; - ObjectPool poolScript = newPool.GetComponent(); - enemyPools.Add(newPool); - - for (int i = 0; i < objectPoolSize; i++) - { - enemy.SetActive(false); - poolScript.AddObject(enemy); - } - } - } - - public void AddEnemyToAllEnemies(GameObject _enemy) - { - allEnemies.Add(_enemy); - } - - public void RemoveEnemy(GameObject _enemy) - { - allEnemies.Remove(_enemy); - } - - public List ReturnAllEnemies() - { - return allEnemies; - } - - public Vector2Int GetCoordinatesFromPosition(Vector3 position) - { - Vector2Int coordinates = new Vector2Int(); - coordinates.x = Mathf.RoundToInt(position.x / UnityEditor.EditorSnapSettings.move.x); - coordinates.y = Mathf.RoundToInt(position.z / UnityEditor.EditorSnapSettings.move.z); - - return coordinates; - } - - public void NotifyEnemiesOfNewPath() - { - BroadcastMessage("RecalculatePath", SendMessageOptions.DontRequireReceiver); - } -} diff --git a/Assets/Entities/Enemies/Scripts/EnemyHealth.cs b/Assets/Entities/Enemies/Scripts/EnemyHealth.cs index 8985dd8..84d33d0 100644 --- a/Assets/Entities/Enemies/Scripts/EnemyHealth.cs +++ b/Assets/Entities/Enemies/Scripts/EnemyHealth.cs @@ -1,4 +1,5 @@ using AsteroidGame.Entities.Structures.Tower; +using AsteroidGame.Handlers; using UnityEngine; namespace AsteroidGame.Entities.Enemies.Scripts diff --git a/Assets/Entities/EntityBase.cs b/Assets/Entities/EntityBase.cs index 2e2491c..8b8c53e 100644 --- a/Assets/Entities/EntityBase.cs +++ b/Assets/Entities/EntityBase.cs @@ -19,7 +19,6 @@ namespace AsteroidGame.Entities } } - public void SetHealth(int newHealth) { health = newHealth; diff --git a/Assets/Entities/Structures/Tower/Turret.prefab b/Assets/Entities/Structures/Tower/Turret.prefab index b1009e7..c8b78cd 100644 --- a/Assets/Entities/Structures/Tower/Turret.prefab +++ b/Assets/Entities/Structures/Tower/Turret.prefab @@ -676,12 +676,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d3a16cf44e28f02409c23498ed14acf5, type: 3} m_Name: m_EditorClassIdentifier: - health: 0 - maxHealth: 0 + health: 50 + maxHealth: 50 isInvulnerable: 0 name: - cost: 0 - buildTimer: 0 + cost: 20 + buildTimer: 1 weaponRange: 40 damage: 1 fireRate: 1 @@ -690,4 +690,5 @@ MonoBehaviour: score: 0 _turretHead: {fileID: 5103935544653627402} _barrel: {fileID: 5103935545559248087} + targetEnemy: {fileID: 0} buildingParts: [] diff --git a/Assets/Handlers/BuildingHandler.cs b/Assets/Handlers/BuildingHandler.cs index b3259e0..bf675df 100644 --- a/Assets/Handlers/BuildingHandler.cs +++ b/Assets/Handlers/BuildingHandler.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using AsteroidGame.Entities.Structures.Scripts; using UnityEngine; @@ -15,53 +16,32 @@ namespace AsteroidGame.Handlers [Header("Prefabs")] [SerializeField] private List buildings = new List(); - private void OnClick(InputValue value) - { - Vector3 tempVec = new Vector3(); - Plane plane = new Plane(Vector3.up, Vector3.zero); - Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue()); - if (plane.Raycast(ray, out float distance)) - { - tempVec = ray.GetPoint(distance); - } - //var tempVec = new Vector3(Mouse.current.position.ReadValue().x, Mouse.current.position.ReadValue().y, -_camera.transform.position.z); - // var point = _camera.ScreenToWorldPoint(tempVec); - // var ray = _camera.ScreenPointToRay(tempVec); - // print($"Mouse:{Mouse.current.position.ReadValue()} world:{point}"); - // if (!Physics.Raycast(ray, out var hit)) return; - // var pos = hit.transform.position; - // print($"{hit.transform.name} was hit! world:{pos}"); - Instantiate(buildings[buildingSelector], tempVec, Quaternion.identity, transform); - //var spawnPoint = new Vector3(1, 1, 0); - //Instantiate(buildings[buildingSelector], spawnPoint, Quaternion.identity, transform); + #region Private - // print($"BuildManagerClick"); + [SerializeField] private List activeBuildings; + private Vector3 _tempVec; + private Plane _buildPlane; + private StructureBase _tempSB; + + #endregion + + private void OnEnable() + { + activeBuildings.Clear(); } - // public void PlaceStructure(GameObject _tileGO) - // { - // Tile _tile = _tileGO.GetComponentInChildren(); - // - // - // Debug.Log($"Placing tower on Tile: {_tileGO.transform.position}"); - // Debug.Log($"Placing tower on Node: {_node.coordinates}"); - // - // if (scoreHandler.CurrentBalance - buildings[buildingSelector].Cost < 0) - // { - // print("Insufficient Funds!"); - // return; - // } - // else - // { - // scoreHandler.ModifyWealth(-buildings[buildingSelector].Cost); - // } - // } + private void OnClick(InputValue value) + { + _buildPlane = new Plane(Vector3.up, Vector3.zero); + Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue()); + if (_buildPlane.Raycast(ray, out float distance)) + { + _tempVec = ray.GetPoint(distance); + } + _tempSB = Instantiate(buildings[buildingSelector], _tempVec, 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))); - // } + activeBuildings.Add(_tempSB); + } } } \ No newline at end of file diff --git a/Assets/Handlers/BuildingHandler.prefab b/Assets/Handlers/BuildingHandler.prefab deleted file mode 100644 index 2aea93b..0000000 --- a/Assets/Handlers/BuildingHandler.prefab +++ /dev/null @@ -1,49 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &8724214045091603641 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6508452906343485956} - - component: {fileID: 3682645643528836357} - m_Layer: 0 - m_Name: BuildingHandler - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6508452906343485956 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8724214045091603641} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 46.822308, y: -168.60272, z: 143.78717} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3682645643528836357 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8724214045091603641} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 51bf353b43f7b2448bbb3088d78ee8a6, type: 3} - m_Name: - m_EditorClassIdentifier: - scoreHandler: {fileID: 0} - buildings: - - {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3} - - {fileID: 6261550781972269396, guid: dcf90521dd3b06548b2a43a02a5f6dc3, type: 3} diff --git a/Assets/Handlers/BuildingHandler.prefab.meta b/Assets/Handlers/BuildingHandler.prefab.meta deleted file mode 100644 index 85d6adf..0000000 --- a/Assets/Handlers/BuildingHandler.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: cbeeac603faf0334b8a47a73094ea1c1 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Handlers/EnemyHandler.cs b/Assets/Handlers/EnemyHandler.cs new file mode 100644 index 0000000..9a4b843 --- /dev/null +++ b/Assets/Handlers/EnemyHandler.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Pool; + +namespace AsteroidGame.Handlers +{ + public class EnemyHandler : MonoBehaviour + { + [Header("Parameters")] + [SerializeField] [Range(0.1f, 60f)] float spawnRate = 60f; + [SerializeField] int objectPoolSize = 15; + + [Header("Prefabs")] + [SerializeField] GameObject objectPool; + [SerializeField] List enemyPrefabs = new List(); + + [Header("Lists")] + [SerializeField] List enemyPools = new List(); + [SerializeField] List allEnemies = new List(); + + private void Start() + { + + } + + public void AddEnemyToAllEnemies(GameObject _enemy) + { + allEnemies.Add(_enemy); + } + + public void RemoveEnemy(GameObject _enemy) + { + allEnemies.Remove(_enemy); + } + + public List ReturnAllEnemies() + { + return allEnemies; + } + + public Vector2Int GetCoordinatesFromPosition(Vector3 position) + { + Vector2Int coordinates = new Vector2Int(); + coordinates.x = Mathf.RoundToInt(position.x / UnityEditor.EditorSnapSettings.move.x); + coordinates.y = Mathf.RoundToInt(position.z / UnityEditor.EditorSnapSettings.move.z); + + return coordinates; + } + + public void NotifyEnemiesOfNewPath() + { + BroadcastMessage("RecalculatePath", SendMessageOptions.DontRequireReceiver); + } + } +} diff --git a/Assets/Entities/Enemies/Scripts/EnemyHandler.cs.meta b/Assets/Handlers/EnemyHandler.cs.meta similarity index 100% rename from Assets/Entities/Enemies/Scripts/EnemyHandler.cs.meta rename to Assets/Handlers/EnemyHandler.cs.meta diff --git a/Assets/Scenes/Playground.unity b/Assets/Scenes/Playground.unity index 1655c33..9808554 100644 --- a/Assets/Scenes/Playground.unity +++ b/Assets/Scenes/Playground.unity @@ -236,6 +236,7 @@ Transform: m_Children: - {fileID: 436649171} - {fileID: 1158682046} + - {fileID: 1047643964} m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -244,6 +245,56 @@ Transform: m_CorrespondingSourceObject: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} m_PrefabInstance: {fileID: 1191794244} m_PrefabAsset: {fileID: 0} +--- !u!1 &1047643963 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1047643964} + - component: {fileID: 1047643965} + m_Layer: 0 + m_Name: EnemyHandler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1047643964 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1047643963} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 142965241} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1047643965 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1047643963} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 62a3dc5f11a44cb4d9faccb4fda8599f, type: 3} + m_Name: + m_EditorClassIdentifier: + spawnRate: 60 + objectPoolSize: 15 + objectPool: {fileID: 0} + enemyPrefabs: [] + enemyPools: [] + allEnemies: [] --- !u!1 &1158682045 GameObject: m_ObjectHideFlags: 0 @@ -292,6 +343,7 @@ MonoBehaviour: buildingSelector: 0 buildings: - {fileID: 8787361557661825162, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} + activeBuildings: [] --- !u!1001 &1191794244 PrefabInstance: m_ObjectHideFlags: 0 @@ -307,34 +359,6 @@ PrefabInstance: propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - target: {fileID: 8083988910661828847, guid: c2b4fe01faa847f4b976b5539477e1ec, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 @@ -587,34 +611,6 @@ PrefabInstance: propertyPath: m_RootOrder value: 2 objectReference: {fileID: 0} - - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - target: {fileID: 8324879816836607384, guid: 534f8d15e0c83c646887bebfda2bdfd6, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0