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.gameObject.name = "Player Squad";
playerSquad.transform.SetParent(transform);
playerSquad.SetOwnTeam(Entity.Team.Ally);
enemySquad = Instantiate(squadPrefab).GetComponent<Squad>();
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<Soldier>();
foreach(var soldier in soldiers)
{
if(soldier.GetOwnTeam() == Soldier.Team.Ally)
{
playerSquad.TempAddSoldierToSquad(soldier);
}
}
var squads = new List<Squad>();
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;
}
}
}

View File

@ -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<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
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;