Example #1
0
        private void ClearDeaths(Board defenderBoard)
        {
            Dictionary <IMinion, int> deaths = new Dictionary <IMinion, int>();

            for (int i = 0; i < PlayedMinions.Count; i++)
            {
                var minion = PlayedMinions[i];
                if (minion.IsDead)
                {
                    deaths[minion] = i;
                    int index = PlayedMinions.IndexOf(minion);
                    PlayedMinions.Remove(minion);
                    Graveyard.Add(minion);
                }
            }

            foreach (var kv in deaths)
            {
                kv.Key.OnDeath(new TriggerParams()
                {
                    Activator = kv.Key, Board = this, RivalBoard = defenderBoard, Index = kv.Value
                });
                OnMinionDied(kv.Key, defenderBoard);
            }
        }
Example #2
0
        private void ClearDeaths()
        {
            Dictionary <IMinion, int> deaths = new Dictionary <IMinion, int>();

            for (int i = 0; i < PlayedMinions.Count; i++)
            {
                var minion = PlayedMinions[i];
                if (minion.IsDead)
                {
                    deaths[minion] = i;
                    int index = PlayedMinions.IndexOf(minion);
                    Remove(minion);
                    Graveyard.Add(minion);
                }
            }

            foreach (var kv in deaths)
            {
                int auraLevel = BoardAuras.Where(a => a.Value == AuraType.Deathrattle).Select(b => b.Key.Level).DefaultIfEmpty().Max() + 1;
                for (int i = 0; i < auraLevel; i++)
                {
                    kv.Key.OnDeath(new TriggerParams()
                    {
                        Activator = kv.Key, Board = this, RivalBoard = RivalBoard, Index = kv.Value
                    });
                }

                OnMinionDied(kv.Key);
            }
        }
Example #3
0
        public void Remove(IMinion defendingMinion)
        {
            int i = PlayedMinions.IndexOf(defendingMinion);

            if (i < NextAttacker)
            {
                NextAttacker--;
            }
            PlayedMinions.Remove(defendingMinion);
        }
Example #4
0
        private List <IMinion> GetAdjacentMinions(IMinion minion)
        {
            List <IMinion> adjacent = new List <IMinion>();
            int            index    = PlayedMinions.IndexOf(minion);
            int            right    = index - 1;
            int            left     = index + 1;

            if (right >= 0)
            {
                adjacent.Add(PlayedMinions[right]);
            }
            if (left < PlayedMinions.Count)
            {
                adjacent.Add(PlayedMinions[left]);
            }

            return(adjacent);
        }