From ce3d7d69ee18b027bb0138a664ceff05eb7400a2 Mon Sep 17 00:00:00 2001 From: Gabriel Ksawery Skowron-Rodriguez Date: Mon, 23 May 2022 15:13:48 +0200 Subject: [PATCH] Adding initial soldiers to squads --- .../Assets/Scripts/Managers/SquadManager.cs | 25 +++++++++++++------ theProject/Assets/Scripts/Squad.cs | 12 +++++++-- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/theProject/Assets/Scripts/Managers/SquadManager.cs b/theProject/Assets/Scripts/Managers/SquadManager.cs index 37d1281c..2c784f0c 100644 --- a/theProject/Assets/Scripts/Managers/SquadManager.cs +++ b/theProject/Assets/Scripts/Managers/SquadManager.cs @@ -13,10 +13,12 @@ public class SquadManager : MonoBehaviour playerSquad = Instantiate(squadPrefab).GetComponent(); playerSquad.gameObject.name = "Player Squad"; playerSquad.transform.SetParent(transform); + playerSquad.SetOwnTeam(Entity.Team.Ally); enemySquad = Instantiate(squadPrefab).GetComponent(); enemySquad.gameObject.name = "Enemy Squad"; enemySquad.transform.SetParent(transform); + enemySquad.SetOwnTeam(Entity.Team.Enemy); } // Update is called once per frame void Update() @@ -24,14 +26,21 @@ public class SquadManager : MonoBehaviour Debug.Log("Added initial soldiers to squad"); // add all ally soldiers to squad var soldiers = FindObjectsOfType(); - foreach(var soldier in soldiers) - { - if(soldier.GetOwnTeam() == Soldier.Team.Ally) - { - playerSquad.TempAddSoldierToSquad(soldier); - } - } + var squads = new List(); + squads.Add(playerSquad); + squads.Add(enemySquad); - enabled = false; + foreach (var soldier in soldiers) + { + foreach (var squad in squads) + { + if (soldier.GetOwnTeam() == squad.GetOwnTeam()) + { + squad.AddSoldierToSquad(soldier); + soldier.OnDeath.AddListener(squad.RemoveSoldierFromSquad); + } + } + enabled = false; + } } } diff --git a/theProject/Assets/Scripts/Squad.cs b/theProject/Assets/Scripts/Squad.cs index 32b602d1..7e05b600 100644 --- a/theProject/Assets/Scripts/Squad.cs +++ b/theProject/Assets/Scripts/Squad.cs @@ -5,6 +5,9 @@ using UnityEngine; public class Squad : MonoBehaviour { + private Entity.Team ownTeam; + public Entity.Team GetOwnTeam() { return ownTeam; } + public void SetOwnTeam(Entity.Team newTeam) {ownTeam = newTeam; } #region Orders public abstract class Order // generic order (to keep in queue) { @@ -31,14 +34,19 @@ public class Squad : MonoBehaviour } #endregion - [SerializeField] private List soldiers = new List(); // soldiers belonging to the squad + [SerializeField] private List soldiers = new List(); // soldiers belonging to the squad private Queue orders = new Queue(); // orders given to the squad - public void TempAddSoldierToSquad(Soldier soldier) + public void AddSoldierToSquad(Entity soldier) { soldiers.Add(soldier); } + public void RemoveSoldierFromSquad(Entity soldier) + { + soldiers.Remove(soldier); + } + private void Awake() { TickSystem.OnTick += HandleTick;