diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Ceremony.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Ceremony.java new file mode 100644 index 00000000..8e00391d --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Ceremony.java @@ -0,0 +1,10 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; +import pp.mdga.message.server.ServerState; + +public class Ceremony extends ServerState { + public Ceremony(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePiece.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePiece.java new file mode 100644 index 00000000..21bee23d --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePiece.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class ChoosePiece extends Turn { + public ChoosePiece(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/DetermineStartPlayer.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/DetermineStartPlayer.java new file mode 100644 index 00000000..df8bf459 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/DetermineStartPlayer.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class DetermineStartPlayer extends Game { + public DetermineStartPlayer(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/FirstRoll.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/FirstRoll.java new file mode 100644 index 00000000..b993534d --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/FirstRoll.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class FirstRoll extends RollDice { + public FirstRoll(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Game.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Game.java new file mode 100644 index 00000000..773570ed --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Game.java @@ -0,0 +1,10 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; +import pp.mdga.message.server.ServerState; + +public class Game extends ServerState { + public Game(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Interrupt.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Interrupt.java new file mode 100644 index 00000000..37ce2bde --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Interrupt.java @@ -0,0 +1,10 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; +import pp.mdga.message.server.ServerState; + +public class Interrupt extends ServerState { + public Interrupt(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Lobby.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Lobby.java new file mode 100644 index 00000000..d6b97b9a --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Lobby.java @@ -0,0 +1,17 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; +import pp.mdga.message.server.ServerState; + +public class Lobby extends ServerState { + + + /** + * Constructs a server state of the specified game logic. + * + * @param logic the game logic + */ + public Lobby(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/MovePiece.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/MovePiece.java new file mode 100644 index 00000000..14db9e6c --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/MovePiece.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class MovePiece extends Turn { + public MovePiece(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/NoPiece.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/NoPiece.java new file mode 100644 index 00000000..3953272e --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/NoPiece.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class NoPiece extends ChoosePiece { + public NoPiece(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/NoTurn.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/NoTurn.java new file mode 100644 index 00000000..8be6ffc4 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/NoTurn.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class NoTurn extends ChoosePiece { + public NoTurn(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/PowerCard.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/PowerCard.java new file mode 100644 index 00000000..e8af5bb8 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/PowerCard.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class PowerCard extends Turn { + public PowerCard(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDice.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDice.java new file mode 100644 index 00000000..f38ee1fb --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDice.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class RollDice extends Turn { + public RollDice(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/SecondRoll.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/SecondRoll.java new file mode 100644 index 00000000..e4f69e46 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/SecondRoll.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class SecondRoll extends RollDice { + public SecondRoll(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/SelectPiece.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/SelectPiece.java new file mode 100644 index 00000000..e5ddb601 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/SelectPiece.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class SelectPiece extends ChoosePiece { + public SelectPiece(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerGameLogic.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerGameLogic.java new file mode 100644 index 00000000..4b1b3c92 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerGameLogic.java @@ -0,0 +1,133 @@ +package pp.mdga.message.server; + +import com.jme3.network.Server; +import pp.mdga.game.Game; +import pp.mdga.message.client.*; +import pp.mdga.message.server.ServerSender; +import pp.mdga.message.server.ServerState; +import pp.mdga.server.Lobby; + +import java.lang.System.Logger; +import java.lang.System.Logger.Level; +import java.util.ArrayList; + +public class ServerGameLogic implements ClientInterpreter { + private static final Logger LOGGER = System.getLogger(ServerGameLogic.class.getName()); + + private final ServerSender serverSender; + + private final Game game; + + private final ServerState state; + + private final ServerState lobby = new Lobby(this); + private final ServerState game = new Game(this); + private final ServerState interrupt = new Interrupt(this); + private final ServerState ceremony = new Ceremony(this); + private final ServerState turn = new Turn(this); + private final ServerState determineStartPlayer = new DetermineStartPlayer(this); + private final ServerState rollDice = new RollDice(this); + private final ServerState powerCard = new PowerCard(this); + private final ServerState movePiece = new MovePiece(this); + private final ServerState choosePiece = new ChoosePiece(this); + private final ServerState firstRoll = new FirstRoll(this); + private final ServerState secondRoll = new SecondRoll(this); + private final ServerState thirdRoll = new ThirdRoll(this); + private final ServerState noPiece = new NoPiece(this); + private final ServerState noTurn = new NoTurn(this); + private final ServerState waitingPiece = new WaitingPiece(this); + private final ServerState startPiece = new StartPiece(this); + private final ServerState selectPiece = new SelectPiece(this); + + public ServerGameLogic(ServerSender serverSender, Game game) { + this.serverSender = serverSender; + this.game = game; + this.state = lobby; + } + + + @Override + public void received(AnimationEnd msg, int from) { + + } + + @Override + public void received(DeselectTSK msg, int from) { + + } + + @Override + public void received(ForceStartGame msg, int from) { + + } + + @Override + public void received(JoinServer msg, int from) { + + } + + @Override + public void received(LeaveGame msg, int from) { + + } + + @Override + public void received(LobbyNotReady msg, int from) { + + } + + @Override + public void received(LobbyReady msg, int from) { + + } + + @Override + public void received(RequestBriefing msg, int from) { + + } + + @Override + public void received(RequestDice msg, int from) { + + } + + @Override + public void received(RequestMove msg, int from) { + + } + + @Override + public void received(RequestPlayCard msg, int from) { + + } + + @Override + public void received(SelectCard msg, int from) { + + } + + @Override + public void received(SelectTSK msg, int from) { + + } + + @Override + public void received(ForceContinueGame msg, int from) { + + } + + @Override + public void received(ClientStartGame msg, int from) { + + } + + @Override + public void received(NoPowerCard msg, int from) { + + } + + @Override + public void received(SelectedPieces msg, int from) { + + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerSender.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerSender.java new file mode 100644 index 00000000..8e104226 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerSender.java @@ -0,0 +1,16 @@ +package pp.mdga.message.server; + +import pp.mdga.message.server.ServerMessage; + +/** + * Interface for sending messages to a client. + */ +public interface ServerSender { + /** + * Send the specified message to the client. + * + * @param id the id of the client that shall receive the message + * @param message the message + */ + void send(int id, ServerMessage message); +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerState.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerState.java new file mode 100644 index 00000000..8c6cbded --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerState.java @@ -0,0 +1,28 @@ +package pp.mdga.message.server; + +import pp.mdga.game.Game; +import pp.mdga.message.server.ServerGameLogic; + +/** + * Defines the behavior and state transitions for the server-side game logic. + * Different states of the game logic implement this interface to handle various game events and actions. + */ +public class ServerState { + /** + * The server logic object. + */ + private final ServerGameLogic logic; + + /** + * Constructs a server state of the specified game logic. + * + * @param logic the game logic + */ + public ServerState(ServerGameLogic logic) { + this.logic = logic; + } + + + + +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/StartPiece.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/StartPiece.java new file mode 100644 index 00000000..f6ad7a2a --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/StartPiece.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class StartPiece extends ChoosePiece { + public StartPiece(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ThirdRoll.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ThirdRoll.java new file mode 100644 index 00000000..80863ef7 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ThirdRoll.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class ThirdRoll extends RollDice { + public ThirdRoll(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Turn.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Turn.java new file mode 100644 index 00000000..ecbbde39 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Turn.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class Turn extends Game { + public Turn(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/WaitingPiece.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/WaitingPiece.java new file mode 100644 index 00000000..a3d665d0 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/WaitingPiece.java @@ -0,0 +1,9 @@ +package pp.mdga.server; + +import pp.mdga.message.server.ServerGameLogic; + +public class WaitingPiece extends ChoosePiece { + public WaitingPiece(ServerGameLogic logic) { + super(logic); + } +}