added better network support and disconnecting doesnt clos the client who hosts the server now

This commit is contained in:
Hanno Fleischer
2024-12-11 19:10:46 +01:00
parent f09766eb42
commit f9772732c4
9 changed files with 83 additions and 47 deletions

View File

@@ -1,8 +1,12 @@
package pp.mdga.client;
import pp.mdga.Resources;
import pp.mdga.client.ceremonystate.CeremonyStates;
import pp.mdga.client.ceremonystate.PodiumState;
import pp.mdga.client.ceremonystate.StatisticsState;
import pp.mdga.message.server.ShutdownMessage;
import pp.mdga.notification.InfoNotification;
import pp.mdga.notification.StartDialogNotification;
public class CeremonyState extends ClientState {
@@ -77,6 +81,11 @@ public CeremonyStates getState() {
return currentState;
}
@Override
public void received(ShutdownMessage msg){
logic.addNotification(new InfoNotification(Resources.stringLookup("server.shutdown")));
}
/**
* this method is used to parse the selectNext from the clientGameLogic
*/

View File

@@ -401,9 +401,7 @@ public void received(ServerStartGameMessage msg) {
*/
@Override
public void received(ShutdownMessage msg) {
addNotification(new InfoNotification(Resources.stringLookup("server.shutdown")));
addNotification(new StartDialogNotification());
setState(dialogsState);
state.received(msg);
}
/**

View File

@@ -1,9 +1,12 @@
package pp.mdga.client;
import pp.mdga.Resources;
import pp.mdga.game.BonusCard;
import pp.mdga.game.Color;
import pp.mdga.game.Piece;
import pp.mdga.message.server.*;
import pp.mdga.notification.InfoNotification;
import pp.mdga.notification.StartDialogNotification;
import java.lang.System.Logger.Level;
@@ -161,7 +164,9 @@ public void received(ServerStartGameMessage msg) {
@Override
public void received(ShutdownMessage msg) {
LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg.toString());
logic.addNotification(new InfoNotification(Resources.stringLookup("server.shutdown")));
logic.addNotification(new StartDialogNotification());
logic.setState(logic.getDialogs());
}
@Override

View File

@@ -141,11 +141,9 @@ public void received(LobbyPlayerJoinedMessage msg) {
System.out.println(msg.getId());
logic.setOwnPlayerId(msg.getId());
}
if (msg.isHost() && msg.getId() == logic.getOwnPlayerId()) {
logic.setHost(true);
if (msg.getPlayer().getColor() != Color.NONE){
logic.addNotification(new TskSelectNotification(msg.getPlayer().getColor(), msg.getPlayer().getName(), msg.getPlayer().getName().equals(logic.getOwnPlayerName())));
}
logic.addNotification(new TskSelectNotification(msg.getPlayer().getColor(), msg.getPlayer().getName(), msg.getPlayer().getName().equals(logic.getOwnPlayerName())));
logic.getGame().getPlayers().put(msg.getId(), msg.getPlayer());
}

View File

@@ -2,6 +2,7 @@
import pp.mdga.game.Color;
import pp.mdga.message.server.CeremonyMessage;
import pp.mdga.message.server.ShutdownMessage;
import pp.mdga.server.ServerGameLogic;
/**
@@ -59,6 +60,7 @@ private CeremonyMessage createCeremonyMessage() {
public void enter() {
LOGGER.log(System.Logger.Level.DEBUG, "Entered CeremonyState state.");
logic.getServerSender().broadcast(createCeremonyMessage());
logic.getServerSender().shutdown();
}
/**

View File

@@ -86,9 +86,9 @@ public void received(LeaveGameMessage msg, int from) {
this.logic.getServerSender().broadcast(new ShutdownMessage());
this.logic.getServerSender().shutdown();
}
this.logic.getServerSender().disconnectClient(from);
this.logic.getGame().removePlayer(from);
this.logic.getServerSender().broadcast(new LobbyPlayerLeaveMessage(from));
this.logic.getServerSender().disconnectClient(from);
}
/**