diff --git a/The project/Assets/Prefabs/Dummy Soldier.prefab b/The project/Assets/Prefabs/Dummy Soldier.prefab deleted file mode 100644 index aaf25db9..00000000 --- a/The project/Assets/Prefabs/Dummy Soldier.prefab +++ /dev/null @@ -1,113 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &7329575924073430320 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7329575924073430335} - - component: {fileID: 7329575924073430332} - - component: {fileID: 7329575924073430333} - - component: {fileID: 7329575924073430322} - - component: {fileID: 7329575924073430323} - m_Layer: 0 - m_Name: Dummy Soldier - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7329575924073430335 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7329575924073430320} - 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: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7329575924073430332 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7329575924073430320} - m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &7329575924073430333 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7329575924073430320} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!136 &7329575924073430322 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7329575924073430320} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &7329575924073430323 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7329575924073430320} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8cb9ceee24755fa4880d17603fefc63a, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/The project/Assets/Prefabs/Soldier.prefab b/The project/Assets/Prefabs/Soldier.prefab index 527a5937..72b0979b 100644 --- a/The project/Assets/Prefabs/Soldier.prefab +++ b/The project/Assets/Prefabs/Soldier.prefab @@ -59,7 +59,7 @@ Rigidbody: m_Mass: 1 m_Drag: 0 m_AngularDrag: 0.05 - m_UseGravity: 1 + m_UseGravity: 0 m_IsKinematic: 0 m_Interpolate: 0 m_Constraints: 0 @@ -76,6 +76,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d34caf35d0ce610f8bc87cf815ba1915, type: 3} m_Name: m_EditorClassIdentifier: + target: {fileID: 0} + enemyTag: + healthPoints: 1 + rangeAttack: 1 + rangeView: 1 + damageAttack: 1 + speedAttack: 1 --- !u!1 &2353457452513625490 GameObject: m_ObjectHideFlags: 0 diff --git a/The project/Assets/Scenes/Merloj.unity b/The project/Assets/Scenes/Merloj.unity index aefc50e1..04e79dd6 100644 --- a/The project/Assets/Scenes/Merloj.unity +++ b/The project/Assets/Scenes/Merloj.unity @@ -156,7 +156,7 @@ MonoBehaviour: soldierStartingPosition: {x: 0, y: 0} enemyStartingPosition: {x: 1, y: 0} tilemap: {fileID: 1853262998} - soldierPrefab: {fileID: 7329575924073430320, guid: 0cea408c577cfdf4fa0c7295d22ba421, + soldierPrefab: {fileID: 403095692180922766, guid: a87b1aa46b0ed3e0fba621e11dd4f1e2, type: 3} --- !u!4 &282616949 Transform: diff --git a/The project/Assets/Scripts/DummySoldier.cs b/The project/Assets/Scripts/DummySoldier.cs deleted file mode 100644 index 06a166cc..00000000 --- a/The project/Assets/Scripts/DummySoldier.cs +++ /dev/null @@ -1,8 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class DummySoldier : MonoBehaviour -{ - -} diff --git a/The project/Assets/Scripts/DummySoldier.cs.meta b/The project/Assets/Scripts/DummySoldier.cs.meta deleted file mode 100644 index d01f6628..00000000 --- a/The project/Assets/Scripts/DummySoldier.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8cb9ceee24755fa4880d17603fefc63a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/The project/Assets/Prefabs/Dummy Soldier.prefab.meta b/The project/Assets/Scripts/Managers.meta similarity index 57% rename from The project/Assets/Prefabs/Dummy Soldier.prefab.meta rename to The project/Assets/Scripts/Managers.meta index 47aff1f4..10d45472 100644 --- a/The project/Assets/Prefabs/Dummy Soldier.prefab.meta +++ b/The project/Assets/Scripts/Managers.meta @@ -1,6 +1,7 @@ fileFormatVersion: 2 -guid: 0cea408c577cfdf4fa0c7295d22ba421 -PrefabImporter: +guid: 5d5ec7ec529070f4aa733bf14cc8e222 +folderAsset: yes +DefaultImporter: externalObjects: {} userData: assetBundleName: diff --git a/The project/Assets/Scripts/TilemapManager.cs b/The project/Assets/Scripts/Managers/TilemapManager.cs similarity index 86% rename from The project/Assets/Scripts/TilemapManager.cs rename to The project/Assets/Scripts/Managers/TilemapManager.cs index 21c2739b..32224aef 100644 --- a/The project/Assets/Scripts/TilemapManager.cs +++ b/The project/Assets/Scripts/Managers/TilemapManager.cs @@ -14,7 +14,7 @@ public class TilemapManager : MonoBehaviour public struct Tile { - public DummySoldier standingSoldier; + public Soldier standingSoldier; } [Header("Common Values")] @@ -50,8 +50,8 @@ public class TilemapManager : MonoBehaviour private void Start() { - SpawnSoldier(soldierStartingPosition.x, soldierStartingPosition.y); - SpawnSoldier(enemyStartingPosition.x, enemyStartingPosition.y); + SpawnSoldier(soldierStartingPosition.x, soldierStartingPosition.y, true); + SpawnSoldier(enemyStartingPosition.x, enemyStartingPosition.y, false); } private void OnValidate() @@ -77,13 +77,18 @@ public class TilemapManager : MonoBehaviour // ---------- public functions - public bool SpawnSoldier(int x, int y) + public bool SpawnSoldier(int x, int y, bool isAlly) { if (GetTileState(x, y) != TileState.free) return false; tiles[x, y].standingSoldier = Instantiate(soldierPrefab, tilemap.CellToWorld(new Vector3Int(x, y, 0)) + WORLD_SPACE_OFFSET, Quaternion.identity).GetComponent(); + if (isAlly) + tiles[x, y].standingSoldier.setOwnTag(Soldier.SoldierType.Ally); + else + tiles[x, y].standingSoldier.setOwnTag(Soldier.SoldierType.Enemy); + if (tiles[x, y].standingSoldier != null) return true; @@ -102,7 +107,7 @@ public class TilemapManager : MonoBehaviour return true; } - public DummySoldier GetSoldier(int x, int y) + public Soldier GetSoldier(int x, int y) { if (GetTileState(x, y) != TileState.taken) return null; @@ -110,6 +115,19 @@ public class TilemapManager : MonoBehaviour return tiles[x,y].standingSoldier; } + public Soldier[] GetAllSoldiers() + { + List list = new List(); + + foreach (Tile obj in tiles) + { + if (obj.standingSoldier != null) + list.Add(obj.standingSoldier); + } + + return list.ToArray(); + } + public bool MoveSoldier(int x1, int y1, int x2, int y2) { if (GetTileState(x1, y1) == TileState.taken && GetTileState(x2, y2) == TileState.free) diff --git a/The project/Assets/Scripts/TilemapManager.cs.meta b/The project/Assets/Scripts/Managers/TilemapManager.cs.meta similarity index 100% rename from The project/Assets/Scripts/TilemapManager.cs.meta rename to The project/Assets/Scripts/Managers/TilemapManager.cs.meta diff --git a/The project/Assets/Scripts/Soldier.cs b/The project/Assets/Scripts/Soldier.cs index 301af388..43660171 100644 --- a/The project/Assets/Scripts/Soldier.cs +++ b/The project/Assets/Scripts/Soldier.cs @@ -4,27 +4,60 @@ using UnityEngine; public class Soldier : MonoBehaviour { + public enum SoldierType + { + Ally, + Enemy + } [SerializeField] private Transform target; - [SerializeField] private string enemyTag; + [SerializeField] private SoldierType enemyType; + [SerializeField] private SoldierType ourType; [SerializeField] private float healthPoints = 1; - [SerializeField] private float rangeAttack = 1; + [SerializeField] private float rangeAttack = 100; [SerializeField] private float rangeView = 1; [SerializeField] private float damageAttack = 1; [SerializeField] private float speedAttack = 1; // Start is called before the first frame update void Start(){ - if(gameObject.tag == "Ally") enemyTag = "Enemy"; - else enemyTag = "Ally"; - InvokeRepeating("UpdateTarget", 0f, 0.5f); - // Call UpdateTarget method at the begining of the Start() - // and repeat every 0.5 second - + setEnemyTag(); } + public void setOwnTag(SoldierType type) + { + ourType = type; + } + + public void setEnemyTag() + { + if(ourType == SoldierType.Ally) enemyType = SoldierType.Enemy; + else enemyType = SoldierType.Ally; + } + + void Awake() + { + TickSystem.OnTick += HandleTick; + } + private void HandleTick(TickSystem.OnTickEventArgs tickEventArgs) + { + UpdateTarget(); + } + void UpdateTarget () { // Enemies are the game objects tagged with the "Enemy" - GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag); + //GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyType); + Soldier[] soldiers = GameObject.FindObjectsOfType(); + + List enemiesList = new List(); + + foreach (Soldier obj in soldiers) + { + if (obj.ourType == enemyType) + enemiesList.Add(obj.gameObject); + } + + GameObject[] enemies = enemiesList.ToArray(); + Debug.Log(enemies.Length); // We have not found enemy yet so the distance to enemy is "infinite" float shortestDistance = Mathf.Infinity;