summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/network/ConnectionControl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/network/ConnectionControl.java')
-rw-r--r--src/jrummikub/control/network/ConnectionControl.java23
1 files changed, 17 insertions, 6 deletions
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<ITable> tableUpdateEvent = new Event1<ITable>();
- private Event1<ITable> turnEndEvent = new Event1<ITable>();
+ private Event3<IHand, ITable, ITable> turnEndEvent = new Event3<IHand, ITable, ITable>();
private Event1<IRoundState> turnStartEvent = new Event1<IRoundState>();
private GameData currentGame;
@@ -163,7 +166,7 @@ public class ConnectionControl implements IConnectionControl {
}
@Override
- public IEvent1<ITable> getTurnEndEvent() {
+ public IEvent3<IHand, ITable, ITable> 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")));