fixed Liliana Of The Veil npe when targeting tokens + added choose pile dialog

This commit is contained in:
BetaSteward 2012-02-07 15:15:47 -05:00
parent f14559d71d
commit 6205ebaeb9
18 changed files with 511 additions and 199 deletions

View file

@ -153,6 +153,9 @@ public class GameController implements GameCallback {
case CHOOSE_ABILITY:
chooseAbility(event.getPlayerId(), event.getAbilities());
break;
case CHOOSE_PILE:
choosePile(event.getPlayerId(), event.getMessage(), event.getPile1(), event.getPile2());
break;
case CHOOSE_MODE:
chooseMode(event.getPlayerId(), event.getModes());
break;
@ -387,6 +390,14 @@ public class GameController implements GameCallback {
});
}
private synchronized void choosePile(UUID playerId, final String message, final List<? extends Card> pile1, final List<? extends Card> pile2) throws MageException {
perform(playerId, new Command() {
public void execute(UUID playerId) {
gameSessions.get(playerId).choosePile(message, new CardsView(pile1), new CardsView(pile2));
}
});
}
private synchronized void chooseMode(UUID playerId, final Map<UUID, String> modes) throws MageException {
perform(playerId, new Command() {
public void execute(UUID playerId) {

View file

@ -110,6 +110,19 @@ public class GameSession extends GameWatcher {
}
}
public void choosePile(final String message, final CardsView pile1, final CardsView pile2) {
if (!killed) {
setupTimeout();
User user = UserManager.getInstance().getUser(userId);
if (user != null) {
List<CardsView> piles = new ArrayList<CardsView>();
piles.add(pile1);
piles.add(pile2);
user.fireCallback(new ClientCallback("gameChoosePile", game.getId(), new GameClientMessage(message, pile1, pile2)));
}
}
}
public void choose(final String message, final Set<String> choices) {
if (!killed) {
setupTimeout();