diff --git a/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java b/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java index 2dc91103188..655e07f6d2b 100644 --- a/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java +++ b/Mage.Common/src/mage/interfaces/callback/CallbackServerSession.java @@ -29,7 +29,6 @@ package mage.interfaces.callback; import java.util.concurrent.locks.Condition; -import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Logger; import mage.util.Logging; @@ -40,56 +39,6 @@ import mage.util.Logging; */ public class CallbackServerSession { -// private final ClientCallback callback = new ClientCallback(); -// private Boolean waiting = false; -// -// /** -// * -// * blocks the thread until a callback is requested -// * -// * @return ClientCallback - the callback requested -// */ -// public ClientCallback callback() { -// //TODO: use ReentrantLock instead -// do { -// callback.clear(); -// synchronized(callback) { -// try { -// waiting = true; -// callback.wait(); -// waiting.notify(); -// waiting = false; -// } catch (InterruptedException ex) {} -// } -// } while (callback.getMethod() == null); -// return callback; -// } -// -// /** -// * -// * requests a callback -// * -// * @param call - the callback to request -// */ -// public void setCallback(ClientCallback call) { -// //TODO: use ReentrantLock instead - wait until a lock is aquired by another thread before setting method and data -// synchronized(waiting) { -// if (!waiting) { -// try { -// waiting.wait(); -// } catch (InterruptedException ex) {} -// } -// } -// -// synchronized(callback) { -// callback.setMethod(call.getMethod()); -// callback.setData(call.getData()); -// callback.notify(); -// } -// } - - - private final static Logger logger = Logging.getLogger(CallbackServerSession.class.getName()); private final ClientCallback callback = new ClientCallback(); @@ -138,6 +87,7 @@ public class CallbackServerSession { } callback.setMethod(call.getMethod()); callback.setData(call.getData()); + callback.setMessageId(call.getMessageId()); callbackCalled.signal(); } finally { diff --git a/Mage.Common/src/mage/interfaces/callback/ClientCallback.java b/Mage.Common/src/mage/interfaces/callback/ClientCallback.java index af027b29d9b..6160b8a52e3 100644 --- a/Mage.Common/src/mage/interfaces/callback/ClientCallback.java +++ b/Mage.Common/src/mage/interfaces/callback/ClientCallback.java @@ -38,6 +38,7 @@ public class ClientCallback implements Serializable { private Object data; private String method; + private int messageId; public ClientCallback() {} @@ -67,4 +68,12 @@ public class ClientCallback implements Serializable { this.method = method; } + public void setMessageId(int messageId) { + this.messageId = messageId; + } + + public int getMessageId() { + return messageId; + } + } diff --git a/Mage.Common/src/mage/view/GameView.java b/Mage.Common/src/mage/view/GameView.java index ba0edfbde0a..ea57709d224 100644 --- a/Mage.Common/src/mage/view/GameView.java +++ b/Mage.Common/src/mage/view/GameView.java @@ -79,8 +79,8 @@ public class GameView implements Serializable { for (ExileZone exileZone: game.getExile().getExileZones()) { exiles.add(new ExileView(exileZone)); } - this.phase = game.getTurn().getPhase(); - this.step = game.getTurn().getStep(); + this.phase = game.getTurn().getPhaseType(); + this.step = game.getTurn().getStepType(); this.turn = game.getTurnNum(); if (game.getActivePlayerId() != null) this.activePlayerName = game.getPlayer(game.getActivePlayerId()).getName(); diff --git a/Mage.Common/src/mage/view/PlayerView.java b/Mage.Common/src/mage/view/PlayerView.java index f06a625a48e..360c69f7273 100644 --- a/Mage.Common/src/mage/view/PlayerView.java +++ b/Mage.Common/src/mage/view/PlayerView.java @@ -66,12 +66,23 @@ public class PlayerView implements Serializable { for (Card card: player.getGraveyard().values()) { graveyard.add(new CardView(card)); } - for (Permanent permanent: game.getBattlefield().getAllPermanents(player.getId())) { - PermanentView view = new PermanentView(permanent); - battlefield.put(view.getId(), view); + for (Permanent permanent: game.getBattlefield().getAllPermanents()) { + if (showInBattlefield(permanent, game)) { + PermanentView view = new PermanentView(permanent); + battlefield.put(view.getId(), view); + } } } + private boolean showInBattlefield(Permanent permanent, GameState game) { + + //show permanents controlled by player or attachments to permanents controlled by player + if (permanent.getAttachedTo() == null) + return permanent.getControllerId().equals(playerId); + else + return game.getPermanent(permanent.getAttachedTo()).getControllerId().equals(playerId); + } + public int getLife() { return this.life; }