public virtual void AddSoldier(Soldier soldier, bool instantly = false) { Soldiers.Add(soldier); soldier.AssignToBuilding(this, instantly); if (instantly) { LoadSoldier(soldier); } AnySoldiersCountChangedEvent?.Invoke(this); SoldiersCountChangedEvent?.Invoke(); }
public virtual void AddSoldiers(List <Soldier> soldiers, bool instantly = false) { for (int i = 0; i < soldiers.Count; i++) { Soldiers.Add(soldiers[i]); soldiers[i].AssignToBuilding(this, instantly); if (instantly) { LoadSoldier(soldiers[i]); } } AnySoldiersCountChangedEvent?.Invoke(this); SoldiersCountChangedEvent?.Invoke(); }
public virtual Soldier RemoveSoldier(int index) { if (Soldiers[index].CurrentlyInBuilding) { UnloadSoldier(index); } Soldier soldier = Soldiers[index]; Soldiers.RemoveAt(index); AnySoldiersCountChangedEvent?.Invoke(this); SoldiersCountChangedEvent?.Invoke(); return(soldier); }
public virtual List <Soldier> RemoveSoldiers(List <int> indexes) { List <Soldier> soldiersToRemove = new List <Soldier>(); for (int i = 0; i < indexes.Count; i++) { if (Soldiers[indexes[i]].CurrentlyInBuilding) { UnloadSoldier(indexes[i]); } soldiersToRemove.Add(Soldiers[indexes[i]]); } for (int i = 0; i < soldiersToRemove.Count; i++) { Soldiers.Remove(soldiersToRemove[i]); } AnySoldiersCountChangedEvent?.Invoke(this); SoldiersCountChangedEvent?.Invoke(); return(soldiersToRemove); }