Exemplo n.º 1
0
 static bool getPlayTargeted(Player pcopy, ITargetPlayCard tpc, Creature c)
 {
     if (tpc.CanPlay(c, out var play))
     {
         play(); return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 2
0
        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);
        }