Adding initial soldiers to squads

This commit is contained in:
Gabriel Ksawery Skowron-Rodriguez 2022-05-23 15:13:48 +02:00
parent b3b8f4cb76
commit ce3d7d69ee
2 changed files with 27 additions and 10 deletions

View File

@ -13,10 +13,12 @@ public class SquadManager : MonoBehaviour
playerSquad = Instantiate(squadPrefab).GetComponent<Squad>(); playerSquad = Instantiate(squadPrefab).GetComponent<Squad>();
playerSquad.gameObject.name = "Player Squad"; playerSquad.gameObject.name = "Player Squad";
playerSquad.transform.SetParent(transform); playerSquad.transform.SetParent(transform);
playerSquad.SetOwnTeam(Entity.Team.Ally);
enemySquad = Instantiate(squadPrefab).GetComponent<Squad>(); enemySquad = Instantiate(squadPrefab).GetComponent<Squad>();
enemySquad.gameObject.name = "Enemy Squad"; enemySquad.gameObject.name = "Enemy Squad";
enemySquad.transform.SetParent(transform); enemySquad.transform.SetParent(transform);
enemySquad.SetOwnTeam(Entity.Team.Enemy);
} }
// Update is called once per frame // Update is called once per frame
void Update() void Update()
@ -24,14 +26,21 @@ public class SquadManager : MonoBehaviour
Debug.Log("Added initial soldiers to squad"); Debug.Log("Added initial soldiers to squad");
// add all ally soldiers to squad // add all ally soldiers to squad
var soldiers = FindObjectsOfType<Soldier>(); var soldiers = FindObjectsOfType<Soldier>();
var squads = new List<Squad>();
squads.Add(playerSquad);
squads.Add(enemySquad);
foreach (var soldier in soldiers) foreach (var soldier in soldiers)
{ {
if(soldier.GetOwnTeam() == Soldier.Team.Ally) foreach (var squad in squads)
{ {
playerSquad.TempAddSoldierToSquad(soldier); if (soldier.GetOwnTeam() == squad.GetOwnTeam())
{
squad.AddSoldierToSquad(soldier);
soldier.OnDeath.AddListener(squad.RemoveSoldierFromSquad);
} }
} }
enabled = false; enabled = false;
} }
} }
}

View File

@ -5,6 +5,9 @@ using UnityEngine;
public class Squad : MonoBehaviour public class Squad : MonoBehaviour
{ {
private Entity.Team ownTeam;
public Entity.Team GetOwnTeam() { return ownTeam; }
public void SetOwnTeam(Entity.Team newTeam) {ownTeam = newTeam; }
#region Orders #region Orders
public abstract class Order // generic order (to keep in queue) public abstract class Order // generic order (to keep in queue)
{ {
@ -31,14 +34,19 @@ public class Squad : MonoBehaviour
} }
#endregion #endregion
[SerializeField] private List<Soldier> soldiers = new List<Soldier>(); // soldiers belonging to the squad [SerializeField] private List<Entity> soldiers = new List<Entity>(); // soldiers belonging to the squad
private Queue<Order> orders = new Queue<Order>(); // orders given to the squad private Queue<Order> orders = new Queue<Order>(); // orders given to the squad
public void TempAddSoldierToSquad(Soldier soldier) public void AddSoldierToSquad(Entity soldier)
{ {
soldiers.Add(soldier); soldiers.Add(soldier);
} }
public void RemoveSoldierFromSquad(Entity soldier)
{
soldiers.Remove(soldier);
}
private void Awake() private void Awake()
{ {
TickSystem.OnTick += HandleTick; TickSystem.OnTick += HandleTick;