From 0c3eb9a28363ae697f984d9413eb187bfe2511a9 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 20 Jun 2011 06:41:15 +0200 Subject: Fixed a bunch of network synchronization bugs git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@510 72836036-5685-4462-b002-a69064685172 --- .../control/network/ConnectionControl.java | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/jrummikub/control/network/ConnectionControl.java') diff --git a/src/jrummikub/control/network/ConnectionControl.java b/src/jrummikub/control/network/ConnectionControl.java index d791344..871d06b 100644 --- a/src/jrummikub/control/network/ConnectionControl.java +++ b/src/jrummikub/control/network/ConnectionControl.java @@ -6,15 +6,18 @@ import java.util.UUID; import javax.swing.SwingUtilities; import jrummikub.model.GameSettings; +import jrummikub.model.IHand; import jrummikub.model.IRoundState; import jrummikub.model.ITable; import jrummikub.util.Event; import jrummikub.util.Event1; import jrummikub.util.Event2; +import jrummikub.util.Event3; import jrummikub.util.GameData; import jrummikub.util.IEvent; import jrummikub.util.IEvent1; import jrummikub.util.IEvent2; +import jrummikub.util.IEvent3; import jrummikub.util.LoginData; import jrummikub.view.LoginError; @@ -63,7 +66,7 @@ public class ConnectionControl implements IConnectionControl { private Event roundStartEvent = new Event(); private Event1 tableUpdateEvent = new Event1(); - private Event1 turnEndEvent = new Event1(); + private Event3 turnEndEvent = new Event3(); private Event1 turnStartEvent = new Event1(); private GameData currentGame; @@ -163,7 +166,7 @@ public class ConnectionControl implements IConnectionControl { } @Override - public IEvent1 getTurnEndEvent() { + public IEvent3 getTurnEndEvent() { return turnEndEvent; } @@ -302,14 +305,20 @@ public class ConnectionControl implements IConnectionControl { } @Override - public void endTurn(final ITable table) { + public void endTurn(final IHand oldHand, final ITable oldTable, + final ITable newTable) { final UUID uuid = currentGame.getGameID(); run(new SendRunner() { @Override protected void addData(DefaultPacketExtension extension) { extension.setValue("messageType", "turn_end"); extension.setValue("uuid", uuid.toString()); - extension.setValue("table", Base64.encodeObject(table, Base64.GZIP)); + extension.setValue("old_hand", + Base64.encodeObject(oldHand, Base64.GZIP)); + extension.setValue("old_table", + Base64.encodeObject(oldTable, Base64.GZIP)); + extension.setValue("new_table", + Base64.encodeObject(newTable, Base64.GZIP)); } }); } @@ -438,8 +447,10 @@ public class ConnectionControl implements IConnectionControl { tableUpdateEvent.emit((ITable) Base64.decodeToObject(extension .getValue("table"))); } else if (messageType.equals("turn_end")) { - turnEndEvent.emit((ITable) Base64.decodeToObject(extension - .getValue("table"))); + turnEndEvent.emit( + (IHand) Base64.decodeToObject(extension.getValue("old_hand")), + (ITable) Base64.decodeToObject(extension.getValue("old_table")), + (ITable) Base64.decodeToObject(extension.getValue("new_table"))); } else if (messageType.equals("turn_start")) { turnStartEvent.emit((IRoundState) Base64.decodeToObject(extension .getValue("state"))); -- cgit v1.2.3