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); } }
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); } }
public void Remove(IMinion defendingMinion) { int i = PlayedMinions.IndexOf(defendingMinion); if (i < NextAttacker) { NextAttacker--; } PlayedMinions.Remove(defendingMinion); }
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); }