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; }
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; } }