diff --git a/Mage.Server/src/main/java/mage/server/game/GameController.java b/Mage.Server/src/main/java/mage/server/game/GameController.java index ac095166a8..6257c2ea34 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameController.java +++ b/Mage.Server/src/main/java/mage/server/game/GameController.java @@ -138,23 +138,20 @@ public class GameController implements GameCallback { ChatManager.getInstance().broadcast(chatId, "", event.getMessage(), MessageColor.ORANGE, event.getWithTime()); logger.debug(game.getId() + " " + event.getMessage()); break; - case REVEAL: - revealCards(event.getMessage(), event.getCards()); - break; case ERROR: error(event.getMessage(), event.getException()); break; case INIT_TIMER: final UUID initPlayerId = event.getPlayerId(); if (initPlayerId == null) { - throw new IllegalStateException("INIT_TIMER: playerId can't be null"); + throw new MageException("INIT_TIMER: playerId can't be null"); } createPlayerTimer(event.getPlayerId(), game.getPriorityTime()); break; case RESUME_TIMER: playerId = event.getPlayerId(); if (playerId == null) { - throw new IllegalStateException("RESUME_TIMER: playerId can't be null"); + throw new MageException("RESUME_TIMER: playerId can't be null"); } timer = timers.get(playerId); if (timer == null) { @@ -162,7 +159,7 @@ public class GameController implements GameCallback { if (player != null) { timer = createPlayerTimer(event.getPlayerId(), player.getPriorityTimeLeft()); } else { - throw new IllegalStateException("RESUME_TIMER: player can't be null"); + throw new MageException("RESUME_TIMER: player can't be null"); } } timer.resume(); @@ -170,11 +167,11 @@ public class GameController implements GameCallback { case PAUSE_TIMER: playerId = event.getPlayerId(); if (playerId == null) { - throw new IllegalStateException("PAUSE_TIMER: playerId can't be null"); + throw new MageException("PAUSE_TIMER: playerId can't be null"); } timer = timers.get(playerId); if (timer == null) { - throw new IllegalStateException("PAUSE_TIMER: couldn't find timer for player: " + playerId); + throw new MageException("PAUSE_TIMER: couldn't find timer for player: " + playerId); } timer.pause(); break; @@ -225,9 +222,6 @@ public class GameController implements GameCallback { case AMOUNT: amount(event.getPlayerId(), event.getMessage(), event.getMin(), event.getMax()); break; - case LOOK: - lookAtCards(event.getPlayerId(), event.getMessage(), event.getCards()); - break; case PERSONAL_MESSAGE: informPersonal(event.getPlayerId(), event.getMessage()); break; @@ -592,21 +586,6 @@ public class GameController implements GameCallback { }); } - private synchronized void revealCards(String name, Cards cards) throws MageException { - for (GameSession session: gameSessions.values()) { - session.revealCards(name, new CardsView(cards.getCards(game))); - } - } - - private synchronized void lookAtCards(UUID playerId, final String name, final Cards cards) throws MageException { - perform(playerId, new Command() { - @Override - public void execute(UUID playerId) { - getGameSession(playerId).revealCards(name, new CardsView(cards.getCards(game))); - } - }, false); - } - private void informOthers(UUID playerId) throws MageException { StringBuilder message = new StringBuilder(); if (game.getStep() != null) { diff --git a/Mage.Server/src/main/java/mage/server/game/GameSession.java b/Mage.Server/src/main/java/mage/server/game/GameSession.java index 54a03de8d7..1eee2b538f 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameSession.java +++ b/Mage.Server/src/main/java/mage/server/game/GameSession.java @@ -160,15 +160,6 @@ public class GameSession extends GameWatcher { } } - public void revealCards(final String name, final CardsView cardView) { - if (!killed) { - User user = UserManager.getInstance().getUser(userId); - if (user != null) { - user.fireCallback(new ClientCallback("gameReveal", game.getId(), new GameClientMessage(cardView, name))); - } - } - } - private synchronized void setupTimeout() { if (!useTimeout) { return; @@ -234,7 +225,7 @@ public class GameSession extends GameWatcher { list.add(new LookedAtView(entry.getKey(), entry.getValue(), game)); } gameView.setLookedAt(list); - game.getState().clearLookedAt(); + game.getState().clearLookedAt(playerId); return gameView; } diff --git a/Mage/src/mage/game/Game.java b/Mage/src/mage/game/Game.java index 0ce2366e99..3ef8fe1431 100644 --- a/Mage/src/mage/game/Game.java +++ b/Mage/src/mage/game/Game.java @@ -137,7 +137,6 @@ public interface Game extends MageItem, Serializable { void fireSelectTargetEvent(UUID playerId, String message, List<TriggeredAbility> abilities); void fireSelectTargetEvent(UUID playerId, String message, List<Permanent> perms, boolean required); void fireSelectEvent(UUID playerId, String message); - void fireLookAtCardsEvent(UUID playerId, String message, Cards cards); void firePriorityEvent(UUID playerId); void firePlayManaEvent(UUID playerId, String message); void firePlayXManaEvent(UUID playerId, String message); diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 2a5dd3974c..670a9f265b 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -1481,14 +1481,6 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa playerQueryEventSource.target(playerId, message, perms, required); } - @Override - public void fireLookAtCardsEvent(UUID playerId, String message, Cards cards) { - if (simulation) { - return; - } - playerQueryEventSource.target(playerId, message, cards); - } - @Override public void fireGetAmountEvent(UUID playerId, String message, int min, int max) { if (simulation) { @@ -1518,7 +1510,6 @@ public abstract class GameImpl<T extends GameImpl<T>> implements Game, Serializa if (simulation) { return; } -// state.addMessage(message); fireInformEvent(message); } diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java index 14e4ac659b..94046ad21a 100644 --- a/Mage/src/mage/game/GameState.java +++ b/Mage/src/mage/game/GameState.java @@ -29,21 +29,35 @@ package mage.game; import java.io.Serializable; -import java.util.*; -import mage.constants.Zone; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import mage.MageObject; -import mage.abilities.*; +import mage.abilities.Abilities; +import mage.abilities.AbilitiesImpl; +import mage.abilities.Ability; +import mage.abilities.ActivatedAbility; +import mage.abilities.DelayedTriggeredAbilities; +import mage.abilities.DelayedTriggeredAbility; +import mage.abilities.Mode; +import mage.abilities.SpecialActions; +import mage.abilities.StaticAbility; +import mage.abilities.TriggeredAbilities; +import mage.abilities.TriggeredAbility; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffects; import mage.abilities.effects.Effect; import mage.cards.Card; import mage.cards.SplitCard; import mage.choices.Choice; +import mage.constants.Zone; import mage.game.combat.Combat; import mage.game.combat.CombatGroup; import mage.game.command.Command; import mage.game.command.CommandObject; -import mage.game.command.Emblem; import mage.game.events.GameEvent; import mage.game.permanent.Battlefield; import mage.game.permanent.Permanent; @@ -59,7 +73,6 @@ import mage.util.Copyable; import mage.watchers.Watcher; import mage.watchers.Watchers; - /** * * @author BetaSteward_at_googlemail.com @@ -86,7 +99,6 @@ public class GameState implements Serializable, Copyable<GameState> { private int turnNum = 1; private boolean gameOver; private boolean paused; -// private List<String> messages = new ArrayList<String>(); private ContinuousEffects effects; private TriggeredAbilities triggers; private List<TriggeredAbility> triggered = new ArrayList<TriggeredAbility>(); @@ -310,15 +322,15 @@ public class GameState implements Serializable, Copyable<GameState> { public LookedAt getLookedAt(UUID playerId) { if (lookedAt.get(playerId) == null) { - LookedAt l = new LookedAt(); - lookedAt.put(playerId, l); - return l; + LookedAt lookedAtCards = new LookedAt(); + lookedAt.put(playerId, lookedAtCards); + return lookedAtCards; } return lookedAt.get(playerId); } - public void clearLookedAt() { - lookedAt.clear(); + public void clearLookedAt(UUID playerId) { + lookedAt.remove(playerId); } public Turn getTurn() { diff --git a/Mage/src/mage/game/events/PlayerQueryEvent.java b/Mage/src/mage/game/events/PlayerQueryEvent.java index c400e52c17..bb6afd44ba 100644 --- a/Mage/src/mage/game/events/PlayerQueryEvent.java +++ b/Mage/src/mage/game/events/PlayerQueryEvent.java @@ -28,6 +28,12 @@ package mage.game.events; +import java.io.Serializable; +import java.util.EventObject; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.TriggeredAbility; @@ -35,9 +41,6 @@ import mage.cards.Card; import mage.cards.Cards; import mage.game.permanent.Permanent; -import java.io.Serializable; -import java.util.*; - /** * * @author BetaSteward_at_googlemail.com @@ -45,7 +48,7 @@ import java.util.*; public class PlayerQueryEvent extends EventObject implements ExternalEvent, Serializable { public enum QueryType { - ASK, CHOOSE, CHOOSE_ABILITY, CHOOSE_MODE, PICK_TARGET, PICK_ABILITY, SELECT, PLAY_MANA, PLAY_X_MANA, AMOUNT, LOOK, PICK_CARD, CONSTRUCT, CHOOSE_PILE, PERSONAL_MESSAGE + ASK, CHOOSE, CHOOSE_ABILITY, CHOOSE_MODE, PICK_TARGET, PICK_ABILITY, SELECT, PLAY_MANA, PLAY_X_MANA, AMOUNT, PICK_CARD, CONSTRUCT, CHOOSE_PILE, PERSONAL_MESSAGE } private String message; @@ -191,10 +194,6 @@ public class PlayerQueryEvent extends EventObject implements ExternalEvent, Seri return new PlayerQueryEvent(playerId, message, null, null, null, null, QueryType.AMOUNT, min, max, false); } - public static PlayerQueryEvent lookEvent(UUID playerId, String message, Cards cards) { - return new PlayerQueryEvent(playerId, message, null, null, null, cards, QueryType.LOOK, 0, 0, false); - } - public static PlayerQueryEvent pickCard(UUID playerId, String message, List<Card> booster, int time) { return new PlayerQueryEvent(playerId, message, booster, QueryType.PICK_CARD, time); } diff --git a/Mage/src/mage/game/events/PlayerQueryEventSource.java b/Mage/src/mage/game/events/PlayerQueryEventSource.java index 57e07411a5..bfebc0d6f1 100644 --- a/Mage/src/mage/game/events/PlayerQueryEventSource.java +++ b/Mage/src/mage/game/events/PlayerQueryEventSource.java @@ -82,10 +82,6 @@ public class PlayerQueryEventSource implements EventSource<PlayerQueryEvent>, Se dispatcher.fireEvent(PlayerQueryEvent.targetEvent(playerId, message, cards, required, options)); } - public void target(UUID playerId, String message, Cards cards) { - dispatcher.fireEvent(PlayerQueryEvent.lookEvent(playerId, message, cards)); - } - public void target(UUID playerId, String message, List<TriggeredAbility> abilities) { dispatcher.fireEvent(PlayerQueryEvent.targetEvent(playerId, message, abilities)); } diff --git a/Mage/src/mage/game/events/TableEvent.java b/Mage/src/mage/game/events/TableEvent.java index 6d6637b422..a359155095 100644 --- a/Mage/src/mage/game/events/TableEvent.java +++ b/Mage/src/mage/game/events/TableEvent.java @@ -28,6 +28,9 @@ package mage.game.events; +import java.io.Serializable; +import java.util.EventObject; +import java.util.UUID; import mage.cards.Cards; import mage.cards.decks.Deck; import mage.game.Game; @@ -35,10 +38,6 @@ import mage.game.draft.Draft; import mage.game.match.MatchOptions; import mage.game.tournament.TournamentPairing; -import java.io.Serializable; -import java.util.EventObject; -import java.util.UUID; - /** * * @author BetaSteward_at_googlemail.com diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index 6413664e51..171a955f12 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -977,13 +977,12 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser @Override public void revealCards(String name, Cards cards, Game game) { game.getState().getRevealed().add(name, cards); -// game.fireRevealCardsEvent(this.name + " revealed", cards); } @Override public void lookAtCards(String name, Cards cards, Game game) { game.getState().getLookedAt(this.playerId).add(name, cards); - game.fireLookAtCardsEvent(playerId, this.name + " looking at", cards); + game.fireUpdatePlayersEvent(); } @Override