diff --git a/The project/Assets/Prefabs.meta b/The project/Assets/Prefabs.meta index 4a208534..37d4a05f 100644 --- a/The project/Assets/Prefabs.meta +++ b/The project/Assets/Prefabs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5939f2b8303b5cd46afe044fb9d1709e +guid: 08cb4bdcfd1a3d9198e1d7ccfee220d2 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/The project/Assets/Scenes/SpartaqS.unity b/The project/Assets/Scenes/SpartaqS.unity index aa2d012b..465027f0 100644 --- a/The project/Assets/Scenes/SpartaqS.unity +++ b/The project/Assets/Scenes/SpartaqS.unity @@ -322,7 +322,7 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1030936245 +--- !u!1 &619856669 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -330,42 +330,86 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1030936246} - - component: {fileID: 1030936247} + - component: {fileID: 619856671} + - component: {fileID: 619856670} m_Layer: 0 - m_Name: ExampleTickReceiver + m_Name: DebugSoldier1 m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1030936246 +--- !u!114 &619856670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 619856669} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d34caf35d0ce610f8bc87cf815ba1915, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &619856671 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1030936245} + m_GameObject: {fileID: 619856669} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1030936247 +--- !u!1 &728282086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 728282088} + - component: {fileID: 728282087} + m_Layer: 0 + m_Name: DebugSoldier2 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &728282087 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1030936245} + m_GameObject: {fileID: 728282086} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a1201c89332e3f946a28bbc1294750be, type: 3} + m_Script: {fileID: 11500000, guid: d34caf35d0ce610f8bc87cf815ba1915, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!4 &728282088 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 728282086} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1051848805 PrefabInstance: m_ObjectHideFlags: 0 @@ -435,3 +479,50 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 519502c6f18d5e44eb800aefd848a6e6, type: 3} +--- !u!1 &1440849007 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1440849008} + - component: {fileID: 1440849009} + m_Layer: 0 + m_Name: SquadObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1440849008 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1440849007} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1440849009 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1440849007} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eeef7310a48872043b4089979ec88b42, type: 3} + m_Name: + m_EditorClassIdentifier: + soldiers: + - {fileID: 619856670} + - {fileID: 728282087} diff --git a/The project/Assets/Scripts.meta b/The project/Assets/Scripts.meta index d428c7c3..8dc8f7f0 100644 --- a/The project/Assets/Scripts.meta +++ b/The project/Assets/Scripts.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0249b4cbd93f42540a182f30adbb10bc +guid: c970975bb706c3e158e7748ebf7f5284 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/The project/Assets/Scripts/Squad.cs b/The project/Assets/Scripts/Squad.cs new file mode 100644 index 00000000..6989bcee --- /dev/null +++ b/The project/Assets/Scripts/Squad.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Squad : MonoBehaviour +{ + public abstract class Order // generic order (to keep in queue) + { + public virtual void PassToSoldier(Soldier targetSoldier) // "translate" the order to the soldier + {// depending on implementation, for example call soldier's method to execute/plan this task + Debug.LogWarning($"Generic order passing not overriden\nSoldier {targetSoldier.name} received generic order"); + } + } + + public class MovementOrder : Order // example how to add new types of orders + { + public int x; + public int y; + public override void PassToSoldier(Soldier targetSoldier) + {// here we would set soldier's target position for example + Debug.Log($"Soldier {targetSoldier.name} received movement order towards coordinates {x},{y}"); + } + } + + [SerializeField] private List soldiers = new List(); // soldiers belonging to the squad + private Queue orders = new Queue(); // orders given to the squad + + private void Awake() + { + TickSystem.OnTick += HandleTick; + } + + private void HandleTick(TickSystem.OnTickEventArgs eventArgs) + {// pass a single order to all soldiers + if (orders.Count < 1) + return; // for now nothing to do here + + Order currentOrder = orders.Dequeue(); + Debug.Log($"Passing order {currentOrder.ToString()} on tick #{eventArgs.tickNumber}"); + foreach (Soldier soldier in soldiers) + { + currentOrder.PassToSoldier(soldier); + } + } + + [ContextMenu("DEBUG ADD PSEUDO MOVEMENT ORDER")] + public void DebugAddMovementOrder() + { + int targetX = 4; + int targetY = 2; + orders.Enqueue(new MovementOrder() { x = targetX, y = targetY }); + } +} diff --git a/The project/Assets/Scripts/Squad.cs.meta b/The project/Assets/Scripts/Squad.cs.meta new file mode 100644 index 00000000..ff5762a2 --- /dev/null +++ b/The project/Assets/Scripts/Squad.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eeef7310a48872043b4089979ec88b42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: