static bool getPlayTargeted(Player pcopy, ITargetPlayCard tpc, Creature c) { if (tpc.CanPlay(c, out var play)) { play(); return(true); } else { return(false); } }
static void handleTargetSpells(TargetSpell.TargetTypes type, Player p, ITargetPlayCard tpc, List <Board> results, ref Board copyBoard, ref Player copyPlayer) { TargetSpell.TargetTypes type1, type2; switch (type) { case TargetSpell.TargetTypes.All: type1 = TargetSpell.TargetTypes.EnemyCreatures; type2 = TargetSpell.TargetTypes.FriendCreatures; break; case TargetSpell.TargetTypes.AllMinions: type1 = TargetSpell.TargetTypes.EnemyMinions; type2 = TargetSpell.TargetTypes.FriendMinions; break; case TargetSpell.TargetTypes.FriendCreatures: type1 = TargetSpell.TargetTypes.FriendHero; type2 = TargetSpell.TargetTypes.FriendMinions; break; case TargetSpell.TargetTypes.EnemyCreatures: type1 = TargetSpell.TargetTypes.EnemyHero; type2 = TargetSpell.TargetTypes.EnemyMinions; break; case TargetSpell.TargetTypes.FriendHero: if (getPlayTargeted(copyPlayer, tpc, copyPlayer.Hero)) { results.Add(copyBoard); renewCopies(p, out copyBoard, out copyPlayer); } return; case TargetSpell.TargetTypes.EnemyHero: if (getPlayTargeted(copyPlayer, tpc, copyPlayer.Enemy.Hero)) { results.Add(copyBoard); renewCopies(p, out copyBoard, out copyPlayer); } return; case TargetSpell.TargetTypes.FriendMinions: for (int j = 0, toem = copyPlayer.Minions.Count; j < toem; j++) { var em = copyPlayer.Minions[j]; if (getPlayTargeted(copyPlayer, tpc, em)) { results.Add(copyBoard); renewCopies(p, out copyBoard, out copyPlayer); } } return; case TargetSpell.TargetTypes.EnemyMinions: for (int j = 0, toem = copyPlayer.Enemy.Minions.Count; j < toem; j++) { var em = copyPlayer.Enemy.Minions[j]; if (getPlayTargeted(copyPlayer, tpc, em)) { results.Add(copyBoard); renewCopies(p, out copyBoard, out copyPlayer); } } return; default: throw new NotImplementedException(); } handleTargetSpells(type1, p, tpc, results, ref copyBoard, ref copyPlayer); handleTargetSpells(type2, p, tpc, results, ref copyBoard, ref copyPlayer); }