diff --git a/theProject/Assets/Scripts/Formation.cs b/theProject/Assets/Scripts/Formation.cs new file mode 100644 index 00000000..269b7a7e --- /dev/null +++ b/theProject/Assets/Scripts/Formation.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Formation : MonoBehaviour +{ + [SerializeField] Squad squad; + + void Awake() + { + this.squad = squad.GetComponent(typeof(Squad)); + } + + public Dictionary calculatePositions(Vector2int coordinates) + { + List soldiers = this.squad.getSoldiers(); + Dictionary soldierNewCoordinate = new Dictionary(); + int soldierNumber = 0; + foreach (Soldier soldier in soldiers) + { + soldierNewCoordinate.Add(soldier, calculateSoldierCoordinates(soldierNumber, coordinates)); + MoveSoldierS(x, y, soldierNewCoordinate.Item1, soldierNewCoordinate.Item2); + } + return soldierNewCoordinate; + } + + // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/in-parameter-modifier + private Vector2Int calculateSoldierCoordinates(in int soldierNumber, in Vector2Int coordinates) + { + // Horizontal line we change x + Vector2Int coordinates = new Vector2Int(coordinates.Item1 + soldierNumber, coordinates.Item1); + return coordinates; + } + + +} diff --git a/theProject/Assets/Scripts/Formation.cs.meta b/theProject/Assets/Scripts/Formation.cs.meta new file mode 100644 index 00000000..0583ef45 --- /dev/null +++ b/theProject/Assets/Scripts/Formation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5175e17e18d002001bf1ebde5de11b49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/theProject/Assets/Scripts/Squad.cs b/theProject/Assets/Scripts/Squad.cs index 32b602d1..1c4c7d59 100644 --- a/theProject/Assets/Scripts/Squad.cs +++ b/theProject/Assets/Scripts/Squad.cs @@ -31,9 +31,14 @@ public class Squad : MonoBehaviour } #endregion + [SerializeField] private Formation formation = new Formation(); [SerializeField] private List soldiers = new List(); // soldiers belonging to the squad private Queue orders = new Queue(); // orders given to the squad + public List getSoldiers() + { + return soldiers; + } public void TempAddSoldierToSquad(Soldier soldier) { soldiers.Add(soldier);