Exemple #1
0
 public override int[] check(Card card, GameInterface gi)
 {
     int[] r = new int[cardsToMove];
     int i = 0;
     while (i < cardsToMove)
     {
         GameElement e = gi.getNextGameElementPress();
         if (e.card != null && e.card.location.pile == from && e.card.owner.isHero)
         {
             r[i] = e.card.getId();
             i++;
         }
         if (e.choice != null && e.choice.Value == Choice.Cancel)
         {
             return null;
         }
     }
     return r;
 }
Exemple #2
0
        public override int[] check(Card card, GameInterface gi)
        {
            Player owner = card.owner;

            if (CMC > owner.totalMana) { return null; }

            int[] r = new int[CMC];
            int[] cz = costs;
            int c = 0;

            for (int i = 0; i < 5; i++)
            {
                if (cz[i] > owner.getCurrentMana(i))
                {
                    return null;
                }
                while (cz[i]-- > 0)
                {
                    r[c++] = i;
                }
            }

            if (c == CMC) { return r; }

            if (CMC == owner.totalMana)
            {
                for (int i = 0; i < 5; i++)
                {
                    int v = owner.getCurrentMana(i) - Costs[i];
                    while (v-- > 0)
                    {
                        r[c++] = i;
                    }
                }
                return r;
            }
            else
            {
                var paid = costs;

                gi.setFakeManas(Costs);
                gi.setContext("", Choice.Cancel);

                while (c != CMC)
                {
                    gi.changeMessage("Pay " + (CMC - c));

                    GameElement element = gi.getNextGameElementPress();

                    if (element.choice != null && element.choice == Choice.Cancel)
                    {
                        gi.resetFakeMana();
                        gi.clearContext();
                        return null;
                    }

                    else if (element.manaColour != null)
                    {
                        int v = (int)element.manaColour;

                        if (owner.getCurrentMana(v) - paid[v] > 0)
                        {
                            r[c++] = v;
                            gi.decrementFakeMana(v);
                        }
                    }

                }

                gi.resetFakeMana();
                gi.clearContext();
                return r;
            }
        }