Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }