diff options
Diffstat (limited to 'src/jrummikub/control/network/ConnectionControl.java')
-rw-r--r-- | src/jrummikub/control/network/ConnectionControl.java | 43 |
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 { |