diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java index 084a5df4..24ee09db 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java @@ -130,6 +130,7 @@ private void initializeSerializables() { Serializer.registerClass(ReconnectBriefingMessage.class); Serializer.registerClass(ResumeGameMessage.class); Serializer.registerClass(ServerStartGameMessage.class); + Serializer.registerClass(ShutdownMessage.class); Serializer.registerClass(StartPieceMessage.class); Serializer.registerClass(UpdateReadyMessage.class); Serializer.registerClass(UpdateTSKMessage.class); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java index d7e7487c..1ed24edf 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java @@ -207,4 +207,11 @@ public interface ServerInterpreter { * @param msg the SelectPiece message received. */ void received(SelectPieceMessage msg); + + /** + * Handles a SelectTSK message received from the server. + * + * @param shutdownMessage the SelectTSK message received. + */ + void received(ShutdownMessage shutdownMessage); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java index 6d72dcc5..2a4eba34 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java @@ -148,6 +148,9 @@ public void received(LobbyNotReadyMessage msg, int from) { */ @Override public void received(LeaveGameMessage msg, int from) { + if (from == this.logic.getGame().getHost()) { + this.logic.getServerSender().broadcast(new ShutdownMessage()); + } this.logic.getGame().removePlayer(from); this.logic.getServerSender().broadcast(new LobbyPlayerLeaveMessage(from)); this.logic.getServerSender().disconnectClient(from);