diff --git a/theProject/Assets/Scripts/Managers/SquadManager.cs b/theProject/Assets/Scripts/Managers/SquadManager.cs index 2c784f0c..45afd820 100644 --- a/theProject/Assets/Scripts/Managers/SquadManager.cs +++ b/theProject/Assets/Scripts/Managers/SquadManager.cs @@ -37,7 +37,6 @@ public class SquadManager : MonoBehaviour 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 7e05b600..42c7c5a2 100644 --- a/theProject/Assets/Scripts/Squad.cs +++ b/theProject/Assets/Scripts/Squad.cs @@ -40,11 +40,13 @@ public class Squad : MonoBehaviour public void AddSoldierToSquad(Entity soldier) { soldiers.Add(soldier); + soldier.OnDeath.AddListener(RemoveSoldierFromSquad); } public void RemoveSoldierFromSquad(Entity soldier) { soldiers.Remove(soldier); + soldier.OnDeath.RemoveListener(RemoveSoldierFromSquad); } private void Awake() @@ -52,12 +54,12 @@ public class Squad : MonoBehaviour TickSystem.OnTick += HandleTick; } - private void Start() - { - - } + private void OnDestroy() + { + TickSystem.OnTick -= HandleTick; + } - private void HandleTick(TickSystem.OnTickEventArgs eventArgs) + private void HandleTick(TickSystem.OnTickEventArgs eventArgs) {// pass a single order to all soldiers if (orders.Count < 1) return; // for now nothing to do here