Merge remote-tracking branch 'origin/development' into development

This commit is contained in:
Fleischer Hanno
2024-12-02 03:03:47 +01:00
17 changed files with 390 additions and 351 deletions

View File

@@ -190,6 +190,9 @@ public void received(ServerStartGameMessage msg) {
state.received(msg);
}
@Override
public void received(ShutdownMessage msg) {state.received(msg);}
@Override
public void received(StartPieceMessage msg) {
state.received(msg);

View File

@@ -150,6 +150,9 @@ public void received(ServerStartGameMessage msg) {
LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
}
@Override
public void received(ShutdownMessage msg) {LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);}
@Override
public void received(StartPieceMessage msg) {
LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);

View File

@@ -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);
}

View File

@@ -0,0 +1,30 @@
package pp.mdga.message.server;
import com.jme3.network.serializing.Serializable;
/**
* A message sent by the server to inform the clients that the server is shutting down.
*/
@Serializable
public class ShutdownMessage extends ServerMessage {
/**
* Accepts a visitor to process this message.
*
* @param interpreter the visitor to process this message
*/
@Override
public void accept(ServerInterpreter interpreter) {
interpreter.received(this);
}
/**
* Gets the bundle key of the informational text to be shown at the client.
* This key is used to retrieve the appropriate localized text for display.
*
* @return the bundle key of the informational text
*/
@Override
public String getInfoTextKey() {
return "";
}
}

View File

@@ -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);

View File

@@ -4,6 +4,7 @@
import pp.mdga.message.client.RequestDieMessage;
import pp.mdga.message.server.ActivePlayerMessage;
import pp.mdga.message.server.DieMessage;
import pp.mdga.message.server.EndOfTurnMessage;
import pp.mdga.server.ServerGameLogic;
import pp.mdga.server.automaton.GameState;
@@ -69,6 +70,7 @@ public void received(RequestDieMessage msg, int from) {
maximumRoll = entry.getValue();
} else {
this.playersHaveToRoll.remove(entry.getKey());
this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage());
}
}