added more logic for the server state diagram
This commit is contained in:
@@ -1,52 +1,74 @@
|
||||
package pp.mdga.server;
|
||||
|
||||
import pp.mdga.message.client.*;
|
||||
import pp.mdga.message.server.ServerMessage;
|
||||
import pp.mdga.message.server.ServerStartGame;
|
||||
import pp.mdga.message.server.UpdateReady;
|
||||
import pp.mdga.message.server.UpdateTSK;
|
||||
|
||||
/**
|
||||
* Represents the lobby state of the server.
|
||||
*/
|
||||
public class Lobby extends ServerState {
|
||||
/**
|
||||
* Constructs a new Lobby state.
|
||||
*
|
||||
* @param parent the parent state
|
||||
* @param logic the server game logic
|
||||
*/
|
||||
public Lobby(ServerState parent, ServerGameLogic logic) {
|
||||
super(parent, logic);
|
||||
logic.getGame().addObserver(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the DeselectTSK message.
|
||||
*
|
||||
* @param msg the DeselectTSK message
|
||||
*/
|
||||
@Override
|
||||
public void receivedDeselectTSK(DeselectTSK msg) {
|
||||
public void receivedDeselectTSK(DeselectTSK msg, int from) {
|
||||
broadcastUpdate(new UpdateTSK());
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the LobbyNotReady message.
|
||||
*
|
||||
* @param msg the LobbyNotReady message
|
||||
*/
|
||||
@Override
|
||||
public void receivedNotReady(LobbyNotReady msg) {
|
||||
public void receivedNotReady(LobbyNotReady msg, int from) {
|
||||
broadcastUpdate(new UpdateReady());
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the LobbyReady message.
|
||||
*
|
||||
* @param msg the LobbyReady message
|
||||
*/
|
||||
@Override
|
||||
public void receivedReady(LobbyReady msg) {
|
||||
public void receivedReady(LobbyReady msg, int from) {
|
||||
broadcastUpdate(new UpdateReady());
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the SelectTSK message.
|
||||
*
|
||||
* @param msg the SelectTSK message
|
||||
*/
|
||||
@Override
|
||||
public void receivedSelectTSK(SelectTSK msg) {
|
||||
public void receivedSelectTSK(SelectTSK msg, int from) {
|
||||
broadcastUpdate(new UpdateTSK());
|
||||
}
|
||||
|
||||
private void broadcastUpdate(ServerMessage updateMessage) {
|
||||
for (var entry : logic.getGame().getPlayers().entrySet()) {
|
||||
logic.send(entry.getValue(), updateMessage);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the ClientStartGame message.
|
||||
*
|
||||
* @param msg the ClientStartGame message
|
||||
*/
|
||||
@Override
|
||||
public void receivedStartGame(ClientStartGame msg) {
|
||||
// todo: implement??
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
if (logic.getGame().getGameHasStarted()) {
|
||||
public void receivedStartGame(ClientStartGame msg, int from) {
|
||||
if (Boolean.TRUE.equals(logic.getGame().allRanked())) {
|
||||
broadcastUpdate(new ServerStartGame());
|
||||
parent.gotoState(new GameState(parent, logic));
|
||||
logic.getGame().removeObserver(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user