diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSyncronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSyncronizer.java index 63271e5e..51f1af97 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSyncronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSyncronizer.java @@ -11,8 +11,8 @@ public class InputSyncronizer { private InputManager inputManager; protected boolean rightMousePressed = false; - private float rotationAngle = 0f; - private int scrollValue = 50; + private float rotationAngle = 180f; + private int scrollValue = 0; InputSyncronizer(MdgaApp app) { this.app = app; @@ -22,11 +22,6 @@ public class InputSyncronizer { setupInput(); } - public void update() { - rotateModel(); - updateScrollValue(); - } - private void setupInput() { inputManager.addMapping("Settings", new KeyTrigger(KeyInput.KEY_ESCAPE)); @@ -57,25 +52,21 @@ public void onAction(String name, boolean isPressed, float tpf) { public void onAnalog(String name, float value, float tpf) { if (name.equals("MouseLeft") && rightMousePressed) { rotationAngle -= value * 360f; - rotateModel(); } else if (name.equals("MouseRight") && rightMousePressed) { rotationAngle += value * 360f; - rotateModel(); } else if (name.equals("MouseScrollUp")) { - scrollValue = Math.min(100, scrollValue + 1); - updateScrollValue(); + scrollValue = Math.max(1, scrollValue - 5); } else if (name.equals("MouseScrollDown")) { - scrollValue = Math.max(1, scrollValue - 1); - updateScrollValue(); + scrollValue = Math.min(100, scrollValue + 5); } } }; - private void rotateModel() { - //System.out.println("Rotation Angle: " + rotationAngle); + public float getRotation() { + return (rotationAngle / 2) % 360; } - private void updateScrollValue() { - //System.out.println("Scroll Value: " + scrollValue); + public int getScroll() { + return scrollValue; } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java index 2f2e1638..25319ac4 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaApp.java @@ -17,7 +17,7 @@ public class MdgaApp extends SimpleApplication { MdgaView view = null; private MdgaState state = MdgaState.MAIN; - private static float resolutionFactor = 1f; + private static float resolutionFactor = 1.8f; public static void main(String[] args) { AppSettings settings = new AppSettings(true); @@ -47,6 +47,10 @@ public void simpleInitApp() { modelSyncronizer = new ModelSyncronizer(this); inputManager.deleteMapping("SIMPLEAPP_Exit"); + inputManager.deleteMapping("FLYCAM_ZoomIn"); + inputManager.deleteMapping("FLYCAM_ZoomOut"); + inputManager.deleteMapping("FLYCAM_RotateDrag"); + flyCam.setEnabled(false); GuiGlobals.initialize(this); enter(state); @@ -54,7 +58,6 @@ public void simpleInitApp() { @Override public void simpleUpdate(float tpf) { - inputSyncronizer.update(); view.update(); acousticHandler.update(); notificationSynchronizer.update(); @@ -114,4 +117,6 @@ public MdgaView getView() { public ModelSyncronizer getModelSyncronizer() { return modelSyncronizer; } + + public InputSyncronizer getInputSyncronizer() { return inputSyncronizer; } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaState.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaState.java index 58414b23..74b4f91a 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaState.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/MdgaState.java @@ -1,9 +1,5 @@ package pp.mdga.client; -import pp.mdga.notification.Notification; -import pp.mdga.notification.PieceInGameNotification; -import pp.mdga.notification.PlayerInGameNotification; - public enum MdgaState { NONE, MAIN, diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java index 76767434..44a6c726 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java @@ -2,7 +2,6 @@ import pp.mdga.client.view.GameView; import pp.mdga.client.view.LobbyView; -import pp.mdga.notification.*; import java.util.ArrayList; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/CameraHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/CameraHandler.java index ba4ab0d6..76898d6d 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/CameraHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/CameraHandler.java @@ -3,6 +3,7 @@ import com.jme3.light.AmbientLight; import com.jme3.light.DirectionalLight; import com.jme3.math.ColorRGBA; +import com.jme3.math.FastMath; import com.jme3.math.Vector3f; import com.jme3.post.FilterPostProcessor; import com.jme3.shadow.DirectionalLightShadowFilter; @@ -32,11 +33,6 @@ public CameraHandler(MdgaApp app, FilterPostProcessor fpp){ } public void init() { - app.getFlyByCamera().setEnabled(true); - int zoom = 20; - app.getCamera().setLocation(new Vector3f(-zoom, 0, zoom)); - app.getCamera().lookAt(new Vector3f(0, 0, 0), new Vector3f(0, 0, 1)); - app.getRootNode().addLight(sun); app.getRootNode().addLight(ambient); } @@ -45,4 +41,37 @@ public void shutdown() { app.getRootNode().removeLight(sun); app.getRootNode().removeLight(ambient); } + + public void update(float scroll, float rotation) { + float scrollValue = Math.max(0, Math.min(scroll, 100)); + + float rotationValue = rotation % 360; + if (rotationValue < 0) { + rotationValue += 360; + } + + float radius; + + float verticalAngle; + if (scroll < 100f) { + verticalAngle = 20f + (scrollValue / 100f) * 45f; + radius = 30f; + } else { + verticalAngle = 90f; + rotationValue = 270f; + radius = 50f; + } + + float verticalAngleRadians = FastMath.DEG_TO_RAD * verticalAngle; + + float z = radius * FastMath.sin(verticalAngleRadians); + float x = radius * FastMath.cos(verticalAngleRadians) * FastMath.sin(FastMath.DEG_TO_RAD * rotationValue); + float y = radius * FastMath.cos(verticalAngleRadians) * FastMath.cos(FastMath.DEG_TO_RAD * rotationValue); + + Vector3f cameraPosition = new Vector3f(x, y, z); + app.getCamera().setLocation(cameraPosition); + + app.getCamera().lookAt(Vector3f.ZERO, Vector3f.UNIT_Z); + } + } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java index e54a97c8..993e71d8 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/Outline/SelectObjectOutliner.java @@ -1,18 +1,12 @@ package pp.mdga.client.board.Outline; import com.jme3.asset.AssetManager; -import com.jme3.material.Material; -import com.jme3.material.RenderState; -import com.jme3.material.RenderState.BlendMode; import com.jme3.math.ColorRGBA; -import com.jme3.post.Filter; import com.jme3.post.FilterPostProcessor; import com.jme3.renderer.Camera; import com.jme3.renderer.RenderManager; import com.jme3.renderer.ViewPort; -import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import pp.mdga.game.Color; public class SelectObjectOutliner { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/GetPercentRunnable.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/GetPercentRunnable.java new file mode 100644 index 00000000..d50a5450 --- /dev/null +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/GetPercentRunnable.java @@ -0,0 +1,15 @@ +package pp.mdga.client.dialog; + +import java.util.function.Supplier; + +public class GetPercentRunnable { + private final Supplier action; + + public GetPercentRunnable(Supplier action) { + this.action = action; + } + + public float get() { + return action.get(); + } +} diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java index 4d7ff73c..b36ffef9 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java @@ -26,7 +26,7 @@ public HostDialog(MdgaApp app, Node node, Runnable backAction) { Panel imagePanel = new Panel(); imagePanel.setBackground(b); - container.addChild(imagePanel).setPreferredSize(new Vector3f(texture.getImage().getWidth() / 4, texture.getImage().getHeight() / 4, 0)); + container.addChild(imagePanel).setPreferredSize(new Vector3f(texture.getImage().getWidth() / 4 * app.getResolutionFactor(), texture.getImage().getHeight() / 4 * app.getResolutionFactor(), 0)); //abstandshalter container.addChild(new Panel(100 * app.getResolutionFactor(), 50 * app.getResolutionFactor(), ColorRGBA.Gray)); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java index 1e23cb24..dc1b817b 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java @@ -29,7 +29,7 @@ public JoinDialog(MdgaApp app, Node node, Runnable backAction) { Panel imagePanel = new Panel(); imagePanel.setBackground(b); - container.addChild(imagePanel).setPreferredSize(new Vector3f(texture.getImage().getWidth() / 4, texture.getImage().getHeight() / 4, 0)); + container.addChild(imagePanel).setPreferredSize(new Vector3f(texture.getImage().getWidth() / 4 * app.getResolutionFactor(), texture.getImage().getHeight() / 4 * app.getResolutionFactor(), 0)); //abstandshalter container.addChild(new Panel(100 * app.getResolutionFactor(), 50 * app.getResolutionFactor(), ColorRGBA.Gray)); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java index 4364d3ee..acb766b9 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java @@ -21,6 +21,7 @@ public class SettingsDialog extends Dialog { private TextField nameInput; private HashMap map = new HashMap(); + private HashMap map2 = new HashMap(); public SettingsDialog(MdgaApp app, Node node, String path) { super(app, node); @@ -62,7 +63,7 @@ public void addButton(String label, Runnable action, Vector3f size) { createButton(label, action, size); } - public void addSlider(String label, PercentRunnable action, Vector3f size, int start) { + public void addSlider(String label, PercentRunnable action, GetPercentRunnable action2, Vector3f size, int start) { Container subContainer = new Container(new SpringGridLayout(Axis.X, Axis.Y)); Slider slider = new Slider("slider"); @@ -71,7 +72,7 @@ public void addSlider(String label, PercentRunnable action, Vector3f size, int s slider.setBackground(background); slider.setPreferredSize(size); - slider.setModel(new DefaultRangedValueModel(0, 10, start)); + slider.setModel(new DefaultRangedValueModel(0, 100, start)); slider.setPreferredSize(new Vector3f(150 * app.getResolutionFactor(), 30 * app.getResolutionFactor(), 0)); slider.getDecrementButton().setText(" - "); slider.getIncrementButton().setText(" + "); @@ -89,11 +90,19 @@ public void addSlider(String label, PercentRunnable action, Vector3f size, int s container.addChild(subContainer); map.put(slider, action); + map2.put(slider, action2); //abstandshalter container.addChild(new Panel(20 * app.getResolutionFactor(), 10 * app.getResolutionFactor(), ColorRGBA.Gray)); } + public void initVolume() { + map2.forEach((slider, runnable) -> { + double val = (double) runnable.get(); + slider.getModel().setPercent(val); + }); + } + public void update() { map.forEach((slider, runnable) -> { float val = (float) slider.getModel().getPercent(); 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 new file mode 100644 index 00000000..a128bb82 --- /dev/null +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java @@ -0,0 +1,209 @@ +package pp.mdga.client.server; + +import com.jme3.network.ConnectionListener; +import com.jme3.network.HostedConnection; +import com.jme3.network.Message; +import com.jme3.network.MessageListener; +import com.jme3.network.Network; +import com.jme3.network.Server; +import com.jme3.network.serializing.Serializer; +import pp.mdga.game.Game; +import pp.mdga.game.Player; +import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.ServerSender; + +import java.io.FileInputStream; +import java.io.IOException; +import java.lang.System.Logger; +import java.lang.System.Logger.Level; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.logging.LogManager; + +/** + * Server implementing the visitor pattern as MessageReceiver for ClientMessages + */ +public class MdgaServer implements MessageListener, ConnectionListener, ServerSender { + private static final Logger LOGGER = System.getLogger(MdgaServer.class.getName()); + + private Server myServer; + private final ServerGameLogic logic; + private final BlockingQueue pendingMessages = new LinkedBlockingQueue<>(); + + static { + // Configure logging + LogManager manager = LogManager.getLogManager(); + try { + manager.readConfiguration(new FileInputStream("logging.properties")); + LOGGER.log(Level.INFO, "Successfully read logging properties"); //NON-NLS + } catch (IOException e) { + LOGGER.log(Level.INFO, e.getMessage()); + } + } + + /** + * Starts the Battleships server. + */ + public static void main(String[] args) { + new MdgaServer().run(); + } + + /** + * Creates a new MdgaServer. + */ + public MdgaServer() { + LOGGER.log(Level.INFO, "Creating MdgaServer"); //NON-NLS + logic = new ServerGameLogic(new Game(), this); + } + + public void run() { + startServer(); + this.connectionAdded(myServer, myServer.getConnection(0)); + while (true) + processNextMessage(); + } + + private void startServer() { + try { + LOGGER.log(Level.INFO, "Starting server..."); //NON-NLS + myServer = Network.createServer(1234); + + initializeSerializables(); + myServer.start(); + registerListeners(); + LOGGER.log(Level.INFO, "Server started: {0}", myServer.isRunning()); //NON-NLS + } catch (IOException e) { + LOGGER.log(Level.ERROR, "Couldn't start server: {0}", e.getMessage()); //NON-NLS + exit(1); + } + } + + private void processNextMessage() { + try { + pendingMessages.take().process(logic); + } catch (InterruptedException ex) { + LOGGER.log(Level.INFO, "Interrupted while waiting for messages"); //NON-NLS + Thread.currentThread().interrupt(); + } + } + + private void initializeSerializables() { + Serializer.registerClass(AnimationEnd.class); + Serializer.registerClass(ClientStartGame.class); + Serializer.registerClass(DeselectTSK.class); + Serializer.registerClass(ForceContinueGame.class); + Serializer.registerClass(ForceStartGame.class); + Serializer.registerClass(JoinServer.class); + Serializer.registerClass(LeaveGame.class); + Serializer.registerClass(LobbyNotReady.class); + Serializer.registerClass(LobbyReady.class); + Serializer.registerClass(NoPowerCard.class); + Serializer.registerClass(RequestBriefing.class); + Serializer.registerClass(RequestDice.class); + Serializer.registerClass(RequestMove.class); + Serializer.registerClass(RequestPlayCard.class); + Serializer.registerClass(SelectCard.class); + Serializer.registerClass(SelectedPieces.class); + Serializer.registerClass(SelectTSK.class); + + Serializer.registerClass(ActivePlayer.class); + Serializer.registerClass(AnyPiece.class); + Serializer.registerClass(Briefing.class); + Serializer.registerClass(CeremonyMessage.class); + Serializer.registerClass(Dice.class); + Serializer.registerClass(DiceAgain.class); + Serializer.registerClass(DiceNow.class); + Serializer.registerClass(EndOfTurn.class); + Serializer.registerClass(LobbyAccept.class); + Serializer.registerClass(LobbyDeny.class); + Serializer.registerClass(LobbyPlayerJoin.class); + Serializer.registerClass(LobbyPlayerLeave.class); + Serializer.registerClass(MoveMessage.class); + Serializer.registerClass(NoTurn.class); + Serializer.registerClass(PauseGame.class); + Serializer.registerClass(PlayCard.class); + Serializer.registerClass(PossibleCard.class); + Serializer.registerClass(PossiblePiece.class); + Serializer.registerClass(RankingResponse.class); + Serializer.registerClass(RankingRollAgain.class); + Serializer.registerClass(ReconnectBriefing.class); + Serializer.registerClass(ResumeGame.class); + Serializer.registerClass(ServerStartGame.class); + Serializer.registerClass(StartPiece.class); + Serializer.registerClass(UpdateReady.class); + Serializer.registerClass(UpdateTSK.class); + Serializer.registerClass(WaitPiece.class); + } + + private void registerListeners() { + myServer.addMessageListener(this, AnimationEnd.class); + myServer.addMessageListener(this, ClientStartGame.class); + myServer.addMessageListener(this, DeselectTSK.class); + myServer.addMessageListener(this, ForceContinueGame.class); + myServer.addMessageListener(this, ForceStartGame.class); + myServer.addMessageListener(this, JoinServer.class); + myServer.addMessageListener(this, LeaveGame.class); + myServer.addMessageListener(this, LobbyNotReady.class); + myServer.addMessageListener(this, LobbyReady.class); + myServer.addMessageListener(this, NoPowerCard.class); + myServer.addMessageListener(this, RequestBriefing.class); + myServer.addMessageListener(this, RequestDice.class); + myServer.addMessageListener(this, RequestMove.class); + myServer.addMessageListener(this, RequestPlayCard.class); + myServer.addMessageListener(this, SelectCard.class); + myServer.addMessageListener(this, SelectedPieces.class); + myServer.addMessageListener(this, SelectTSK.class); + myServer.addConnectionListener(this); + } + + @Override + public void messageReceived(HostedConnection source, Message message) { + LOGGER.log(Level.INFO, "message received from {0}: {1}", source.getId(), message); //NON-NLS + if (message instanceof ClientMessage clientMessage) + pendingMessages.add(new ReceivedMessage(clientMessage, source.getId())); + } + + @Override + public void connectionAdded(Server server, HostedConnection hostedConnection) { + LOGGER.log(Level.INFO, "new connection {0}", hostedConnection); //NON-NLS + logic.addPlayer(hostedConnection.getId()); + } + + @Override + public void connectionRemoved(Server server, HostedConnection hostedConnection) { + LOGGER.log(Level.INFO, "connection closed: {0}", hostedConnection); //NON-NLS + final Player player = logic.getPlayerById(hostedConnection.getId()); + if (player == null) + LOGGER.log(Level.INFO, "closed connection does not belong to an active player"); //NON-NLS + else { //NON-NLS + LOGGER.log(Level.INFO, "closed connection belongs to {0}", player); //NON-NLS + exit(0); + } + } + + private void exit(int exitValue) { //NON-NLS + LOGGER.log(Level.INFO, "close request"); //NON-NLS + if (myServer != null) + for (HostedConnection client : myServer.getConnections()) //NON-NLS + if (client != null) client.close("Game over"); //NON-NLS + System.exit(exitValue); + } + + /** + * Send the specified message to the specified connection. + * + * @param id the connection id + * @param message the message + */ + public void send(int id, ServerMessage message) { + if (myServer == null || !myServer.isRunning()) { + LOGGER.log(Level.ERROR, "no server running when trying to send {0}", message); //NON-NLS + return; + } + final HostedConnection connection = myServer.getConnection(id); + if (connection != null) + connection.send(message); + else + LOGGER.log(Level.ERROR, "there is no connection with id={0}", id); //NON-NLS + } +} diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/server/ReceivedMessage.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/ReceivedMessage.java new file mode 100644 index 00000000..c9c674cc --- /dev/null +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/ReceivedMessage.java @@ -0,0 +1,10 @@ +package pp.mdga.client.server; + +import pp.mdga.message.client.ClientInterpreter; +import pp.mdga.message.client.ClientMessage; + +public record ReceivedMessage(ClientMessage msg, int from) { + void process(ClientInterpreter interpreter) { + msg.accept(interpreter, from); + } +} diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java index e04f520f..e41c1614 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java @@ -8,11 +8,6 @@ import pp.mdga.client.MdgaApp; import pp.mdga.client.MdgaState; import pp.mdga.client.gui.GuiHandler; -import pp.mdga.game.Color; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; public class GameView extends MdgaView { private BoardHandler boardHandler; @@ -55,6 +50,11 @@ public void onLeave() { boardHandler.shutdown(); } + @Override + public void onUpdate() { + camera.update(app.getInputSyncronizer().getScroll(), app.getInputSyncronizer().getRotation()); + } + @Override protected void enterExtendedSettings() { leaveButton.show(); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java index d15c7010..d594bb9e 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/LobbyView.java @@ -5,7 +5,6 @@ import pp.mdga.client.dialog.SingleButtonLeftDialog; import pp.mdga.client.dialog.SingleButtonRightDialog; import pp.mdga.client.MdgaApp; -import pp.mdga.client.MdgaState; import pp.mdga.game.Color; import java.util.ArrayList; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java index b7d9f18b..5d5bd852 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/MdgaView.java @@ -7,6 +7,7 @@ import com.jme3.scene.Node; import com.jme3.scene.shape.Quad; import com.jme3.texture.Texture; +import pp.mdga.client.dialog.GetPercentRunnable; import pp.mdga.client.dialog.PercentRunnable; import pp.mdga.client.dialog.SettingsButtonDialog; import pp.mdga.client.MdgaApp; @@ -61,9 +62,9 @@ public MdgaView(MdgaApp app) { this.settings.addButton("Zurück", () -> leaveSettings(false), size); this.audio = new SettingsDialog(app, audioSettingsNode, "audio_icon.png"); - this.audio.addSlider("Lautstärke", new PercentRunnable(app.getAcousticHandler()::setMainVolume), size, 5); - this.audio.addSlider("Musik", new PercentRunnable(app.getAcousticHandler()::setMusicVolume), size, 10); - this.audio.addSlider("Sound", new PercentRunnable(app.getAcousticHandler()::setSoundVolume), size, 10); + this.audio.addSlider("Lautstärke", new PercentRunnable(app.getAcousticHandler()::setMainVolume), new GetPercentRunnable(app.getAcousticHandler()::getMainVolume), size, (int) app.getAcousticHandler().getMainVolume() * 100); + this.audio.addSlider("Musik", new PercentRunnable(app.getAcousticHandler()::setMusicVolume), new GetPercentRunnable(app.getAcousticHandler()::getMusicVolume), size, (int) app.getAcousticHandler().getMusicVolume() * 100); + this.audio.addSlider("Sound", new PercentRunnable(app.getAcousticHandler()::setSoundVolume), new GetPercentRunnable(app.getAcousticHandler()::getSoundVolume), size, (int) app.getAcousticHandler().getSoundVolume() * 100); this.audio.addButton("Zurück", () -> leaveAudio(), size); this.video = new SettingsDialog(app, videoSettingsNode, "monitor.png"); @@ -75,6 +76,8 @@ public MdgaView(MdgaApp app) { public void enter() { app.getGuiNode().attachChild(node); + audio.initVolume(); + settingsButton.show(); onEnter(); @@ -90,10 +93,12 @@ public void leave() { public void update() { audio.update(); + onUpdate(); } protected abstract void onEnter(); protected abstract void onLeave(); + protected void onUpdate() {} protected Geometry createBackground(String texturePath) { TextureKey key = new TextureKey(texturePath, true); diff --git a/Projekte/mdga/client/src/main/resources/test.png~ b/Projekte/mdga/client/src/main/resources/test.png~ new file mode 100644 index 00000000..9a1a61b3 Binary files /dev/null and b/Projekte/mdga/client/src/main/resources/test.png~ differ diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientGameLogic.java b/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientGameLogic.java deleted file mode 100644 index dcad3574..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientGameLogic.java +++ /dev/null @@ -1,35 +0,0 @@ -package pp.mdga.client; - -import pp.mdga.game.Game; -import pp.mdga.message.client.ClientMessage; - -public class ClientGameLogic { - static final System.Logger LOGGER = System.getLogger(ClientGameLogic.class.getName()); - - private Game game; - private final ClientSender clientSender; - private ClientState state; - - public ClientGameLogic(Game game, ClientSender clientSender) { - this.game = game; - this.clientSender = clientSender; - state = new ClientAutomaton(this); - } - - public void send(ClientMessage msg){ - LOGGER.log(System.Logger.Level.INFO, "send {0}", msg); - clientSender.send(msg); - } - - public ClientSender getClientSender(){ - return clientSender; - } - - public Game getGame(){ - return game; - } - - public ClientState getState(){ - return state; - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestPlayCard.java b/Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestPlayCard.java deleted file mode 100644 index 17c25f61..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestPlayCard.java +++ /dev/null @@ -1,70 +0,0 @@ -package pp.mdga.message.client; - -import com.jme3.network.serializing.Serializable; -import pp.mdga.game.BonusCard; - -/** - * A message sent by a client to request playing a bonus card. - */ -@Serializable -public class RequestPlayCard extends ClientMessage { - /** - * The bonus card to be played. - */ - private final BonusCard card; - - /** - * The identifier of the piece. - */ - private final String pieceIdentifier; - - /** - * Constructs a new RequestPlayCard instance. - * - * @param card the bonus card to be played - * @param pieceIdentifier the identifier of the piece - */ - public RequestPlayCard(BonusCard card, String pieceIdentifier) { - this.pieceIdentifier = pieceIdentifier; - this.card = card; - } - - /** - * Gets the bonus card associated with this request. - * - * @return the bonus card - */ - public BonusCard getCard() { - return card; - } - - /** - * Gets the piece identifier associated with this request. - * - * @return the piece identifier - */ - public String getPieceIdentifier() { - return pieceIdentifier; - } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "RequestPlayCard={card=" + card.toString() + '}'; - } - - /** - * Accepts a visitor to process this message. - * - * @param interpreter the visitor to process this message - * @param from the connection ID from which the message was received - */ - @Override - public void accept(ClientInterpreter interpreter, int from) { - interpreter.received(this, from); - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Animation.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Animation.java deleted file mode 100644 index 74d95b65..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Animation.java +++ /dev/null @@ -1,16 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.message.client.AnimationEnd; -import pp.mdga.message.server.DiceNow; - -public class Animation extends ServerState { - public Animation(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void receivedAnimationEnd(AnimationEnd msg, int from) { - logic.send(logic.getGame().getStartPlayer(), new DiceNow()); - parent.gotoState(new Turn(parent, logic)); - } -} 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 deleted file mode 100644 index 667aa927..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Ceremony.java +++ /dev/null @@ -1,7 +0,0 @@ -package pp.mdga.server; - -public class Ceremony extends ServerState { - public Ceremony(ServerState parent, ServerGameLogic logic) { - super(parent, 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 deleted file mode 100644 index b9e6f4be..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePiece.java +++ /dev/null @@ -1,9 +0,0 @@ -package pp.mdga.server; - -public class ChoosePiece extends ServerState { - private final ChoosePieceStateMachine choosePieceStateMachine = new ChoosePieceStateMachine(this, logic); - - public ChoosePiece(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePieceStateMachine.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePieceStateMachine.java deleted file mode 100644 index 2558e028..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePieceStateMachine.java +++ /dev/null @@ -1,12 +0,0 @@ -package pp.mdga.server; - -public class ChoosePieceStateMachine extends ServerStateMachine{ - public ChoosePieceStateMachine(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public NoPiece initialState() { - return new NoPiece(this, 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 deleted file mode 100644 index 3fb1ff9a..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/DetermineStartPlayer.java +++ /dev/null @@ -1,45 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Player; -import pp.mdga.message.client.RequestDice; -import pp.mdga.message.server.*; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -public class DetermineStartPlayer extends ServerState { - private final List player = new ArrayList<>(); - - public DetermineStartPlayer(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - logic.getGame().addObserver(this); - } - - @Override - public void receivedRequestDice(RequestDice msg, int from) { - final Random random = new Random(); - final int dice = random.nextInt(6) + 1; - broadcastUpdate(new Dice(dice, new ArrayList<>())); - } - - @Override - public void update() { - if (Boolean.TRUE.equals(logic.getGame().allRanked())) { - broadcastUpdate(new RankingResponse()); - if (logic.getGame().getOrder().isEmpty()) { - // todo: save the players with the same value? - broadcastUpdate(new RankingRollAgain()); - broadcastUpdate(new EndOfTurn()); - } else { - // todo: set start player - Player startPlayer = new Player(1); - logic.getGame().setStartPlayer(startPlayer); - logic.send(startPlayer, new DiceNow()); - broadcastUpdate(new EndOfTurn()); - parent.gotoState(new Animation(parent, logic)); - logic.getGame().removeObserver(this); - } - } - } -} 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 deleted file mode 100644 index 3c687bf7..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/FirstRoll.java +++ /dev/null @@ -1,28 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.message.client.RequestDice; - -public class FirstRoll extends ServerState { - public FirstRoll(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void receivedRequestDice(RequestDice msg, int from) { - // todo: implement player.hasMovablePieces() -// if (player.hasMovablePieces()) { -// // todo: goto ChoosePiece -// } else { -// // todo: implement roll -// if (roll == 6) { -// // todo: send to everyone? or one player? -// logic.send(new Player(1), new Dice()); -// // todo: goto ChoosePiece -// } else { -// // todo: send to everyone? or one player? -// logic.send(new Player(1), new DiceAgain()); -// parent.gotoState(new SecondRoll(parent, logic)); -// } -// } - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/GameState.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/GameState.java deleted file mode 100644 index 79069220..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/GameState.java +++ /dev/null @@ -1,69 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.message.client.*; -import pp.mdga.message.server.PauseGame; -import pp.mdga.message.server.PossibleCard; -import pp.mdga.message.server.RankingResponse; - -public class GameState extends ServerState { - private final GameStateMachine gameStateMachine = new GameStateMachine(this, logic); - - public GameState(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - logic.getGame().addObserver(this); - } - - @Override - public void entry() { - gameStateMachine.entry(); - } - - @Override - public void exit() { - parent.gotoState(new Ceremony(parent, logic)); - } - - @Override - public void receivedAnimationEnd(AnimationEnd msg, int from) { - gameStateMachine.receivedAnimationEnd(msg, from); - } - - @Override - public void receivedNoPowerCard(NoPowerCard msg, int from) { - gameStateMachine.receivedNoPowerCard(msg, from); - } - - @Override - public void receivedSelectCard(SelectCard msg, int from) { - gameStateMachine.receivedSelectCard(msg, from); - } - - @Override - public void receivedRequestDice(RequestDice msg, int from) { - gameStateMachine.receivedRequestDice(msg, from); - } - - @Override - public void receivedSelectedPieces(SelectedPieces msg, int from) { - gameStateMachine.receivedSelectedPieces(msg, from); - } - - @Override - public void sentPossibleCard(PossibleCard msg, int from) { - gameStateMachine.sentPossibleCard(msg, from); - } - - @Override - public void sentRankingResponse(RankingResponse msg, int from) { - gameStateMachine.sentRankingResponse(msg, from); - } - - @Override - public void update() { - if (Boolean.TRUE.equals(logic.getGame().playerHasDisconnected())) { - broadcastUpdate(new PauseGame()); - parent.gotoState(new Interrupt(parent, logic, this)); - logic.getGame().removeObserver(this); - } - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/GameStateMachine.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/GameStateMachine.java deleted file mode 100644 index 2e14808b..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/GameStateMachine.java +++ /dev/null @@ -1,26 +0,0 @@ -package pp.mdga.server; - -/** - * The GameStateMachine class represents the state machine for the game state. - */ -public class GameStateMachine extends ServerStateMachine { - /** - * Constructs a new GameStateMachine with the specified parent state and game logic. - * - * @param parent the parent state - * @param logic the server game logic - */ - public GameStateMachine(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - /** - * Returns the initial state of the state machine, which is DetermineStartPlayer. - * - * @return the initial state - */ - @Override - public DetermineStartPlayer initialState() { - return new DetermineStartPlayer(this, 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 deleted file mode 100644 index ca59ca86..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Interrupt.java +++ /dev/null @@ -1,22 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.message.server.ResumeGame; - -public class Interrupt extends ServerState { - private final GameState lastState; - - public Interrupt(ServerState parent, ServerGameLogic logic, GameState lastState) { - super(parent, logic); - this.lastState = lastState; - logic.getGame().addObserver(this); - } - - @Override - public void update() { - if (Boolean.FALSE.equals(logic.getGame().gameIsInterrupted())) { - broadcastUpdate(new ResumeGame()); - parent.gotoState(lastState); - logic.getGame().removeObserver(this); - } - } -} 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 deleted file mode 100644 index 86da598f..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Lobby.java +++ /dev/null @@ -1,94 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Color; -import pp.mdga.game.Player; -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); - } - - /** - * Handles the DeselectTSK message. - * - * @param msg the DeselectTSK message - */ - @Override - public void receivedDeselectTSK(DeselectTSK msg, int from) { - broadcastUpdate(new UpdateTSK(logic.getPlayerById(from).getName(), msg.getColor())); - } - - /** - * Handles the LobbyNotReady message. - * - * @param msg the LobbyNotReady message - */ - @Override - public void receivedNotReady(LobbyNotReady msg, int from) { - broadcastUpdate(new UpdateReady(getPlayerColor(from), false)); - } - - /** - * Handles the LobbyReady message. - * - * @param msg the LobbyReady message - */ - @Override - public void receivedReady(LobbyReady msg, int from) { - broadcastUpdate(new UpdateReady(getPlayerColor(from), true)); - } - - /** - * Helper method to get the color associated with a player ID. - * - * @param playerId The ID of the player. - * @return The Color associated with the player, or null if not found. - */ - private Color getPlayerColor(int playerId) { - Player player = logic.getPlayerById(playerId); - - for (var entry : logic.getGame().getPlayers().entrySet()) { - if (entry.getValue().equals(player)) { - return entry.getKey(); - } - } - return null; - } - - /** - * Handles the SelectTSK message. - * - * @param msg the SelectTSK message - */ - @Override - public void receivedSelectTSK(SelectTSK msg, int from) { - broadcastUpdate(new UpdateTSK(logic.getPlayerById(from).getName(), msg.getColor())); - } - - /** - * Handles the ClientStartGame message. - * - * @param msg the ClientStartGame message - */ - @Override - public void receivedStartGame(ClientStartGame msg, int from) { - if (Boolean.TRUE.equals(logic.getGame().allReady())) { - broadcastUpdate(new ServerStartGame()); - parent.gotoState(new GameState(parent, 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 deleted file mode 100644 index 38d40399..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/MovePiece.java +++ /dev/null @@ -1,7 +0,0 @@ -package pp.mdga.server; - -public class MovePiece extends ServerState { - public MovePiece(ServerState parent, ServerGameLogic logic) { - super(parent, 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 deleted file mode 100644 index 6326bfb1..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/NoPiece.java +++ /dev/null @@ -1,55 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Player; -import pp.mdga.message.server.WaitPiece; - -public class NoPiece extends ServerState { - public NoPiece(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - entry(); - } - - @Override - public void entry() { -// if (hasTurbo() || turbo == 0) { -// if (roll == 6 && -// logic.getGame().getBoard().getPlayerData().getWaitingArea().hasPieces() && -// logic.getGame().getBoard().getNodes().getStartNode(Color).isOccupied()) { -// parent.gotoState(new WaitingPiece(parent, logic)); -// } else { -// parent.gotoState(new NoTurn(parent, logic)); -// } -// } else { -// validateHasPieces(); -// } - } - - private void validateHasPieces() { -// if (logic.getGame().getBoard().getPlayerData().getWaitingArea().hasPieces()) { -// if (logic.getGame().getBoard().getNodes().getStartNode(Color).isOccupied()) { -// if (roll == 6) { -// logic.send(new Player(1), new WaitPiece()); -// } else { -// validateMove(); -// } -// } else { -// if (logic.getGame().getBoard().getNodes().getStartNode(Color).getPiece().canMove()) { -// logic.send(new Player(1), new WaitPiece()); -// parent.gotoState(new StartPiece(parent, logic)); -// } else { -// validateMove(); -// } -// } -// } else { -// validateMove(); -// } - } - - private void validateMove() { -// if (player.canMove()) { -// parent.gotoState(new NoTurn(parent, logic)); -// } else { -// logic.send(new Player(1), new SelectPiece()); -// } - } -} 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 deleted file mode 100644 index 388f50bf..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/NoTurn.java +++ /dev/null @@ -1,14 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.message.server.EndOfTurn; - -public class NoTurn extends ServerState { - public NoTurn(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void sentEndOfTurn(EndOfTurn msg, int from) { - // todo: goto end of turn - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Observer.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Observer.java deleted file mode 100644 index a95ad2ad..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Observer.java +++ /dev/null @@ -1,5 +0,0 @@ -package pp.mdga.server; - -public interface Observer { - void update(); -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/PlayPowerCard.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/PlayPowerCard.java deleted file mode 100644 index cc7cf7b0..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/PlayPowerCard.java +++ /dev/null @@ -1,7 +0,0 @@ -package pp.mdga.server; - -public class PlayPowerCard extends ServerState { - public PlayPowerCard(ServerState parent, ServerGameLogic logic) { - super(parent, 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 deleted file mode 100644 index a66f0104..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/PowerCard.java +++ /dev/null @@ -1,54 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Player; -import pp.mdga.message.client.NoPowerCard; -import pp.mdga.message.client.SelectCard; -import pp.mdga.message.client.SelectedPieces; -import pp.mdga.message.server.DiceNow; -import pp.mdga.message.server.PossibleCard; - -public class PowerCard extends ServerState { - public PowerCard(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - logic.getGame().addObserver(this); - } - - @Override - public void receivedNoPowerCard(NoPowerCard msg, int from) { - // todo: send to everyone? or one player? - // todo: right msg? - logic.send(new Player(1), new DiceNow()); - parent.gotoState(new RollDice(parent, logic)); - } - - @Override - public void receivedSelectCard(SelectCard msg, int from) { - // todo: send to everyone? or one player? - logic.send(new Player(1), new PossibleCard()); - } - - @Override - public void receivedSelectedPieces(SelectedPieces msg, int from) { -// if (verifySelectedPieces()) { -// // todo: send to everyone? or one player? -// // todo: msg PowerCardAnimation? -// logic.send(new Player(1), new PowerCardAnimation()); -// parent.gotoState(new PlayPowerCard(parent, logic)); -// } - } - - @Override - public void sentPossibleCard(PossibleCard msg, int from) { - // todo: implement - } - - @Override - public void update() { - if (!super.getMoveablePieces(logic.getGame().getActiveColor()).isEmpty()) { - // todo: send to everyone? or one player? - // todo: right msg? - logic.send(new Player(1), new DiceNow()); - parent.gotoState(new RollDice(parent, 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 deleted file mode 100644 index acb43509..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDice.java +++ /dev/null @@ -1,9 +0,0 @@ -package pp.mdga.server; - -public class RollDice extends ServerState { - private final RollDiceMachine rollDiceMachine = new RollDiceMachine(this, logic); - - public RollDice(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDiceMachine.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDiceMachine.java deleted file mode 100644 index bc788947..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDiceMachine.java +++ /dev/null @@ -1,12 +0,0 @@ -package pp.mdga.server; - -public class RollDiceMachine extends ServerStateMachine { - public RollDiceMachine(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public FirstRoll initialState() { - return new FirstRoll(this, 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 deleted file mode 100644 index d149236b..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/SecondRoll.java +++ /dev/null @@ -1,25 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Player; -import pp.mdga.message.client.RequestDice; -import pp.mdga.message.server.Dice; -import pp.mdga.message.server.DiceAgain; - -public class SecondRoll extends ServerState { - public SecondRoll(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void receivedRequestDice(RequestDice msg, int from) { -// if (roll == 6) { -// // todo: send to everyone? or one player? -// logic.send(new Player(1), new Dice()); -// // todo: goto ChoosePiece -// } else { -// // todo: send to everyone? or one player? -// logic.send(new Player(1), new DiceAgain()); -// parent.gotoState(new ThirdRoll(parent, 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 deleted file mode 100644 index 9cd71e6a..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/SelectPiece.java +++ /dev/null @@ -1,22 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Piece; -import pp.mdga.game.Player; -import pp.mdga.message.client.RequestMove; -import pp.mdga.message.server.StartPiece; - -public class SelectPiece extends ServerState { - public SelectPiece(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void receivedRequestMove(RequestMove msg, int from) { -// if (verifyPiece(p)) { -// logic.send(new Player(1), new Animation()); -// // todo: goto state -// } else { -// logic.send(new Player(1), new StartPiece()); -// } - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerAutomaton.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerAutomaton.java deleted file mode 100644 index 14061e81..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerAutomaton.java +++ /dev/null @@ -1,27 +0,0 @@ -package pp.mdga.server; - -/** - * The ServerAutomaton class represents the top-level state machine for the server. - * It initializes the state machine and sets the initial state to Lobby. - */ -public class ServerAutomaton extends ServerStateMachine { - /** - * Constructs a new ServerAutomaton with the specified game logic. - * - * @param logic the server game logic - */ - public ServerAutomaton(ServerGameLogic logic) { - super(null, logic); - entry(); - } - - /** - * Returns the initial state of the state machine, which is Lobby. - * - * @return the initial state - */ - @Override - public Lobby initialState() { - return new Lobby(this, 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 deleted file mode 100644 index 64761cf6..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerGameLogic.java +++ /dev/null @@ -1,145 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Game; -import pp.mdga.game.Player; -import pp.mdga.message.client.*; -import pp.mdga.message.server.ServerMessage; - -import java.lang.System.Logger; - -public class ServerGameLogic implements ClientInterpreter { - static final Logger LOGGER = System.getLogger(ServerGameLogic.class.getName()); - - private final Game game; - private final ServerSender serverSender; - private ServerState state; - - public ServerGameLogic(Game game, ServerSender serverSender) { - this.game = game; - this.serverSender = serverSender; - state = new ServerAutomaton(this); - } - - - @Override - public void received(AnimationEnd animationEnd, int from) { - - } - - @Override - public void received(DeselectTSK deselectTSK, int from) { - - } - - @Override - public void received(ForceStartGame forceStartGame, int from) { - - } - - @Override - public void received(JoinServer joinServer, int from) { - - } - - @Override - public void received(LeaveGame leaveGame, int from) { - - } - - @Override - public void received(LobbyNotReady lobbyNotReady, int from) { - - } - - @Override - public void received(LobbyReady lobbyReady, int from) { - - } - - @Override - public void received(RequestBriefing requestBriefing, int from) { - - } - - @Override - public void received(RequestDice requestDice, int from) { - - } - - @Override - public void received(RequestMove requestMove, int from) { - - } - - @Override - public void received(RequestPlayCard requestPlayCard, int from) { - - } - - @Override - public void received(SelectCard selectCard, int from) { - - } - - @Override - public void received(SelectTSK selectTSK, int from) { - - } - - @Override - public void received(ForceContinueGame forceContinueGame, int from) { - - } - - @Override - public void received(ClientStartGame clientStartGame, int from) { - - } - - @Override - public void received(NoPowerCard noPowerCard, int from) { - - } - - @Override - public void received(SelectedPieces selectedPieces, int from) { - - } - - /** - * Sends a message to the specified player. - * - * @param player the player to send the message to - * @param msg the message to send - */ - public void send(Player player, ServerMessage msg) { - LOGGER.log(Logger.Level.INFO, "sending to {0}: {1}", player, msg); //NON-NLS - serverSender.send(player.getId(), msg); - } - - public ServerSender getServerSender() { - return serverSender; - } - - public Game getGame() { - return game; - } - - /** - * Returns the player representing the client with the specified connection ID. - * - * @param id the ID of the client - * @return the player associated with the client ID, or null if not found - */ - public Player getPlayerById(int id) { - for (var entry : game.getPlayers().entrySet()) - if (entry.getValue().getId() == id) - return entry.getValue(); - LOGGER.log(Logger.Level.ERROR, "no player found with connection {0}", id); //NON-NLS - return null; - } - - public ServerState getState() { - return state; - } -} 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 deleted file mode 100644 index 0efc8f5d..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerSender.java +++ /dev/null @@ -1,7 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.message.server.ServerMessage; - -public interface ServerSender { - void send(int id, ServerMessage msg); -} 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 deleted file mode 100644 index 29bf2edd..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerState.java +++ /dev/null @@ -1,324 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Color; -import pp.mdga.game.Node; -import pp.mdga.game.Piece; -import pp.mdga.game.PieceState; -import pp.mdga.game.PlayerData; -import pp.mdga.message.client.*; -import pp.mdga.message.server.EndOfTurn; -import pp.mdga.message.server.PossibleCard; -import pp.mdga.message.server.RankingResponse; -import pp.mdga.message.server.ServerMessage; - -import java.lang.System.Logger; -import java.util.ArrayList; -import java.util.List; - -/** - * Abstract class representing a state in the server's state machine. - * Implements the Observer pattern to observe changes in the game state. - */ -public abstract class ServerState implements Observer { - /** - * Logger for logging messages within the application. - */ - protected static final Logger LOGGER = System.getLogger(ServerState.class.getName()); - - /** - * The parent state of the current state. - */ - protected ServerState parent; - - /** - * The game logic associated with the server state. - */ - protected ServerGameLogic logic; - - /** - * Constructs a new ServerState with the specified parent state and game logic. - * - * @param parent the parent state of the current state - * @param logic the game logic associated with the server state - */ - protected ServerState(ServerState parent, ServerGameLogic logic) { - this.parent = parent; - this.logic = logic; - } - - /** - * This method is called when the state is entered. - */ - public void entry() { /* do nothing */ } - - /** - * This method is called when the state is exited. - */ - public void exit() { /* do nothing */ } - - /** - * This method is called when an animation ends. - * - * @param msg the animation end message - */ - public void receivedAnimationEnd(AnimationEnd msg, int from) { /* do nothing */ } - - /** - * This method is called when a TSK is deselected. - * - * @param msg the deselect TSK message - */ - public void receivedDeselectTSK(DeselectTSK msg, int from) { /* do nothing */ } - - /** - * This method is called when a NoPowerCard message is received. - * - * @param msg the NoPowerCard message - */ - public void receivedNoPowerCard(NoPowerCard msg, int from) { /* do nothing */ } - - /** - * This method is called when a LobbyNotReady message is received. - * - * @param msg the LobbyNotReady message - */ - public void receivedNotReady(LobbyNotReady msg, int from) { /* do nothing */ } - - /** - * This method is called when a LobbyReady message is received. - * - * @param msg the LobbyReady message - */ - public void receivedReady(LobbyReady msg, int from) { /* do nothing */ } - - /** - * This method is called when a RequestDice message is received. - * - * @param msg the RequestDice message - */ - public void receivedRequestDice(RequestDice msg, int from) { /* do nothing */ } - - /** - * This method is called when a RequestMove message is received. - * - * @param msg the RequestMove message - */ - public void receivedRequestMove(RequestMove msg, int from) { /* do nothing */ } - - /** - * This method is called when a SelectCard message is received. - * - * @param msg the SelectCard message - */ - public void receivedSelectCard(SelectCard msg, int from) { /* do nothing */ } - - /** - * This method is called when a SelectTSK message is received. - * - * @param msg the SelectTSK message - */ - public void receivedSelectTSK(SelectTSK msg, int from) { /* do nothing */ } - - /** - * This method is called when a SelectedPieces message is received. - * - * @param msg the SelectedPieces message - */ - public void receivedSelectedPieces(SelectedPieces msg, int from) { /* do nothing */ } - - /** - * This method is called when a StartGame message is received. - * - * @param msg the StartGame message - */ - public void receivedStartGame(ClientStartGame msg, int from) { /* do nothing */ } - - /** - * This method is called when an EndOfTurn message is sent. - * - * @param msg the EndOfTurn message - */ - public void sentEndOfTurn(EndOfTurn msg, int from) { /* do nothing */ } - - /** - * This method is called when a PossibleCard message is sent. - * - * @param msg the PossibleCard message - */ - public void sentPossibleCard(PossibleCard msg, int from) { /* do nothing */ } - - /** - * This method is called when a RankingResponce message is sent. - * - * @param msg the RankingResponce message - */ - public void sentRankingResponse(RankingResponse msg, int from) { /* do nothing */ } - - /** - * This method transitions to a new state. - * - * @param state the new state to transition to - * @throws IllegalStateException if called outside a state machine - */ - public void gotoState(ServerState state) { - throw new IllegalStateException("not in a statemachine"); - } - - /** - * Returns the parent state of the current state. - * - * @return the parent state - */ - public ServerState getParent() { - return parent; - } - - /** - * This method is called when the observed object is changed. - * It is part of the Observer pattern implementation. - */ - public void update() { /* do nothing */ } - - /** - * This method is used to calculate the steps a piece can move - * - * @return the steps a piece can move - */ - private int calculateSteps() { - return logic.getGame().getDiceEyes() * logic.getGame().getDiceModifier(); - } - - /** - * This method is used to test if u can move a piece - * - * @param piece the piece to be moved - * @return true if the piece can be moved, false otherwise - */ - protected boolean tryMove(Piece piece) { - int steps = calculateSteps(); - if (piece.getState() == PieceState.HOME) { - return tryHomeMove(piece, steps); - } else { - int homeMoves = getHomeMoves(piece, steps); - if (homeMoves > 0) { - return tryHomeMove(piece, homeMoves); - } else { - return tryInfieldMove(piece, steps); - } - } - } - - /** - * This method is used to determine if a piece would move into the home area. - * - * @param piece the piece to be moved - * @param steps the steps the piece would move - * @return the number of steps the piece would move into the home area - */ - protected int getHomeMoves(Piece piece, int steps) { - int figureIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); - Color col = piece.getColor(); - int startIndex = logic.getGame().getBoard().getPlayerData().get(col).getStartNodeIndex(); - int moveIndex = startIndex + steps; - if (moveIndex > logic.getGame().getBoard().getInfield().length) { - moveIndex %= logic.getGame().getBoard().getInfield().length; - if (moveIndex >= startIndex) { - return moveIndex - startIndex + 1; - } - } else if (figureIndex < startIndex && moveIndex >= startIndex) { - return moveIndex - startIndex + 1; - } - return 0; - } - - /** - * This method is used to determine if a piece can move in the infield - * - * @param piece the piece to be moved - * @param steps the steps the piece would move - * @return true if the piece can move in the infield, false otherwise - */ - protected boolean tryInfieldMove(Piece piece, int steps) { - int figureIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); - int moveIndex = (figureIndex + steps) % logic.getGame().getBoard().getInfield().length; - Piece occupant = logic.getGame().getBoard().getInfield()[moveIndex].getOccupant(); - if (occupant != null) { - return occupant.getColor() != piece.getColor(); - } - return true; - } - - /** - * This method is used to determine if a piece can move inside the home area - * - * @param piece the piece to be moved - * @param steps the steps the piece would move - * @return true if the piece can move into the home area, false otherwise - */ - protected boolean tryHomeMove(Piece piece, int steps) { - Color col = piece.getColor(); - PlayerData playerData = logic.getGame().getBoard().getPlayerData().get(col); - Node[] homeNodes = playerData.getHomeNodes(); - int index; - - if (playerData.homeIncludes(piece)) { - index = playerData.getIndexInHome(piece); - } else { - index = 0; - } - - if (index + steps >= homeNodes.length) { - return false; - } else { - for (int i = index; i <= index + steps; i++) { - if (homeNodes[i].getOccupant() != null) { - return false; - } - } - return true; - } - } - - /** - * This method is used to get the pieces that can be moved - * - * @param color the color of the pieces - * @return the pieces that can be moved - */ - protected List getMoveablePieces(Color color) { - ArrayList moveablePieces = new ArrayList<>(); - ArrayList pieces = new ArrayList<>(); - for (Piece piece : logic.getGame().getBoard().getPlayerData().get(color).getPieces()) { - if (piece.getState() == PieceState.ACTIVE || piece.getState() == PieceState.HOME) { - pieces.add(piece); - } - } - for (Piece piece : pieces) { - if (tryMove(piece)) { - moveablePieces.add(piece); - } - } - return moveablePieces; - } - - /** - * Broadcasts an update message to all players. - * - * @param updateMessage the update message to be sent - */ - protected void broadcastUpdate(ServerMessage updateMessage) { - for (var entry : logic.getGame().getPlayers().entrySet()) { - logic.send(entry.getValue(), updateMessage); - } - } - - /** - * Returns a string representation of the object. - * - * @return the simple name of the class - */ - @Override - public String toString() { - return getClass().getSimpleName(); - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerStateMachine.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerStateMachine.java deleted file mode 100644 index 2554deaf..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerStateMachine.java +++ /dev/null @@ -1,234 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.message.client.*; -import pp.mdga.message.server.EndOfTurn; -import pp.mdga.message.server.PossibleCard; -import pp.mdga.message.server.RankingResponse; - -/** - * Abstract class representing a state machine for the server. - * It manages the transitions between different states and delegates - * the handling of messages to the current state. - */ -public abstract class ServerStateMachine extends ServerState { - /** - * The current state of the state machine. - */ - private ServerState state; - - /** - * Constructs a new instance of ServerStateMachine. - * - * @param parent the parent state - * @param logic the server game logic - */ - protected ServerStateMachine(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - /** - * Creates the initial state of a state machine. - */ - public abstract ServerState initialState(); - - /** - * Transitions to a new state. - * - * @param newState the new state to transition to - */ - @Override - public void gotoState(ServerState newState) { - LOGGER.log(System.Logger.Level.DEBUG, "{0}: {1} --> {2}", this, state, newState); - enter(newState); - } - - /** - * This method is called when the state is entered. - */ - @Override - public void entry() { - final ServerState newState = initialState(); - LOGGER.log(System.Logger.Level.DEBUG, "{0}: initial state={1}", this, newState); - enter(newState); - } - - /** - * Enters a new state. - * - * @param newState the new state to enter - * @throws IllegalArgumentException if the new state does not belong to this state machine - */ - private void enter(ServerState newState) { - if (newState.parent != this) - throw new IllegalArgumentException("Wrong state: " + newState + " belongs to " + newState.parent + " instead of " + this); - state = newState; - state.entry(); - } - - /** - * This method is called when the state is exited. - */ - @Override - public void exit() { - state.exit(); - } - - /** - * This method is called when an animation ends. - * - * @param msg the animation end message - */ - @Override - public void receivedAnimationEnd(AnimationEnd msg, int from) { - state.receivedAnimationEnd(msg, from); - } - - /** - * This method is called when a TSK is deselected. - * - * @param msg the deselect TSK message - */ - @Override - public void receivedDeselectTSK(DeselectTSK msg, int from) { - state.receivedDeselectTSK(msg, from); - } - - /** - * This method is called when a NoPowerCard message is received. - * - * @param msg the NoPowerCard message - */ - @Override - public void receivedNoPowerCard(NoPowerCard msg, int from) { - state.receivedNoPowerCard(msg, from); - } - - /** - * This method is called when a LobbyNotReady message is received. - * - * @param msg the LobbyNotReady message - */ - @Override - public void receivedNotReady(LobbyNotReady msg, int from) { - state.receivedNotReady(msg, from); - } - - /** - * This method is called when a LobbyReady message is received. - * - * @param msg the LobbyReady message - */ - @Override - public void receivedReady(LobbyReady msg, int from) { - state.receivedReady(msg, from); - } - - /** - * This method is called when a RequestDice message is received. - * - * @param msg the RequestDice message - */ - @Override - public void receivedRequestDice(RequestDice msg, int from) { - state.receivedRequestDice(msg, from); - } - - /** - * This method is called when a RequestMove message is received. - * - * @param msg the RequestMove message - */ - @Override - public void receivedRequestMove(RequestMove msg, int from) { - state.receivedRequestMove(msg, from); - } - - /** - * This method is called when a SelectCard message is received. - * - * @param msg the SelectCard message - */ - @Override - public void receivedSelectCard(SelectCard msg, int from) { - state.receivedSelectCard(msg, from); - } - - /** - * This method is called when a SelectTSK message is received. - * - * @param msg the SelectTSK message - */ - @Override - public void receivedSelectTSK(SelectTSK msg, int from) { - state.receivedSelectTSK(msg, from); - } - - /** - * This method is called when a SelectedPieces message is received. - * - * @param msg the SelectedPieces message - */ - @Override - public void receivedSelectedPieces(SelectedPieces msg, int from) { - state.receivedSelectedPieces(msg, from); - } - - /** - * This method is called when a StartGame message is received. - * - * @param msg the StartGame message - */ - @Override - public void receivedStartGame(ClientStartGame msg, int from) { - state.receivedStartGame(msg, from); - } - - /** - * This method is called when an EndOfTurn message is sent. - * - * @param msg the EndOfTurn message - */ - @Override - public void sentEndOfTurn(EndOfTurn msg, int from) { - state.sentEndOfTurn(msg, from); - } - - /** - * This method is called when a PossibleCard message is sent. - * - * @param msg the PossibleCard message - */ - @Override - public void sentPossibleCard(PossibleCard msg, int from) { - state.sentPossibleCard(msg, from); - } - - /** - * This method is called when a RankingResponse message is sent. - * - * @param msg the RankingResponse message - */ - @Override - public void sentRankingResponse(RankingResponse msg, int from) { - state.sentRankingResponse(msg, from); - } - - /** - * Returns a string representation of the object, including the current state. - * - * @return the string representation of the object - */ - @Override - public String toString() { - return super.toString() + "(in " + state + ")"; - } - - /** - * Returns the current state. - * - * @return the current state - */ - public ServerState getState() { - return state; - } -} 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 deleted file mode 100644 index f18641a2..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/StartPiece.java +++ /dev/null @@ -1,21 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Piece; -import pp.mdga.game.Player; -import pp.mdga.message.client.RequestMove; - -public class StartPiece extends ServerState { - public StartPiece(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void receivedRequestMove(RequestMove msg, int from) { -// if (verifyPiece(p)) { -// logic.send(new Player(1), new Animation()); -// // todo: goto state -// } else { -// logic.send(new Player(1), new pp.mdga.message.server.StartPiece()); -// } - } -} 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 deleted file mode 100644 index ebe9fd77..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ThirdRoll.java +++ /dev/null @@ -1,25 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Player; -import pp.mdga.message.client.RequestDice; -import pp.mdga.message.server.Dice; -import pp.mdga.message.server.DiceAgain; - -public class ThirdRoll extends ServerState { - public ThirdRoll(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void receivedRequestDice(RequestDice msg, int from) { -// if (roll == 6) { -// // todo: send to everyone? or one player? -// logic.send(new Player(1), new Dice()); -// // todo: goto ChoosePiece -// } else { -// // todo: send to everyone? or one player? -// logic.send(new Player(1), new DiceAgain()); -// // todo: goto End from Turn -// } - } -} 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 deleted file mode 100644 index 4202226f..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Turn.java +++ /dev/null @@ -1,34 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Player; -import pp.mdga.message.server.ActivePlayer; -import pp.mdga.message.server.CeremonyMessage; - -public class Turn extends ServerState { - private final TurnStateMachine turnStateMachine = new TurnStateMachine(this, logic); - - public Turn(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - // todo: when TurnStateMachine is in the end state, and then? - @Override - public void exit() { - Player player = logic.getGame().getStartPlayer(); - -// if (player.isFinished()) { -// logic.send(player, new Spectator()); -// } else { -// logic.send(player, new EndOfTurn()); -// } - - if (logic.getGame().getPlayers().size() == 1) { - broadcastUpdate(new CeremonyMessage()); - this.getParent().getParent().exit(); - } else { - // todo: next player - broadcastUpdate(new ActivePlayer(null)); - parent.gotoState(new Animation(parent, logic)); - } - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/TurnStateMachine.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/TurnStateMachine.java deleted file mode 100644 index a5974332..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/TurnStateMachine.java +++ /dev/null @@ -1,12 +0,0 @@ -package pp.mdga.server; - -public class TurnStateMachine extends ServerStateMachine { - public TurnStateMachine(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public PowerCard initialState() { - return new PowerCard(this, 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 deleted file mode 100644 index a284a451..00000000 --- a/Projekte/mdga/model/src/main/java/pp.mdga/server/WaitingPiece.java +++ /dev/null @@ -1,23 +0,0 @@ -package pp.mdga.server; - -import pp.mdga.game.Piece; -import pp.mdga.game.Player; -import pp.mdga.message.client.RequestDice; -import pp.mdga.message.client.RequestMove; -import pp.mdga.message.server.StartPiece; - -public class WaitingPiece extends ServerState { - public WaitingPiece(ServerState parent, ServerGameLogic logic) { - super(parent, logic); - } - - @Override - public void receivedRequestMove(RequestMove msg, int from) { -// if (verifyPiece(p)) { -// logic.send(new Player(1), new Animation()); -// // todo: goto state -// } else { -// logic.send(new Player(1), new StartPiece()); -// } - } -} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Animation.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Animation.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Animation.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Animation.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/AudioSettings.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/AudioSettings.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/AudioSettings.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/AudioSettings.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Ceremony.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Ceremony.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Ceremony.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Ceremony.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/CeremonyStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/CeremonyStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ChoosePiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ChoosePiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePieceStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ChoosePieceStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePieceStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ChoosePieceStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePowerCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ChoosePowerCard.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePowerCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ChoosePowerCard.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientAutomaton.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientAutomaton.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/ClientAutomaton.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ClientAutomaton.java diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java new file mode 100644 index 00000000..9ec3bca9 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java @@ -0,0 +1,171 @@ +package pp.mdga.client; + +import pp.mdga.game.Game; +import pp.mdga.message.client.ClientMessage; +import pp.mdga.message.server.*; + +public class ClientGameLogic implements ServerInterpreter { + static final System.Logger LOGGER = System.getLogger(ClientGameLogic.class.getName()); + + private Game game; + private final ClientSender clientSender; + private ClientState state; + + public ClientGameLogic(Game game, ClientSender clientSender) { + this.game = game; + this.clientSender = clientSender; + state = new ClientAutomaton(this); + } + + public void send(ClientMessage msg){ + LOGGER.log(System.Logger.Level.INFO, "send {0}", msg); + clientSender.send(msg); + } + + public ClientSender getClientSender(){ + return clientSender; + } + + public Game getGame(){ + return game; + } + + public ClientState getState(){ + return state; + } + + @Override + public void received(ActivePlayer msg) { + + } + + @Override + public void received(AnyPiece msg) { + + } + + @Override + public void received(Briefing msg) { + + } + + @Override + public void received(CeremonyMessage msg) { + + } + + @Override + public void received(Dice msg) { + + } + + @Override + public void received(DiceAgain msg) { + + } + + @Override + public void received(DiceNow msg) { + + } + + @Override + public void received(EndOfTurn msg) { + + } + + @Override + public void received(LobbyAccept msg) { + + } + + @Override + public void received(LobbyDeny msg) { + + } + + @Override + public void received(LobbyPlayerJoin msg) { + + } + + @Override + public void received(LobbyPlayerLeave msg) { + + } + + @Override + public void received(MoveMessage msg) { + + } + + @Override + public void received(NoTurn msg) { + + } + + @Override + public void received(PauseGame msg) { + + } + + @Override + public void received(PlayCard msg) { + + } + + @Override + public void received(PossibleCard msg) { + + } + + @Override + public void received(PossiblePiece msg) { + + } + + @Override + public void received(RankingResponse msg) { + + } + + @Override + public void received(RankingRollAgain msg) { + + } + + @Override + public void received(ReconnectBriefing msg) { + + } + + @Override + public void received(ResumeGame msg) { + + } + + @Override + public void received(ServerStartGame msg) { + + } + + @Override + public void received(StartPiece msg) { + + } + + @Override + public void received(UpdateReady msg) { + + } + + @Override + public void received(UpdateTSK msg) { + + } + + @Override + public void received(WaitPiece msg) { + + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientSender.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientSender.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/ClientSender.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ClientSender.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/ClientState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientStateMachine.java similarity index 97% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/ClientStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ClientStateMachine.java index 92620f35..9537ccb7 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientStateMachine.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientStateMachine.java @@ -1,7 +1,5 @@ package pp.mdga.client; -import pp.mdga.message.server.*; - public abstract class ClientStateMachine extends ClientState { private ClientState state; diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/DetermineStartPlayer.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/DetermineStartPlayer.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/DetermineStartPlayer.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/DetermineStartPlayer.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/DetermineStartPlayerStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/DetermineStartPlayerStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/DetermineStartPlayerStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/DetermineStartPlayerStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogStates.java new file mode 100644 index 00000000..f5ad1568 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogStates.java @@ -0,0 +1,8 @@ +package pp.mdga.client; + +public abstract class DialogStates extends ClientState{ + + public DialogStates(ClientState parent, ClientGameLogic logic){ + super(parent, logic); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Dialogs.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Dialogs.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Dialogs.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Dialogs.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/DialogsStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/DialogsStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/GameState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/GameStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/GameStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/GameStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Interrupt.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Interrupt.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Interrupt.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Interrupt.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Lobby.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Lobby.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Lobby.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Lobby.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/MainSettings.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/MainSettings.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/MainSettings.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/MainSettings.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/MovePiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/MovePiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/MovePiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/MovePiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/NetworkDialog.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/NetworkDialog.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/NetworkDialog.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/NetworkDialog.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/NoPiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/NoPiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/NoPiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/NoPiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Observer.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Observer.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Observer.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Observer.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/PlayPowerCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/PlayPowerCard.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/PlayPowerCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/PlayPowerCard.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Podium.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Podium.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Podium.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Podium.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/PowerCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/PowerCard.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/PowerCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/PowerCard.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/PowerCardStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/PowerCardStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/PowerCardStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/PowerCardStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/RollDice.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/RollDice.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/RollDice.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/RollDice.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/RollRankingDice.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/RollRankingDice.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/RollRankingDice.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/RollRankingDice.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/SelectPiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/SelectPiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/SelectPiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/SelectPiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Settings.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Settings.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Settings.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Settings.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/SettingsStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/SettingsStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/SettingsStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/SettingsStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Shield.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Shield.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Shield.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Shield.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Spectator.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Spectator.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Spectator.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Spectator.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/StartDialog.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/StartDialog.java similarity index 73% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/StartDialog.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/StartDialog.java index ee529941..90bb1e2b 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/client/StartDialog.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/StartDialog.java @@ -1,6 +1,6 @@ package pp.mdga.client; -public class StartDialog extends ClientState { +public class StartDialog extends DialogStates { public StartDialog(ClientState parent, ClientGameLogic logic) { super(parent, logic); } diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/StartPiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/StartPiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/StartPiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/StartPiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Statistics.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Statistics.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Statistics.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Statistics.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Swap.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Swap.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Swap.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Swap.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Turn.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Turn.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Turn.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Turn.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/TurnStateMachine.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/TurnStateMachine.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/TurnStateMachine.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/TurnStateMachine.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/VideoSettings.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/VideoSettings.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/VideoSettings.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/VideoSettings.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/WaitRanking.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/WaitRanking.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/WaitRanking.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/WaitRanking.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Waiting.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/Waiting.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/Waiting.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/Waiting.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/WaitingPiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/WaitingPiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/client/WaitingPiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/WaitingPiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/Board.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Board.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/Board.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/Board.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/BonusCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusCard.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/BonusCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/BonusCard.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/BonusNode.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/BonusNode.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/Color.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/Color.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/Game.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java similarity index 81% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/Game.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java index 427ea384..87669c71 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/game/Game.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java @@ -2,8 +2,6 @@ import java.util.*; -import pp.mdga.server.Observer; - /** * The Game class represents the game state of the Ludo game. * It contains all the information needed to play the game. @@ -12,16 +10,16 @@ public class Game { private int diceModifier = 1; private int diceEyes; - private Map players = new HashMap(); + private Map players = new EnumMap<>(Color.class); private Statistic gameStatistics; - private ArrayList drawPile; - private ArrayList discardPile = new ArrayList<>(); + private List drawPile; + private List discardPile = new ArrayList<>(); private Board board; private Color activeColor; - private LinkedList order; - private Map playerConnectionID; + private List order; + private final ArrayList playerList = new ArrayList<>(4); - private ArrayList observers = new ArrayList<>(); + private final ArrayList observers = new ArrayList<>(); private Player startPlayer; private Boolean gameHasStarted = false; private Boolean playerHasDisconnected = false; @@ -127,7 +125,7 @@ public void setGameStatistics(Statistic gameStatistics) { * * @return the draw pile */ - public ArrayList getDrawPile() { + public List getDrawPile() { return drawPile; } @@ -136,7 +134,7 @@ public ArrayList getDrawPile() { * * @param drawPile the new draw pile */ - public void setDrawPile(ArrayList drawPile) { + public void setDrawPile(List drawPile) { this.drawPile = drawPile; } @@ -145,7 +143,7 @@ public void setDrawPile(ArrayList drawPile) { * * @return the discard pile */ - public ArrayList getDiscardPile() { + public List getDiscardPile() { return discardPile; } @@ -154,7 +152,7 @@ public ArrayList getDiscardPile() { * * @param discardPile the new discard pile */ - public void setDiscardPile(ArrayList discardPile) { + public void setDiscardPile(List discardPile) { this.discardPile = discardPile; } @@ -199,7 +197,7 @@ public void setActiveColor(Color activeColor) { * * @return the order of the players */ - public LinkedList getOrder() { + public List getOrder() { return order; } @@ -208,48 +206,10 @@ public LinkedList getOrder() { * * @param order the new order of the players */ - public void setOrder(LinkedList order) { + public void setOrder(List order) { this.order = order; } - /** - * This method returns the player connection ID. - * - * @return the player connection ID - */ - public Map getPlayerConnectionID() { - return playerConnectionID; - } - - /** - * This method sets the player connection ID. - * - * @param playerConnectionID the new player connection ID - */ - public void setPlayerConnectionID(Map playerConnectionID) { - this.playerConnectionID = playerConnectionID; - } - - /** - * This method sets the player connection ID. - * - * @param color the color of the player - * @param connectionID the new connection ID - */ - public void setPlayerConnectionID(Color color, int connectionID) { - playerConnectionID.put(color, connectionID); - } - - /** - * This method returns the player connection ID. - * - * @param color the color of the player - * @return the player connection ID - */ - public int getPlayerConnectionID(Color color) { - return playerConnectionID.get(color); - } - /** * This method adds a player to the game. * @@ -321,7 +281,7 @@ public Boolean playerHasDisconnected() { */ public void setGameIsInterrupted(Boolean gameIsInterrupted) { this.gameIsInterrupted = gameIsInterrupted; - if (!gameIsInterrupted) notifyObservers(); + if (Boolean.FALSE.equals(gameIsInterrupted)) notifyObservers(); } /** @@ -349,7 +309,7 @@ public Boolean getMovablePieces() { */ public void setMovablePieces(Boolean movablePieces) { this.movablePieces = movablePieces; - if (!movablePieces) notifyObservers(); + if (Boolean.FALSE.equals(movablePieces)) notifyObservers(); } /** @@ -359,7 +319,7 @@ public void setMovablePieces(Boolean movablePieces) { */ public void setPlayerHasDisconnected(Boolean playerHasDisconnected) { this.playerHasDisconnected = playerHasDisconnected; - if (playerHasDisconnected) notifyObservers(); + if (Boolean.TRUE.equals(playerHasDisconnected)) notifyObservers(); } /** @@ -378,7 +338,7 @@ public Boolean allRanked() { */ public void setAllRanked(Boolean allRanked) { this.allRanked = allRanked; - if (allRanked) notifyObservers(); + if (Boolean.TRUE.equals(allRanked)) notifyObservers(); } /** @@ -402,7 +362,7 @@ public void setStartPlayer(Player startPlayer) { /** * This method returns the all ready state. * - * @return the all ready state + * @return the already state */ public Boolean allReady() { return allReady; @@ -415,7 +375,7 @@ public Boolean allReady() { */ public void setAllReady(Boolean allReady) { this.allReady = allReady; - if (allReady) notifyObservers(); + if (Boolean.TRUE.equals(allReady)) notifyObservers(); } /** @@ -439,4 +399,25 @@ public Piece getPieceThroughIdentifier(String identifier) { int index = Integer.parseInt(parts[1]); return board.getPlayerData().get(color).getPieces()[index]; } + + public ArrayList getPlayerList() { + return playerList; + } + + public void addPlayerToList(Player player) { + playerList.add(player); + } + + public void removePlayerFromList(Player player) { + playerList.remove(player); + } + + public Player getPlayerFromList(String name) { + for (Player player : playerList) { + if (player.getName().equals(name)) { + return player; + } + } + return null; + } } diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/HomeNode.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/HomeNode.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/HomeNode.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/HomeNode.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/Node.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/Node.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/Piece.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Piece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/Piece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/Piece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/PieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/PieceState.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/PieceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/PieceState.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/Player.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java similarity index 66% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/Player.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java index e9e16645..7371cf7b 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/game/Player.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java @@ -11,6 +11,8 @@ public class Player { private Statistic playerStatistic; private ArrayList handCards; private final int id; + private Color color; + private boolean isReady; /** * This constructor constructs a new Player object @@ -21,6 +23,18 @@ public Player(int id) { handCards = new ArrayList<>(); } + /** + * This constructor constructs a new Player object + * + * @param name the name of the player + */ + public Player(String name) { + this.name = name; + playerStatistic = new Statistic(); + handCards = new ArrayList<>(); + id = 0; + } + /** * This method returns the give name of the Player * @@ -88,4 +102,40 @@ public BonusCard removeHandCard(BonusCard card) { public int getId() { return id; } + + /** + * This method returns the color of the player + * + * @return the color of the player + */ + public Color getColor() { + return color; + } + + /** + * This method sets the color of the player + * + * @param color the new color of the player + */ + public void setColor(Color color) { + this.color = color; + } + + /** + * This method returns if the player is ready + * + * @return true if the player is ready, false otherwise + */ + public boolean isReady() { + return isReady; + } + + /** + * This method sets the player to ready + * + * @param ready true if the player is ready, false otherwise + */ + public void setReady(boolean ready) { + isReady = ready; + } } diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/PlayerData.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/PlayerData.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/PlayerData.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/PlayerData.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/ShieldState.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/ShieldState.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/ShieldState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/ShieldState.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/StartNode.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/StartNode.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/StartNode.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/StartNode.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/game/Statistic.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Statistic.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/game/Statistic.java rename to Projekte/mdga/model/src/main/java/pp/mdga/game/Statistic.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/AnimationEnd.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/AnimationEnd.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/AnimationEnd.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/AnimationEnd.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/ClientInterpreter.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/ClientInterpreter.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/ClientMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientMessage.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/ClientMessage.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientMessage.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/ClientStartGame.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientStartGame.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/ClientStartGame.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientStartGame.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/DeselectTSK.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/DeselectTSK.java similarity index 91% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/DeselectTSK.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/DeselectTSK.java index 77e85c03..5f2d4e26 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/DeselectTSK.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/DeselectTSK.java @@ -23,6 +23,13 @@ public DeselectTSK(Color color) { this.color = color; } + /** + * Default constructor for serialization purposes. + */ + private DeselectTSK() { + color = null; + } + /** * Returns the color associated with the TSK to be deselected. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/ForceContinueGame.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceContinueGame.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/ForceContinueGame.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceContinueGame.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/ForceStartGame.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceStartGame.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/ForceStartGame.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceStartGame.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/JoinServer.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinServer.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/JoinServer.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinServer.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/LeaveGame.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LeaveGame.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/LeaveGame.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/LeaveGame.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/LobbyNotReady.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyNotReady.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/LobbyNotReady.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyNotReady.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/LobbyReady.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyReady.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/LobbyReady.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyReady.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/NoPowerCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/NoPowerCard.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/NoPowerCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/NoPowerCard.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestBriefing.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestBriefing.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestBriefing.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestBriefing.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestDice.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestDice.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestDice.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestDice.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestMove.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestMove.java similarity index 89% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestMove.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestMove.java index a2b14f23..80ccd63e 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/RequestMove.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestMove.java @@ -14,14 +14,23 @@ public class RequestMove extends ClientMessage { /** * Constructor for RequestMove + * * @param pieceIdentifier the piece identifier */ public RequestMove(String pieceIdentifier) { this.pieceIdentifier = pieceIdentifier; } + /** + * Default constructor for serialization purposes. + */ + private RequestMove() { + pieceIdentifier = null; + } + /** * Getter for the piece identifier + * * @return the piece identifier */ public String getPieceIdentifier() { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestPlayCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestPlayCard.java new file mode 100644 index 00000000..8c21b0b0 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestPlayCard.java @@ -0,0 +1,106 @@ +package pp.mdga.message.client; + +import com.jme3.network.serializing.Serializable; +import pp.mdga.game.BonusCard; + +/** + * A message sent by a client to request playing a bonus card. + */ +@Serializable +public class RequestPlayCard extends ClientMessage { + /** + * The bonus card to be played. + */ + private final BonusCard card; + + /** + * The identifier of the piece. + */ + private final String ownPieceIdentifier; + + private final String enemyPieceIdentifier; + + /** + * Constructs a new RequestPlayCard instance. + * + * @param card the bonus card to be played + * @param ownPieceIdentifier the identifier of the piece + */ + public RequestPlayCard(BonusCard card, String ownPieceIdentifier, String enemyPieceIdentifier) { + this.ownPieceIdentifier = ownPieceIdentifier; + this.card = card; + this.enemyPieceIdentifier = enemyPieceIdentifier; + } + + /** + * Default constructor for serialization purposes. + */ + private RequestPlayCard() { + card = null; + ownPieceIdentifier = null; + enemyPieceIdentifier = null; + } + + /** + * Creates a new RequestPlayCard instance for a given bonus card. + * + * @param ownPieceIdentifier the identifier of the piece + * @param enemyPieceIdentifier the identifier of the enemy piece + * @return a new RequestPlayCard instance + */ + public static RequestPlayCard requestPlaySwap(String ownPieceIdentifier, String enemyPieceIdentifier){ + return new RequestPlayCard(BonusCard.SWAP, ownPieceIdentifier, enemyPieceIdentifier); + } + + public static RequestPlayCard requestPlayShield(String ownPieceIdentifier){ + return new RequestPlayCard(BonusCard.SHIELD, ownPieceIdentifier, null); + } + + /** + * Gets the bonus card associated with this request. + * + * @return the bonus card + */ + public BonusCard getCard() { + return card; + } + + /** + * Gets the piece identifier associated with this request. + * + * @return the piece identifier + */ + public String getOwnPieceIdentifier() { + return ownPieceIdentifier; + } + + /** + * Gets the enemy piece identifier associated with this request. + * + * @return the enemy piece identifier + */ + public String getEnemyPieceIdentifier() { + return enemyPieceIdentifier; + } + + /** + * Returns a string representation of this message. + * + * @return a string representation of this message + */ + @Override + public String toString() { + return "RequestPlayCard={card=" + card.toString() + '}'; + } + + /** + * Accepts a visitor to process this message. + * + * @param interpreter the visitor to process this message + * @param from the connection ID from which the message was received + */ + @Override + public void accept(ClientInterpreter interpreter, int from) { + interpreter.received(this, from); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectCard.java similarity index 91% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectCard.java index a50d1fe6..2d806a82 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectCard.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectCard.java @@ -22,6 +22,13 @@ public SelectCard(BonusCard card) { this.card = card; } + /** + * Default constructor for serialization purposes. + */ + private SelectCard() { + card = null; + } + /** * Gets the bonus card associated with this selection. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectTSK.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectTSK.java similarity index 68% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectTSK.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectTSK.java index 6b870434..0bb1d071 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectTSK.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectTSK.java @@ -3,15 +3,32 @@ import com.jme3.network.serializing.Serializable; import pp.mdga.game.Color; +/** + * A message sent by a client to select a TSK. + */ @Serializable public class SelectTSK extends ClientMessage { - + /** + * The color associated with the TSK to be selected. + */ private final Color color; + /** + * Constructs a new SelectTSK message with the specified color. + * + * @param color the color associated with the TSK to be selected + */ public SelectTSK(Color color) { this.color = color; } + /** + * Default constructor for serialization purposes. + */ + private SelectTSK() { + color = null; + } + public Color getColor() { return color; } diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectedPieces.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectedPieces.java similarity index 89% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectedPieces.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectedPieces.java index 2e4f6a8d..d98b21bf 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectedPieces.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectedPieces.java @@ -14,14 +14,23 @@ public class SelectedPieces extends ClientMessage { /** * Constructor for SelectedPieces + * * @param pieceIdentifier the piece identifier */ public SelectedPieces(String pieceIdentifier) { this.pieceIdentifier = pieceIdentifier; } + /** + * Default constructor for serialization purposes. + */ + private SelectedPieces() { + pieceIdentifier = null; + } + /** * Getter for the piece identifier + * * @return the piece identifier */ public String getPieceIdentifier() { diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ActivePlayer.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ActivePlayer.java similarity index 91% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/ActivePlayer.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/ActivePlayer.java index 6127acff..551cd305 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ActivePlayer.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ActivePlayer.java @@ -8,7 +8,6 @@ */ @Serializable public class ActivePlayer extends ServerMessage { - /** * The color of the active player. */ @@ -24,6 +23,13 @@ public ActivePlayer(Color color) { this.color = color; } + /** + * Default constructor for serialization purposes. + */ + private ActivePlayer() { + color = null; + } + /** * Getter for the color of the active player * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/AnyPiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/AnyPiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/AnyPiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/AnyPiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/Briefing.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/Briefing.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/Briefing.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/Briefing.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/CeremonyMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/CeremonyMessage.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/CeremonyMessage.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/CeremonyMessage.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/Dice.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/Dice.java similarity index 93% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/Dice.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/Dice.java index 255a81b5..6b4bc1ee 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/Dice.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/Dice.java @@ -31,6 +31,14 @@ public Dice(int diceEye, List moveablePieces) { this.moveablePieces = moveablePieces; } + /** + * Default constructor for serialization purposes. + */ + private Dice() { + diceEye = 0; + moveablePieces = null; + } + /** * Constructor for inactivePlayer * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/DiceAgain.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceAgain.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/DiceAgain.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceAgain.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/DiceNow.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceNow.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/DiceNow.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceNow.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/EndOfTurn.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/EndOfTurn.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/EndOfTurn.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/EndOfTurn.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyAccept.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyAccept.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyAccept.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyAccept.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyDeny.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyDeny.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyDeny.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyDeny.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyPlayerJoin.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerJoin.java similarity index 91% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyPlayerJoin.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerJoin.java index 1eb189a0..9472a150 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyPlayerJoin.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerJoin.java @@ -23,6 +23,13 @@ public LobbyPlayerJoin(String name) { this.name = name; } + /** + * Default constructor for serialization purposes. + */ + private LobbyPlayerJoin() { + name = null; + } + /** * Returns the name of the player joining the lobby. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyPlayerLeave.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerLeave.java similarity index 92% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyPlayerLeave.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerLeave.java index 267a368f..f68b7054 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/LobbyPlayerLeave.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerLeave.java @@ -30,6 +30,14 @@ public LobbyPlayerLeave(String name, Color color) { this.color = color; } + /** + * Default constructor for serialization purposes. + */ + private LobbyPlayerLeave() { + name = null; + color = null; + } + /** * Returns the name of the player leaving the lobby. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/MoveMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java similarity index 91% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/MoveMessage.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java index d3df9f6c..27dbe370 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/MoveMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java @@ -22,6 +22,13 @@ public MoveMessage(String identifier) { this.pieceIdentifier = identifier; } + /** + * Default constructor for serialization purposes. + */ + private MoveMessage() { + pieceIdentifier = null; + } + /** * Returns the identifier of the piece that should be moved. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/NoTurn.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/NoTurn.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/NoTurn.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/NoTurn.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/PauseGame.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PauseGame.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/PauseGame.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/PauseGame.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/PlayCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayCard.java similarity index 50% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/PlayCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayCard.java index 4d027172..743bcbe8 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/PlayCard.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayCard.java @@ -18,16 +18,58 @@ public class PlayCard extends ServerMessage { */ private final String pieceIdentifier; + private final String pieceIdentifierEnemy; + /** * Constructs a new PlayCard message. * * @param card the card that should be played * @param pieceIdentifier the identifier of the piece that should be moved */ - public PlayCard(BonusCard card, String pieceIdentifier) { + public PlayCard(BonusCard card, String pieceIdentifier, String pieceIdentifierEnemy) { super(); this.card = card; this.pieceIdentifier = pieceIdentifier; + this.pieceIdentifierEnemy = pieceIdentifierEnemy; + } + + /** + * Default constructor for serialization purposes. + */ + private PlayCard() { + this.pieceIdentifierEnemy = null; + card = null; + pieceIdentifier = null; + } + + /** + * Creates a new PlayCard message for the given card and piece identifier. + * + * @param pieceIdentifier the identifier of the piece of the player that should be affected + * @param pieceIdentifierEnemy the identifier of the enemy piece that should be affected + * @return a new PlayCard message + */ + public static PlayCard swap(String pieceIdentifier, String pieceIdentifierEnemy) { + return new PlayCard(BonusCard.SWAP, pieceIdentifier, pieceIdentifierEnemy); + } + + /** + * Creates a new PlayCard message for the given card and piece identifier. + * + * @return a new PlayCard message + */ + public static PlayCard turbo() { + return new PlayCard(BonusCard.TURBO, null, null); + } + + /** + * Creates a new PlayCard message for the given card and piece identifier. + * + * @param pieceIdentifier the identifier of the piece of the player that should be affected + * @return a new PlayCard message + */ + public static PlayCard shield(String pieceIdentifier) { + return new PlayCard(BonusCard.SHIELD, pieceIdentifier, null); } /** @@ -48,6 +90,15 @@ public String getPieceIdentifier() { return pieceIdentifier; } + /** + * Returns the identifier of the enemy piece that should be moved. + * + * @return the identifier of the enemy piece that should be moved + */ + public String getPieceIdentifierEnemy() { + return pieceIdentifierEnemy; + } + /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/PossibleCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCard.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/PossibleCard.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCard.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/PossiblePiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePiece.java similarity index 60% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/PossiblePiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePiece.java index 4755b9c8..04bc73fa 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/PossiblePiece.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePiece.java @@ -29,6 +29,32 @@ public PossiblePiece() { possibleEnemyPieces = new ArrayList<>(); } + /** + * Swap the possible pieces + * + * @param possibleOwnPieces the list of possible own pieces + * @param possibleEnemyPieces the list of possible enemy pieces + * @return the swapped possible pieces + */ + public static PossiblePiece swapPossiblePieces(ArrayList possibleOwnPieces, ArrayList possibleEnemyPieces) { + PossiblePiece possiblePiece = new PossiblePiece(); + possiblePiece.possibleOwnPieces.addAll(possibleOwnPieces); + possiblePiece.possibleEnemyPieces.addAll(possibleEnemyPieces); + return possiblePiece; + } + + /** + * Get the possible pieces for the shield + * + * @param possibleOwnPieces the list of possible own pieces + * @return the possible pieces for the shield + */ + public static PossiblePiece shieldPossiblePieces(ArrayList possibleOwnPieces){ + PossiblePiece possiblePiece = new PossiblePiece(); + possiblePiece.possibleOwnPieces.addAll(possibleOwnPieces); + return possiblePiece; + } + /** * Add a piece to the list of possible pieces * @@ -50,10 +76,17 @@ public void addEnemyPossiblePiece(String piece) { /** Getter for the list of possible pieces * @return the list of possible pieces */ - public List getPossiblePieces() { + public List getOwnPossiblePieces() { return possibleOwnPieces; } + /** Getter for the list of possible enemy pieces + * @return the list of possible enemy pieces + */ + public List getEnemyPossiblePieces() { + return possibleEnemyPieces; + } + /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/RankingResponse.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingResponse.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/RankingResponse.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingResponse.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/RankingRollAgain.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingRollAgain.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/RankingRollAgain.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingRollAgain.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ReconnectBriefing.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ReconnectBriefing.java similarity index 90% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/ReconnectBriefing.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/ReconnectBriefing.java index 08f93d52..5a72f341 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ReconnectBriefing.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ReconnectBriefing.java @@ -21,6 +21,13 @@ public ReconnectBriefing(Game game) { this.game = game; } + /** + * Default constructor for serialization purposes. + */ + private ReconnectBriefing() { + this(null); + } + /** * Returns the game. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ResumeGame.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ResumeGame.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/ResumeGame.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/ResumeGame.java 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 similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerInterpreter.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerMessage.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerMessage.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerMessage.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerStartGame.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGame.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerStartGame.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGame.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/StartPiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartPiece.java similarity index 90% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/StartPiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartPiece.java index 37baf781..eb9c5508 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/StartPiece.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartPiece.java @@ -22,6 +22,14 @@ public StartPiece(String pieceIdentifier) { this.pieceIdentifier = pieceIdentifier; } + /** + * Default constructor for serialization purposes. + */ + private StartPiece() { + super(); + this.pieceIdentifier = ""; + } + /** * Gets the identifier for the piece. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/UpdateReady.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateReady.java similarity index 91% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/UpdateReady.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateReady.java index cd728468..6e815c95 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/UpdateReady.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateReady.java @@ -30,6 +30,15 @@ public UpdateReady(Color color, boolean ready) { this.ready = ready; } + /** + * Default constructor for serialization purposes. + */ + private UpdateReady() { + super(); + this.color = null; + this.ready = false; + } + /** * Gets the color associated with the update. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/UpdateTSK.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateTSK.java similarity index 92% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/UpdateTSK.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateTSK.java index f8caa21f..017dd29b 100644 --- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/UpdateTSK.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateTSK.java @@ -25,10 +25,18 @@ public class UpdateTSK extends ServerMessage { * @param color the color associated with the update */ public UpdateTSK(String name, Color color) { + super(); this.name = name; this.color = color; } + /** + * Default constructor for serialization purposes. + */ + private UpdateTSK() { + this("", null); + } + /** * Gets the name associated with the update. * diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/WaitPiece.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/WaitPiece.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/WaitPiece.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/WaitPiece.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/AcquireCardNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/AcquireCardNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/AcquireCardNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/AcquireCardNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/ActivePlayerNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/ActivePlayerNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/ActivePlayerNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/ActivePlayerNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/CeremonyNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/CeremonyNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/CeremonyNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/CeremonyNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/DiceNowNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/DiceNowNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/DiceNowNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/DiceNowNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/DicingNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/DicingNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/DicingNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/DicingNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/DrawCardNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/DrawCardNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/DrawCardNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/DrawCardNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/GameNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/GameNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/GameNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/GameNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/HomeMoveNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/HomeMoveNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/HomeMoveNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/HomeMoveNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/InterruptNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/InterruptNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/InterruptNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/InterruptNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/LobbyDialogNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/LobbyDialogNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/LobbyDialogNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/LobbyDialogNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/MovePieceNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/MovePieceNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/MovePieceNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/MovePieceNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/MoveThrowPieceNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/MoveThrowPieceNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/MoveThrowPieceNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/MoveThrowPieceNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/NoShieldNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/NoShieldNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/NoShieldNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/NoShieldNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/Notification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/Notification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/Notification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/Notification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/PieceInGameNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/PieceInGameNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/PieceInGameNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/PieceInGameNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/PlayCardNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/PlayCardNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/PlayCardNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/PlayCardNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/PlayerInGameNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/PlayerInGameNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/PlayerInGameNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/PlayerInGameNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/ResumeNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/ResumeNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/ResumeNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/ResumeNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/RollDiceNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/RollDiceNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/RollDiceNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/RollDiceNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/SelectableCardsNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/SelectableCardsNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/SelectableCardsNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/SelectableCardsNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/SelectablePiecesNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/SelectablePiecesNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/SelectablePiecesNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/SelectablePiecesNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/ShieldActiveNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/ShieldActiveNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/ShieldActiveNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/ShieldActiveNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/ShieldSuppressedNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/ShieldSuppressedNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/ShieldSuppressedNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/ShieldSuppressedNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/StartDialogNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/StartDialogNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/StartDialogNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/StartDialogNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/SwapPieceNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/SwapPieceNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/SwapPieceNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/SwapPieceNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/TskSelectNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/TskSelectNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/TskSelectNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/TskSelectNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/TskUnselectNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/TskUnselectNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/TskUnselectNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/TskUnselectNotification.java diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/notification/WaitMoveNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/WaitMoveNotification.java similarity index 100% rename from Projekte/mdga/model/src/main/java/pp.mdga/notification/WaitMoveNotification.java rename to Projekte/mdga/model/src/main/java/pp/mdga/notification/WaitMoveNotification.java 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..35c9b51c --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/Ceremony.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..a91abdea --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/ChoosePiece.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..3686ab3e --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/DetermineStartPlayer.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..18ceb186 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/FirstRoll.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..ad3f5897 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/Game.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..1f9e0351 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/Interrupt.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..02c32338 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/Lobby.java @@ -0,0 +1,14 @@ +package pp.mdga.server; + +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..b536b228 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/MovePiece.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..ea3bdfd2 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/NoPiece.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..79c77433 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/NoTurn.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..a00592b0 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/PowerCard.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..f93c7599 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/RollDice.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..140ac1b9 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/SecondRoll.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..d022a16c --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/SelectPiece.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..bb754961 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/ServerGameLogic.java @@ -0,0 +1,129 @@ +package pp.mdga.server; + +import pp.mdga.game.Game; +import pp.mdga.message.client.*; +import pp.mdga.message.server.NoTurn; +import pp.mdga.message.server.StartPiece; + +import java.lang.System.Logger; + +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..63ce27b1 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/ServerSender.java @@ -0,0 +1,16 @@ +package pp.mdga.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..949eb48f --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/ServerState.java @@ -0,0 +1,25 @@ +package pp.mdga.server; + +/** + * 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..b3d7a2d5 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/StartPiece.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..cb588fb0 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/ThirdRoll.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..77c28708 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/Turn.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +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..ed088e8f --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/WaitingPiece.java @@ -0,0 +1,7 @@ +package pp.mdga.server; + +public class WaitingPiece extends ChoosePiece { + public WaitingPiece(ServerGameLogic logic) { + super(logic); + } +} diff --git a/Projekte/mdga/model/src/main/resources/mdga.properties b/Projekte/mdga/model/src/main/resources/mdga.properties new file mode 100644 index 00000000..e69de29b diff --git a/Projekte/mdga/model/src/main/resources/mdga_de.properties b/Projekte/mdga/model/src/main/resources/mdga_de.properties new file mode 100644 index 00000000..e69de29b diff --git a/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java b/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java index 468f87b7..d48890a0 100644 --- a/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java +++ b/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java @@ -9,7 +9,6 @@ import pp.mdga.game.Color; import pp.mdga.game.Game; import pp.mdga.message.client.ClientMessage; -import pp.mdga.message.server.*; import java.util.ArrayList; diff --git a/Projekte/mdga/model/src/test/java/pp/mdga/server/serverState/ServerStateTest.java b/Projekte/mdga/model/src/test/java/pp/mdga/server/serverState/ServerStateTest.java index 5d11bbce..bd3c78e2 100644 --- a/Projekte/mdga/model/src/test/java/pp/mdga/server/serverState/ServerStateTest.java +++ b/Projekte/mdga/model/src/test/java/pp/mdga/server/serverState/ServerStateTest.java @@ -3,9 +3,7 @@ import org.junit.Before; import org.junit.Test; import pp.mdga.game.Game; -import pp.mdga.message.client.*; import pp.mdga.message.server.ServerMessage; -import pp.mdga.message.server.WaitPiece; import pp.mdga.server.*; import static org.junit.Assert.*;