diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-22 08:31:25 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2011-06-22 08:31:25 +0200 |
commit | db717937612cc286fecf3e6e26be6886bd3768a2 (patch) | |
tree | 6e7c854fc899bc91480df3d91607f0cadd201cb4 /src | |
parent | 21f144f963ac69a881efcf5d68e4648f22527c0f (diff) | |
download | JRummikub-db717937612cc286fecf3e6e26be6886bd3768a2.tar JRummikub-db717937612cc286fecf3e6e26be6886bd3768a2.zip |
Fix network synchonization...
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@584 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src')
-rw-r--r-- | src/jrummikub/control/network/NetworkRoundControl.java | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/jrummikub/control/network/NetworkRoundControl.java b/src/jrummikub/control/network/NetworkRoundControl.java index 05a3424..c8731ee 100644 --- a/src/jrummikub/control/network/NetworkRoundControl.java +++ b/src/jrummikub/control/network/NetworkRoundControl.java @@ -1,5 +1,7 @@ package jrummikub.control.network; +import java.util.Date; + import jrummikub.control.RoundControl; import jrummikub.control.turn.ITurnControl; import jrummikub.model.IRoundState; @@ -13,34 +15,35 @@ import jrummikub.view.IView; */ public class NetworkRoundControl extends RoundControl { private IConnectionControl connectionControl; - private boolean wasActive; - private boolean currentlyActive; + private boolean currentlyActive = false; + private boolean inited = false; /** * Creates new network round control * * @param roundState - * current round state + * current round state * @param view - * the view + * the view * @param connectionControl - * connection control for the current connection + * connection control for the current connection * @param startActive - * true for host + * true for host */ public NetworkRoundControl(IRoundState roundState, IView view, - final IConnectionControl connectionControl, boolean startActive) { + final IConnectionControl connectionControl, final boolean startActive) { super(roundState, view, false); this.connectionControl = connectionControl; - wasActive = startActive; - currentlyActive = startActive; connections.add(connectionControl.getRoundStateUpdateEvent().add( new IListener1<IRoundState>() { @Override public void handle(IRoundState state) { setRoundState(state); + currentlyActive = startActive; + updateActive(); + inited = true; prepareTurn(); } })); @@ -58,6 +61,17 @@ public class NetworkRoundControl extends RoundControl { })); } + private void updateActive() { + switch (roundState.getActivePlayer().getPlayerSettings().getType()) { + case HUMAN: + currentlyActive = true; + break; + case NETWORK: + currentlyActive = false; + break; + } + } + @Override protected void addTurnControlListeners(ITurnControl turnControl) { turnControl.getTableUpdateEvent().add(new IListener1<ITable>() { @@ -79,22 +93,12 @@ public class NetworkRoundControl extends RoundControl { @Override protected void prepareTurn() { - switch (roundState.getActivePlayer().getPlayerSettings().getType()) { - case HUMAN: - currentlyActive = true; - break; - case NETWORK: - currentlyActive = false; - break; + if (!inited) { + return; } - doPrepareTurn(); - - if (showStartTurnPanel() == null) { - if (currentlyActive) { - connectionControl.startTurn(); - } - } + updateActive(); + super.prepareTurn(); } @Override @@ -108,9 +112,7 @@ public class NetworkRoundControl extends RoundControl { protected void deal() { super.deal(); - if (currentlyActive) { - connectionControl.updateRoundState(roundState); - } + connectionControl.updateRoundState(roundState); } @Override |