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.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/jrummikub/control/network/ConnectionControl.java b/src/jrummikub/control/network/ConnectionControl.java
index 4ed160a..c63259d 100644
--- a/src/jrummikub/control/network/ConnectionControl.java
+++ b/src/jrummikub/control/network/ConnectionControl.java
@@ -85,9 +85,11 @@ public class ConnectionControl implements IConnectionControl {
private Event gameStartEvent = new Event();
private Event roundStartEvent = new Event();
+ private Event1<IRoundState> roundStateUpdateEvent = new Event1<IRoundState>();
private Event1<ITable> tableUpdateEvent = new Event1<ITable>();
private Event2<IRoundState, InvalidTurnInfo> turnEndEvent = new Event2<IRoundState, InvalidTurnInfo>();
+ private Event nextPlayerEvent = new Event();
private Event turnStartEvent = new Event();
private GameData currentGame;
@@ -182,6 +184,11 @@ public class ConnectionControl implements IConnectionControl {
}
@Override
+ public IEvent1<IRoundState> getRoundStateUpdateEvent() {
+ return roundStateUpdateEvent;
+ }
+
+ @Override
public IEvent1<ITable> getTableUpdateEvent() {
return tableUpdateEvent;
}
@@ -192,6 +199,11 @@ public class ConnectionControl implements IConnectionControl {
}
@Override
+ public IEvent getNextPlayerEvent() {
+ return nextPlayerEvent;
+ }
+
+ @Override
public IEvent getTurnStartEvent() {
return turnStartEvent;
}
@@ -313,6 +325,20 @@ public class ConnectionControl implements IConnectionControl {
}
@Override
+ public void updateRoundState(final IRoundState roundState) {
+ final UUID uuid = currentGame.getGameID();
+ run(new SendRunner() {
+ @Override
+ protected void addData(DefaultPacketExtension extension) {
+ extension.setValue("messageType", "round_state_update");
+ extension.setValue("uuid", uuid.toString());
+ extension.setValue("state",
+ Base64.encodeObject(roundState, Base64.GZIP));
+ }
+ });
+ }
+
+ @Override
public void updateTable(final ITable table) {
final UUID uuid = currentGame.getGameID();
run(new SendRunner() {
@@ -341,6 +367,18 @@ public class ConnectionControl implements IConnectionControl {
}
@Override
+ public void nextPlayer() {
+ final UUID uuid = currentGame.getGameID();
+ run(new SendRunner() {
+ @Override
+ protected void addData(DefaultPacketExtension extension) {
+ extension.setValue("messageType", "next_player");
+ extension.setValue("uuid", uuid.toString());
+ }
+ });
+ }
+
+ @Override
public void startTurn() {
final UUID uuid = currentGame.getGameID();
run(new SendRunner() {
@@ -459,6 +497,9 @@ public class ConnectionControl implements IConnectionControl {
gameStartEvent.emit();
} else if (messageType.equals("round_start")) {
roundStartEvent.emit();
+ } else if (messageType.equals("round_state_update")) {
+ roundStateUpdateEvent.emit((IRoundState) Base64.decodeToObject(extension
+ .getValue("state")));
} else if (messageType.equals("table_update")) {
tableUpdateEvent.emit((ITable) Base64.decodeToObject(extension
.getValue("table")));
@@ -466,6 +507,8 @@ public class ConnectionControl implements IConnectionControl {
TurnEndData data = (TurnEndData) Base64.decodeToObject(extension
.getValue("data"));
turnEndEvent.emit(data.getRoundState(), data.getInvalidTurnInfo());
+ } else if (messageType.equals("next_player")) {
+ nextPlayerEvent.emit();
} else if (messageType.equals("turn_start")) {
turnStartEvent.emit();
} else {