diff --git a/Projekte/.run/MdgaApp.run.xml b/Projekte/.run/MdgaApp.run.xml
index 051df2ea..0ed782b0 100644
--- a/Projekte/.run/MdgaApp.run.xml
+++ b/Projekte/.run/MdgaApp.run.xml
@@ -6,7 +6,7 @@
-
+
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/MdgaAnimation.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/MdgaAnimation.java
deleted file mode 100644
index 4d1e0fff..00000000
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/MdgaAnimation.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package pp.mdga.client.Animation;
-
-public enum MdgaAnimation {
-}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PileControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PileControl.java
deleted file mode 100644
index 67a4d994..00000000
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PileControl.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package pp.mdga.client.Board;
-
-class PileControl {
-
-}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/Dialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/Dialog.java
deleted file mode 100644
index b518a463..00000000
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/Dialog.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package pp.mdga.client.Dialog;
-
-public class Dialog {
-
-}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/MenuDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/MenuDialog.java
deleted file mode 100644
index 0ec98ab0..00000000
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/MenuDialog.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package pp.mdga.client.Dialog;
-
-public class MenuDialog {
-
-}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Gui/GuiView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Gui/GuiView.java
deleted file mode 100644
index 529225e8..00000000
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Gui/GuiView.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package pp.mdga.client.Gui;
-
-public class GuiView {
-
-}
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 479e485d..e58c5bc3 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
@@ -2,12 +2,12 @@
import com.jme3.app.SimpleApplication;
import com.jme3.system.NanoTimer;
-import pp.mdga.client.Acoustic.AcousticHandler;
-import pp.mdga.client.Acoustic.MdgaSound;
-import pp.mdga.client.Animation.AnimationHandler;
+import pp.mdga.client.acoustic.AcousticHandler;
+import pp.mdga.client.acoustic.MdgaSound;
+import pp.mdga.client.animation.AnimationHandler;
import com.jme3.system.AppSettings;
-import pp.mdga.client.Board.BoardView;
-import pp.mdga.client.Dialog.DialogView;
+import pp.mdga.client.board.BoardView;
+import pp.mdga.client.dialog.DialogView;
public class MdgaApp extends SimpleApplication {
private AnimationHandler animationHandler;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/AcousticHandler.java
similarity index 99%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/AcousticHandler.java
index 8ae659df..e03715ed 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/AcousticHandler.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/AcousticHandler.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Acoustic;
+package pp.mdga.client.acoustic;
import com.jme3.system.NanoTimer;
import pp.mdga.client.MdgaApp;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/GameMusic.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/GameMusic.java
similarity index 99%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/GameMusic.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/GameMusic.java
index 244f2b4e..fd3156bb 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/GameMusic.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/GameMusic.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Acoustic;
+package pp.mdga.client.acoustic;
import com.jme3.audio.AudioData;
import com.jme3.audio.AudioNode;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/GameSound.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/GameSound.java
similarity index 98%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/GameSound.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/GameSound.java
index 6bc76b8b..7d559a49 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/GameSound.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/GameSound.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Acoustic;
+package pp.mdga.client.acoustic;
import com.jme3.audio.AudioData;
import com.jme3.audio.AudioNode;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/MdgaSound.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MdgaSound.java
similarity index 94%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/MdgaSound.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MdgaSound.java
index b70d25c2..6f39f04c 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/MdgaSound.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MdgaSound.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Acoustic;
+package pp.mdga.client.acoustic;
/**
* Enum representing the various sound effects used in the game.
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/MusicAsset.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MusicAsset.java
similarity index 98%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/MusicAsset.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MusicAsset.java
index 691fbe70..58073c0e 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/MusicAsset.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MusicAsset.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Acoustic;
+package pp.mdga.client.acoustic;
/**
* Enum representing various music assets used in the game.
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/SoundAsset.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAsset.java
similarity index 96%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/SoundAsset.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAsset.java
index 32749c3c..a495ea57 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/SoundAsset.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAsset.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Acoustic;
+package pp.mdga.client.acoustic;
/**
* Enum representing various sound assets used in the game.
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/SoundAssetDelayVolume.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAssetDelayVolume.java
similarity index 87%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/SoundAssetDelayVolume.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAssetDelayVolume.java
index a9f1dfbf..a0fccb37 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Acoustic/SoundAssetDelayVolume.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAssetDelayVolume.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Acoustic;
+package pp.mdga.client.acoustic;
/**
* A record that encapsulates a sound asset along with its playback settings:
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/Animation.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Animation.java
similarity index 77%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/Animation.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Animation.java
index 4db87cec..b808f9d3 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/Animation.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Animation.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Animation;
+package pp.mdga.client.animation;
abstract class Animation {
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/AnimationHandler.java
similarity index 93%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationHandler.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/animation/AnimationHandler.java
index 1fdf223d..cee17634 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/AnimationHandler.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/AnimationHandler.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Animation;
+package pp.mdga.client.animation;
import pp.mdga.client.MdgaApp;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/EmptyAnimation.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/EmptyAnimation.java
similarity index 86%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/EmptyAnimation.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/animation/EmptyAnimation.java
index bd83c19f..b51d5535 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Animation/EmptyAnimation.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/EmptyAnimation.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Animation;
+package pp.mdga.client.animation;
class EmptyAnimation extends Animation {
@Override
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/MdgaAnimation.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/MdgaAnimation.java
new file mode 100644
index 00000000..cddf535d
--- /dev/null
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/MdgaAnimation.java
@@ -0,0 +1,4 @@
+package pp.mdga.client.animation;
+
+public enum MdgaAnimation {
+}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/AssetOnMap.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/AssetOnMap.java
similarity index 68%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/AssetOnMap.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/board/AssetOnMap.java
index c86364f8..7984ad77 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/AssetOnMap.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/AssetOnMap.java
@@ -1,3 +1,3 @@
-package pp.mdga.client.Board;
+package pp.mdga.client.board;
record AssetOnMap(BoardAsset asset, int x, int y, float rot) {}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardAsset.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardAsset.java
similarity index 98%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardAsset.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardAsset.java
index 70f850f5..cc52bee7 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardAsset.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardAsset.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Board;
+package pp.mdga.client.board;
enum BoardAsset {
bigTent,
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardView.java
similarity index 97%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardView.java
index e652faf7..ee2a6c02 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/BoardView.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardView.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Board;
+package pp.mdga.client.board;
import com.jme3.light.AmbientLight;
import com.jme3.light.DirectionalLight;
@@ -60,7 +60,7 @@ private void initMap() {
case cir -> addFigureToPlayerMap(assetToColor(BoardAsset.cir), assetOnMap);
case marine -> addFigureToPlayerMap(assetToColor(BoardAsset.marine), assetOnMap);
case node_normal, node_bonus, node_start ->
- infield.addLast(displayAndControl(assetOnMap, new NodeControl()));
+ infield.add(displayAndControl(assetOnMap, new NodeControl()));
default -> displayAsset(assetOnMap);
}
}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/MapLoader.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/MapLoader.java
similarity index 98%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/MapLoader.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/board/MapLoader.java
index d6a30228..2e176d83 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/MapLoader.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/MapLoader.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Board;
+package pp.mdga.client.board;
import java.io.BufferedReader;
import java.io.IOException;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/NodeControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/NodeControl.java
similarity index 92%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/NodeControl.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/board/NodeControl.java
index d3710e6e..f636a9f7 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/NodeControl.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/NodeControl.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Board;
+package pp.mdga.client.board;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PieceControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PieceControl.java
similarity index 92%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PieceControl.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/board/PieceControl.java
index 689411d7..264f8439 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Board/PieceControl.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PieceControl.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Board;
+package pp.mdga.client.board;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PileControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PileControl.java
new file mode 100644
index 00000000..f4e604c6
--- /dev/null
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PileControl.java
@@ -0,0 +1,5 @@
+package pp.mdga.client.board;
+
+class PileControl {
+
+}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/Dialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/Dialog.java
new file mode 100644
index 00000000..a39a2634
--- /dev/null
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/Dialog.java
@@ -0,0 +1,5 @@
+package pp.mdga.client.dialog;
+
+public class Dialog {
+
+}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/DialogView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/DialogView.java
similarity index 94%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/DialogView.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/DialogView.java
index 88d6b76a..13f9b2a2 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/DialogView.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/DialogView.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Dialog;
+package pp.mdga.client.dialog;
import pp.dialog.DialogManager;
import pp.mdga.client.MdgaApp;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/InterruptDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/InterruptDialog.java
similarity index 52%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/InterruptDialog.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/InterruptDialog.java
index 917a9401..4fd87803 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/InterruptDialog.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/InterruptDialog.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Dialog;
+package pp.mdga.client.dialog;
public class InterruptDialog {
}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/MenuDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/MenuDialog.java
new file mode 100644
index 00000000..5c834e4e
--- /dev/null
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/MenuDialog.java
@@ -0,0 +1,5 @@
+package pp.mdga.client.dialog;
+
+public class MenuDialog {
+
+}
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/NetworkDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/NetworkDialog.java
similarity index 51%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/NetworkDialog.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/NetworkDialog.java
index 020d69dc..f82bcca5 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/NetworkDialog.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/NetworkDialog.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Dialog;
+package pp.mdga.client.dialog;
public class NetworkDialog {
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/SoundDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SoundDialog.java
similarity index 50%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/SoundDialog.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SoundDialog.java
index e35b5667..456725ec 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/SoundDialog.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SoundDialog.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Dialog;
+package pp.mdga.client.dialog;
public class SoundDialog {
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/StartDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/StartDialog.java
similarity index 97%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/StartDialog.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/StartDialog.java
index 23d7f6f3..d0013c2b 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/StartDialog.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/StartDialog.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Dialog;
+package pp.mdga.client.dialog;
import com.simsilica.lemur.Checkbox;
import com.simsilica.lemur.Container;
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/VideoDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/VideoDialog.java
similarity index 50%
rename from Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/VideoDialog.java
rename to Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/VideoDialog.java
index ea6556f1..3f61ed3a 100644
--- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Dialog/VideoDialog.java
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/VideoDialog.java
@@ -1,4 +1,4 @@
-package pp.mdga.client.Dialog;
+package pp.mdga.client.dialog;
public class VideoDialog {
diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/GuiView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/GuiView.java
new file mode 100644
index 00000000..379c02a3
--- /dev/null
+++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/GuiView.java
@@ -0,0 +1,5 @@
+package pp.mdga.client.gui;
+
+public class GuiView {
+
+}
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
new file mode 100644
index 00000000..73f8f285
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Animation.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class Animation extends ClientState {
+}
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
index 28fdc5e7..b1eaade6 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/AudioSettings.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/AudioSettings.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class AudioSettings extends Settings {
+public class AudioSettings extends ClientState {
}
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
index cc2681b8..7be5866a 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Ceremony.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Ceremony.java
@@ -1,4 +1,5 @@
package pp.mdga.client;
public class Ceremony extends ClientState {
+ private final CeremonyStateMachine ceremonyStateMachine = new CeremonyStateMachine();
}
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
new file mode 100644
index 00000000..0449027d
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/CeremonyStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class CeremonyStateMachine extends ClientStateMachine {
+}
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
index 053b5b1f..0b9fd192 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePiece.java
@@ -1,4 +1,5 @@
package pp.mdga.client;
-public class ChoosePiece extends Turn {
+public class ChoosePiece extends ClientState {
+ private final ChoosePieceStateMachine choosePieceStateMachine = new ChoosePieceStateMachine();
}
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
new file mode 100644
index 00000000..45c965b6
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePieceStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class ChoosePieceStateMachine extends ClientStateMachine{
+}
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
index 2e5a7e50..72a8d3d4 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePowerCard.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/ChoosePowerCard.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class ChoosePowerCard extends PowerCard {
+public class ChoosePowerCard extends ClientState {
}
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
new file mode 100644
index 00000000..f5261224
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientAutomaton.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class ClientAutomaton extends ClientStateMachine {
+}
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
index 31a6ec61..9e7c3786 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientState.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientState.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class ClientState {
+public abstract class ClientState {
}
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
new file mode 100644
index 00000000..0c8717e9
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/ClientStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public abstract class ClientStateMachine extends ClientState {
+}
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
index f0a863b7..b12b6a6d 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/DetermineStartPlayer.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/DetermineStartPlayer.java
@@ -1,4 +1,5 @@
package pp.mdga.client;
-public class DetermineStartPlayer extends Game {
+public class DetermineStartPlayer extends ClientState {
+ private final DetermineStartPlayerStateMachine determineStartPlayerStateMachine = new DetermineStartPlayerStateMachine();
}
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
new file mode 100644
index 00000000..f8a2aeda
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/DetermineStartPlayerStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class DetermineStartPlayerStateMachine extends ClientStateMachine{
+}
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
index 3751c493..6b144ca8 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Dialogs.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Dialogs.java
@@ -1,4 +1,5 @@
package pp.mdga.client;
public class Dialogs extends ClientState {
+ private final DialogsStateMachine dialogsStateMachine = new DialogsStateMachine();
}
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
new file mode 100644
index 00000000..a1097aab
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/DialogsStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class DialogsStateMachine extends ClientStateMachine {
+}
diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/Game.java b/Projekte/mdga/model/src/main/java/pp.mdga/client/Game.java
deleted file mode 100644
index 8d30a46a..00000000
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Game.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package pp.mdga.client;
-
-public class Game extends ClientState {
-}
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
new file mode 100644
index 00000000..f4ac25fc
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/GameState.java
@@ -0,0 +1,5 @@
+package pp.mdga.client;
+
+public class GameState extends ClientState {
+ private final GameStateMachine gameStateMachine = new GameStateMachine();
+}
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
new file mode 100644
index 00000000..9686b7e6
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/GameStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class GameStateMachine extends ClientStateMachine {
+}
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
index a1818a79..a2f0f1c0 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Lobby.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Lobby.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class Lobby extends Dialogs {
+public class Lobby extends ClientState {
}
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
index c0220619..67e641bd 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/MainSettings.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/MainSettings.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class MainSettings extends Settings {
+public class MainSettings extends ClientState {
}
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
index 1ac11f65..e8c4c60b 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/MovePiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/MovePiece.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class MovePiece extends Turn {
+public class MovePiece extends ClientState {
}
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
index a61f60d9..846a5a02 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/NetworkDialog.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/NetworkDialog.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class NetworkDialog extends Dialogs {
+public class NetworkDialog extends ClientState {
}
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
index 5724881a..a52655b3 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/NoPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/NoPiece.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class NoPiece extends ChoosePiece {
+public class NoPiece extends ClientState {
}
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
index 6788cc18..1d79e516 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/PlayPowerCard.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/PlayPowerCard.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class PlayPowerCard extends PowerCard {
+public class PlayPowerCard extends ClientState {
}
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
new file mode 100644
index 00000000..8819183e
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Podium.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class Podium extends ClientState {
+}
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
index 7efd36f7..2ad3c2d1 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/PowerCard.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/PowerCard.java
@@ -1,4 +1,5 @@
package pp.mdga.client;
-public class PowerCard extends Turn {
+public class PowerCard extends ClientState {
+ private final PowerCardStateMachine powerCardStateMachine = new PowerCardStateMachine();
}
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
new file mode 100644
index 00000000..0bb5c60c
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/PowerCardStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class PowerCardStateMachine extends ClientStateMachine {
+}
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
index 9c8f65c3..f1056203 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/RollDice.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/RollDice.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class RollDice extends Turn {
+public class RollDice extends ClientState {
}
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
index 81171d9d..45871c8d 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/RollRankingDice.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/RollRankingDice.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class RollRankingDice extends DetermineStartPlayer {
+public class RollRankingDice extends ClientState {
}
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
index accebcfa..083ba28f 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/SelectPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/SelectPiece.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class SelectPiece extends ChoosePiece {
+public class SelectPiece extends ClientState {
}
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
index 006da013..2c118580 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Settings.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Settings.java
@@ -1,4 +1,5 @@
package pp.mdga.client;
-public class Settings {
+public class Settings extends ClientState {
+ private final SettingsStateMachine settingsStateMachine = new SettingsStateMachine();
}
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
new file mode 100644
index 00000000..e45870dd
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/SettingsStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class SettingsStateMachine extends ClientStateMachine {
+}
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
index 67dce1d8..eaaa67cc 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Shield.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Shield.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class Shield extends PowerCard {
+public class Shield extends ClientState {
}
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
index 713aee9a..50fc01f7 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Spectator.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Spectator.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class Spectator extends Game {
+public class Spectator extends ClientState {
}
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
index f7e86512..1330df6c 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/StartPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/StartPiece.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class StartPiece extends ChoosePiece {
+public class StartPiece extends ClientState {
}
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
new file mode 100644
index 00000000..e46a5e1d
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Statistics.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class Statistics extends ClientState {
+}
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
new file mode 100644
index 00000000..60a9d28e
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Swap.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class Swap extends ClientState {
+}
diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/SwitchEnemy.java b/Projekte/mdga/model/src/main/java/pp.mdga/client/SwitchEnemy.java
deleted file mode 100644
index b136ca16..00000000
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/SwitchEnemy.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package pp.mdga.client;
-
-public class SwitchEnemy extends PowerCard {
-}
diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/client/SwitchOwn.java b/Projekte/mdga/model/src/main/java/pp.mdga/client/SwitchOwn.java
deleted file mode 100644
index b4cd6526..00000000
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/SwitchOwn.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package pp.mdga.client;
-
-public class SwitchOwn extends PowerCard {
-}
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
index 5dc54c3e..db60e158 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Turn.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Turn.java
@@ -1,4 +1,5 @@
package pp.mdga.client;
-public class Turn extends Game {
+public class Turn extends ClientState {
+ private final TurnStateMachine turnStateMachine = new TurnStateMachine();
}
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
new file mode 100644
index 00000000..892cf3e6
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/TurnStateMachine.java
@@ -0,0 +1,4 @@
+package pp.mdga.client;
+
+public class TurnStateMachine extends ClientStateMachine {
+}
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
index e87036af..32d13929 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/VideoSettings.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/VideoSettings.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class VideoSettings extends Settings {
+public class VideoSettings extends ClientState {
}
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
index a99a3696..5614da6a 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/WaitRanking.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/WaitRanking.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class WaitRanking extends DetermineStartPlayer {
+public class WaitRanking extends ClientState {
}
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
index 82791f28..4f0d719b 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/Waiting.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/Waiting.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class Waiting extends Game {
+public class Waiting extends ClientState {
}
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
index 529f01c9..d07fe63e 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/client/WaitingPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/client/WaitingPiece.java
@@ -1,4 +1,4 @@
package pp.mdga.client;
-public class WaitingPiece extends ChoosePiece {
+public class WaitingPiece extends ClientState {
}
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
index 05d4f84f..82554248 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/game/Board.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/game/Board.java
@@ -57,4 +57,13 @@ public Node[] getInfield() {
public void setPieceOnBoard(int index, Piece piece) {
infield[index].setOccupant(piece);
}
+
+ public int getInfieldIndexOfPiece(Piece piece) {
+ for (int i = 0; i < infield.length; i++) {
+ if (infield[i].getOccupant() == piece) {
+ return i;
+ }
+ }
+ return -1;
+ }
}
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
index 92a5dd30..23f135e9 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
@@ -1,8 +1,8 @@
package pp.mdga.game;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.Map;
+import java.util.*;
+
+import pp.mdga.server.Observer;
/**
* The Game class represents the game state of the Ludo game.
@@ -12,7 +12,7 @@
public class Game {
private int diceModifier = 1;
private int diceEyes;
- private Map players;
+ private Map players = new HashMap();
private Statistic gameStatistics;
private ArrayList drawPile;
private ArrayList discardPile = new ArrayList<>();
@@ -21,13 +21,17 @@ public class Game {
private LinkedList order;
private Map playerConnectionID;
+ private ArrayList observers = new ArrayList<>();
+ private Boolean gameHasStarted = false;
+ private Boolean playerHasDisconnected = false;
+
private static final int AMOUNT_OF_TURBO_CARDS = 16;
private static final int AMOUNT_OF_SHIELD_AND_SWAP_CARDS = 12;
/**
* This constructor creates a new Game object.
*/
- public Game(){
+ public Game() {
gameStatistics = new Statistic();
drawPile = new ArrayList<>();
for (int i = 0; i < AMOUNT_OF_TURBO_CARDS; i++) {
@@ -223,7 +227,7 @@ public void setPlayerConnectionID(Map playerConnectionID) {
/**
* This method sets the player connection ID.
*
- * @param color the color of the player
+ * @param color the color of the player
* @param connectionID the new connection ID
*/
public void setPlayerConnectionID(Color color, int connectionID) {
@@ -243,7 +247,7 @@ public int getPlayerConnectionID(Color color) {
/**
* This method adds a player to the game.
*
- * @param color the color of the player
+ * @param color the color of the player
* @param player the player to be added
*/
public void addPlayer(Color color, Player player) {
@@ -258,4 +262,71 @@ public void addPlayer(Color color, Player player) {
public void removePlayer(Color color) {
players.remove(color);
}
+
+ /**
+ * This method adds an observer to the game.
+ *
+ * @param observer the observer to be added
+ */
+ public void addObserver(Observer observer) {
+ observers.add(observer);
+ }
+
+ /**
+ * This method removes an observer from the game.
+ *
+ * @param observer the observer to be removed
+ */
+ public void removeObserver(Observer observer) {
+ observers.remove(observer);
+ }
+
+ /**
+ * This method returns the game has started.
+ *
+ * @return the game has started
+ */
+ public Boolean getGameHasStarted() {
+ return gameHasStarted;
+ }
+
+ /**
+ * This method sets the game has started.
+ *
+ * @param gameHasStarted the new game has started
+ */
+ public void setGameHasStarted(Boolean gameHasStarted) {
+ this.gameHasStarted = gameHasStarted;
+ if (gameHasStarted) notifyObservers();
+ }
+
+ /**
+ * This method returns the player has disconnected.
+ *
+ * @return the player has disconnected
+ */
+ public Boolean playerHasDisconnected() {
+ return playerHasDisconnected;
+ }
+
+ /**
+ * This method sets the player has disconnected.
+ *
+ * @param playerHasDisconnected the new player has disconnected
+ */
+ public void setPlayerHasDisconnected(Boolean playerHasDisconnected) {
+ this.playerHasDisconnected = playerHasDisconnected;
+ if (playerHasDisconnected) {
+ notifyObservers();
+ }
+ }
+
+ /**
+ * This method notifies the observers.
+ */
+ public void notifyObservers() {
+ for (Observer observer : new ArrayList<>(observers)) {
+ observer.update();
+ }
+ }
}
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
index e68f3d26..aef3f73f 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/game/Piece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/game/Piece.java
@@ -6,7 +6,7 @@
public class Piece {
private ShieldState shield;
private PieceState state;
- private Color color;
+ private final Color color;
/**
* This constructor is used to create a new Piece
@@ -73,4 +73,13 @@ public boolean isShielded() {
public boolean isSuppressed() {
return shield == ShieldState.SUPPRESSED;
}
+
+ /**
+ * This method is used to get the color of the piece
+ *
+ * @return the color of the piece
+ */
+ public Color getColor() {
+ return color;
+ }
}
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
index 2a97d27c..e9e16645 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
@@ -79,4 +79,13 @@ public BonusCard removeHandCard(BonusCard card) {
}
return cardToRemove;
}
+
+ /**
+ * Returns the id of the connection to the client represented by this player.
+ *
+ * @return the id
+ */
+ public int getId() {
+ return id;
+ }
}
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
index eac80356..7f2d48d2 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/game/PlayerData.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/game/PlayerData.java
@@ -108,4 +108,46 @@ public Piece removePieceFromWaitingArea() {
public void setPieceInHome(int index, Piece piece) {
homeNodes[index].setOccupant(piece);
}
+
+ /**
+ * This method returns the homeNodes
+ *
+ * @return the homeNodes
+ */
+ public boolean homeIncludes(Piece piece) {
+ for (int i = 0; i < 4; i++) {
+ if (homeNodes[i].getOccupant() == piece) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * This method returns the homeNodes
+ *
+ * @return the homeNodes
+ */
+ public int getIndexInHome(Piece piece) {
+ for (int i = 0; i < 4; i++) {
+ if (homeNodes[i].getOccupant() == piece) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * This method returns the homeNodes
+ *
+ * @return the homeNodes
+ */
+ public boolean hasPieceInWaitingArea() {
+ for (Piece piece : waitingArea) {
+ if (piece != null) {
+ return true;
+ }
+ }
+ return false;
+ }
}
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
index b406a5da..0b7ec4d5 100644
--- 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
@@ -28,4 +28,10 @@ public interface ClientInterpreter {
void received(SelectTSK selectTSK , int from);
void received(ForceContinueGame forceContinueGame, int from);
+
+ void received(ClientStartGame clientStartGame, int from);
+
+ void received(NoPowerCard noPowerCard, int from);
+
+ void received(SelectedPieces selectedPieces, int from);
}
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
index 11dae3e0..9ae2d921 100644
--- 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
@@ -3,7 +3,6 @@
import com.jme3.network.AbstractMessage;
public abstract class ClientMessage extends AbstractMessage {
-
protected ClientMessage() {
super(true);
}
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
new file mode 100644
index 00000000..86a69f73
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/message/client/ClientStartGame.java
@@ -0,0 +1,13 @@
+package pp.mdga.message.client;
+
+public class ClientStartGame extends ClientMessage {
+ @Override
+ public String toString() {
+ return "null";
+ }
+
+ @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/NoPowerCard.java b/Projekte/mdga/model/src/main/java/pp.mdga/message/client/NoPowerCard.java
new file mode 100644
index 00000000..3fa227de
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/message/client/NoPowerCard.java
@@ -0,0 +1,13 @@
+package pp.mdga.message.client;
+
+public class NoPowerCard extends ClientMessage {
+ @Override
+ public String toString() {
+ return "null";
+ }
+
+ @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/SelectedPieces.java b/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectedPieces.java
new file mode 100644
index 00000000..d8978857
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/message/client/SelectedPieces.java
@@ -0,0 +1,13 @@
+package pp.mdga.message.client;
+
+public class SelectedPieces extends ClientMessage {
+ @Override
+ public String toString() {
+ return "null";
+ }
+
+ @Override
+ public void accept(ClientInterpreter interpreter, int from) {
+ interpreter.received(this, from);
+ }
+}
diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/StartGame.java b/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerStartGame.java
similarity index 78%
rename from Projekte/mdga/model/src/main/java/pp.mdga/message/server/StartGame.java
rename to Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerStartGame.java
index 0f189f65..5a684bb8 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/message/server/StartGame.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/message/server/ServerStartGame.java
@@ -1,6 +1,6 @@
package pp.mdga.message.server;
-public class StartGame extends ServerMessage {
+public class ServerStartGame extends ServerMessage {
@Override
public void accept(ServerInterpreter interpreter) {
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
index 75c1386b..667aa927 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Ceremony.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Ceremony.java
@@ -1,4 +1,7 @@
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
index b61504e8..b9e6f4be 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePiece.java
@@ -1,4 +1,9 @@
package pp.mdga.server;
-public class ChoosePiece extends Turn {
+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
new file mode 100644
index 00000000..89dbefeb
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ChoosePieceStateMachine.java
@@ -0,0 +1,12 @@
+package pp.mdga.server;
+
+public class ChoosePieceStateMachine extends ServerStateMachine{
+ public ChoosePieceStateMachine(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
+
+ @Override
+ public ServerState initialState() {
+ return null;
+ }
+}
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
index 51cb17fc..6160701f 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/DetermineStartPlayer.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/DetermineStartPlayer.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class DetermineStartPlayer extends Game {
+public class DetermineStartPlayer extends ServerState {
+ public DetermineStartPlayer(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
}
diff --git a/Projekte/mdga/model/src/main/java/pp.mdga/server/Dialogs.java b/Projekte/mdga/model/src/main/java/pp.mdga/server/Dialogs.java
deleted file mode 100644
index 43cf5534..00000000
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Dialogs.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package pp.mdga.server;
-
-public class Dialogs extends ServerState {
-}
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
index b24c5979..daa811dd 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/FirstRoll.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/FirstRoll.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class FirstRoll extends RollDice {
+public class FirstRoll extends ServerState {
+ public FirstRoll(ServerState parent, ServerGameLogic logic) {
+ super(parent, 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
deleted file mode 100644
index a8265d5e..00000000
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Game.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package pp.mdga.server;
-
-public class Game extends ServerState {
-}
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
new file mode 100644
index 00000000..53ee5901
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/GameState.java
@@ -0,0 +1,75 @@
+package pp.mdga.server;
+
+import pp.mdga.game.Piece;
+import pp.mdga.message.client.*;
+import pp.mdga.message.server.PossibleCard;
+
+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 receivedAnimationEnd(AnimationEnd msg) {
+ gameStateMachine.receivedAnimationEnd(msg);
+ }
+
+ // todo piece?
+ @Override
+ public void receivedConfirmPiece(Piece piece) {
+ gameStateMachine.receivedConfirmPiece(piece);
+ }
+
+ @Override
+ public void receivedNoPowerCard(NoPowerCard msg) {
+ gameStateMachine.receivedNoPowerCard(msg);
+ }
+
+ @Override
+ public void receivedPowerCardChoice(SelectCard msg) {
+ gameStateMachine.receivedPowerCardChoice(msg);
+ }
+
+ @Override
+ public void receivedRequestDice(RequestDice msg) {
+ gameStateMachine.receivedRequestDice(msg);
+ }
+
+ // todo msg?
+ @Override
+ public void receivedRollRankingDice() {
+ gameStateMachine.receivedRollRankingDice();
+ }
+
+ @Override
+ public void receivedSelectedPieces(SelectedPieces msg) {
+ gameStateMachine.receivedSelectedPieces(msg);
+ }
+
+ @Override
+ public void sentPossibleCard(PossibleCard msg) {
+ gameStateMachine.sentPossibleCard(msg);
+ }
+
+ // todo msg?, sent to everyone?
+ @Override
+ public void sentRankingResponse() {
+ gameStateMachine.sentRankingResponse();
+ }
+
+ @Override
+ public void update() {
+ if (logic.getGame().playerHasDisconnected()) {
+ parent.gotoState(new Ceremony(parent, logic));
+ 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
new file mode 100644
index 00000000..b01981de
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/GameStateMachine.java
@@ -0,0 +1,12 @@
+package pp.mdga.server;
+
+public class GameStateMachine extends ServerStateMachine{
+ public GameStateMachine(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
+
+ @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
index 8bcc7aa3..0f9e0fdc 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Interrupt.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Interrupt.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
public class Interrupt extends ServerState {
+ public Interrupt(ServerState parent, ServerGameLogic logic) {
+ super(parent, 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..b3bb2330
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Lobby.java
@@ -0,0 +1,52 @@
+package pp.mdga.server;
+
+import pp.mdga.message.client.*;
+import pp.mdga.message.server.ServerMessage;
+import pp.mdga.message.server.UpdateReady;
+import pp.mdga.message.server.UpdateTSK;
+
+public class Lobby extends ServerState {
+ public Lobby(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ logic.getGame().addObserver(this);
+ }
+
+ @Override
+ public void receivedDeselectTSK(DeselectTSK msg) {
+ broadcastUpdate(new UpdateTSK());
+ }
+
+ @Override
+ public void receivedNotReady(LobbyNotReady msg) {
+ broadcastUpdate(new UpdateReady());
+ }
+
+ @Override
+ public void receivedReady(LobbyReady msg) {
+ broadcastUpdate(new UpdateReady());
+ }
+
+ @Override
+ public void receivedSelectTSK(SelectTSK msg) {
+ broadcastUpdate(new UpdateTSK());
+ }
+
+ private void broadcastUpdate(ServerMessage updateMessage) {
+ for (var entry : logic.getGame().getPlayers().entrySet()) {
+ logic.send(entry.getValue(), updateMessage);
+ }
+ }
+
+ @Override
+ public void receivedStartGame(ClientStartGame msg) {
+ // todo: implement??
+ }
+
+ @Override
+ public void update() {
+ if (logic.getGame().getGameHasStarted()) {
+ parent.gotoState(new GameState(parent, logic));
+ logic.getGame().removeObserver(this);
+ }
+ }
+}
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
index 25b990ab..38d40399 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/MovePiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/MovePiece.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class MovePiece extends Turn {
+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
index eece4d47..9b2cbb48 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/NoPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/NoPiece.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class NoPiece extends ChoosePiece {
+public class NoPiece extends ServerState {
+ public NoPiece(ServerState parent, ServerGameLogic logic) {
+ super(parent, 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
index cd4540f0..9986437b 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/NoTurn.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/NoTurn.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class NoTurn extends ChoosePiece {
+public class NoTurn extends ServerState {
+ public NoTurn(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
}
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
new file mode 100644
index 00000000..a95ad2ad
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Observer.java
@@ -0,0 +1,5 @@
+package pp.mdga.server;
+
+public interface Observer {
+ void update();
+}
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
index 5eb67ff2..fef94ce2 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/PowerCard.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/PowerCard.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class PowerCard extends Turn {
+public class PowerCard extends ServerState {
+ public PowerCard(ServerState parent, ServerGameLogic logic) {
+ super(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
index 42c5cbb2..acb43509 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDice.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDice.java
@@ -1,4 +1,9 @@
package pp.mdga.server;
-public class RollDice extends Turn {
+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
new file mode 100644
index 00000000..49117d0c
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/RollDiceMachine.java
@@ -0,0 +1,12 @@
+package pp.mdga.server;
+
+public class RollDiceMachine extends ServerStateMachine {
+ public RollDiceMachine(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
+
+ @Override
+ public ServerState initialState() {
+ return null;
+ }
+}
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
index a4be16ed..63b98b9a 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/SecondRoll.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/SecondRoll.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class SecondRoll extends RollDice {
+public class SecondRoll extends ServerState {
+ public SecondRoll(ServerState parent, ServerGameLogic logic) {
+ super(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
index 3ca82aa2..f3e21d28 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/SelectPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/SelectPiece.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class SelectPiece extends ChoosePiece {
+public class SelectPiece extends ServerState {
+ public SelectPiece(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
}
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
new file mode 100644
index 00000000..4d8bbd31
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerAutomaton.java
@@ -0,0 +1,13 @@
+package pp.mdga.server;
+
+public class ServerAutomaton extends ServerStateMachine {
+ public ServerAutomaton(ServerGameLogic logic) {
+ super(null, logic);
+ entry();
+ }
+
+ @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
index 9b2a7615..c278a929 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerGameLogic.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerGameLogic.java
@@ -1,17 +1,24 @@
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;
-import java.lang.System.Logger.Level;
-import java.util.ArrayList;
public class ServerGameLogic implements ClientInterpreter {
- private static final Logger LOGGER = System.getLogger(ServerGameLogic.class.getName());
+ static final Logger LOGGER = System.getLogger(ServerGameLogic.class.getName());
-// private final List players = new ArrayList<>(4);
+ private final Game game;
+ private final ServerSender serverSender;
+ private ServerState state;
-// private ServerState state = new ;
+ public ServerGameLogic(Game game, ServerSender serverSender) {
+ this.game = game;
+ this.serverSender = serverSender;
+ state = new ServerAutomaton(this);
+ }
@Override
@@ -83,4 +90,43 @@ public void received(SelectTSK selectTSK, int from) {
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;
+ }
+
+ // todo: remove
+ 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
new file mode 100644
index 00000000..0efc8f5d
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerSender.java
@@ -0,0 +1,7 @@
+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
index 7f023a7d..56ed1be3 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerState.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerState.java
@@ -1,4 +1,192 @@
package pp.mdga.server;
-public class ServerState {
+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.PossibleCard;
+import java.lang.System.Logger;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public abstract class ServerState implements Observer {
+ protected static final Logger LOGGER = System.getLogger(ServerState.class.getName());
+ protected ServerState parent;
+ protected ServerGameLogic logic;
+
+ public ServerState(ServerState parent, ServerGameLogic logic) {
+ this.parent = parent;
+ this.logic = logic;
+ }
+
+ public void entry() { /* do nothing */ }
+
+ public void receivedAnimationEnd(AnimationEnd msg) { /* do nothing */ }
+
+ // todo piece?
+ public void receivedConfirmPiece(Piece piece) { /* do nothing */ }
+
+ public void receivedDeselectTSK(DeselectTSK msg) { /* do nothing */ }
+
+ public void receivedNoPowerCard(NoPowerCard msg) { /* do nothing */ }
+
+ public void receivedNotReady(LobbyNotReady msg) { /* do nothing */ }
+
+ public void receivedPowerCardChoice(SelectCard msg) { /* do nothing */ }
+
+ public void receivedReady(LobbyReady msg) { /* do nothing */ }
+
+ public void receivedRequestDice(RequestDice msg) { /* do nothing */ }
+
+ // todo msg?
+ public void receivedRollRankingDice() { /* do nothing */ }
+
+ public void receivedSelectTSK(SelectTSK msg) { /* do nothing */ }
+
+ public void receivedSelectedPieces(SelectedPieces msg) { /* do nothing */ }
+
+ public void receivedStartGame(ClientStartGame msg) { /* do nothing */ }
+
+ public void sentPossibleCard(PossibleCard msg) { /* do nothing */ }
+
+ // todo msg?, sent to everyone?
+ public void sentRankingResponse() { /* do nothing */ }
+
+ public void gotoState(ServerState state) {
+ throw new IllegalStateException("not in a statemachine");
+ }
+
+ public ServerState getParent() {
+ return parent;
+ }
+
+ 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) {
+ if (piece.getState() == PieceState.HOME){
+ return tryHomeMove(piece, calculateSteps());
+ } else {
+ int homeMoves = getHomeMoves(piece, calculateSteps());
+ if (homeMoves > 0){
+ return tryHomeMove(piece, homeMoves);
+ } else {
+ return tryInfieldMove(piece, calculateSteps());
+ }
+ }
+ }
+
+ /**
+ * 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;
+ }
+
+ @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
new file mode 100644
index 00000000..f97d54f2
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ServerStateMachine.java
@@ -0,0 +1,114 @@
+package pp.mdga.server;
+
+import pp.mdga.game.Piece;
+import pp.mdga.message.client.*;
+import pp.mdga.message.server.PossibleCard;
+
+public abstract class ServerStateMachine extends ServerState {
+
+ private ServerState state;
+
+ public ServerStateMachine(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
+
+ public abstract ServerState initialState();
+
+ @Override
+ public void gotoState(ServerState newState) {
+ LOGGER.log(System.Logger.Level.DEBUG, "{0}: {1} --> {2}", this, state, newState);
+ enter(newState);
+ }
+
+ @Override
+ public void entry() {
+ final ServerState newState = initialState();
+ LOGGER.log(System.Logger.Level.DEBUG, "{0}: initial state={1}", this, newState);
+ enter(newState);
+ }
+
+ 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();
+ }
+
+ @Override
+ public void receivedAnimationEnd(AnimationEnd msg) {
+ state.receivedAnimationEnd(msg);
+ }
+
+ // todo piece?
+ @Override
+ public void receivedConfirmPiece(Piece piece) {
+ state.receivedConfirmPiece(piece);
+ }
+
+ @Override
+ public void receivedDeselectTSK(DeselectTSK msg) {
+ state.receivedDeselectTSK(msg);
+ }
+
+ @Override
+ public void receivedNoPowerCard(NoPowerCard msg) {
+ state.receivedNoPowerCard(msg);
+ }
+
+ @Override
+ public void receivedNotReady(LobbyNotReady msg) {
+ state.receivedNotReady(msg);
+ }
+
+ @Override
+ public void receivedPowerCardChoice(SelectCard msg) {
+ state.receivedPowerCardChoice(msg);
+ }
+
+ @Override
+ public void receivedReady(LobbyReady msg) {
+ state.receivedReady(msg);
+ }
+
+ @Override
+ public void receivedRequestDice(RequestDice msg) {
+ state.receivedRequestDice(msg);
+ }
+
+ // todo msg?
+ @Override
+ public void receivedRollRankingDice() {
+ state.receivedRollRankingDice();
+ }
+
+ @Override
+ public void receivedSelectTSK(SelectTSK msg) {
+ state.receivedSelectTSK(msg);
+ }
+
+ @Override
+ public void receivedSelectedPieces(SelectedPieces msg) {
+ state.receivedSelectedPieces(msg);
+ }
+
+ @Override
+ public void receivedStartGame(ClientStartGame msg) {
+ state.receivedStartGame(msg);
+ }
+
+ @Override
+ public void sentPossibleCard(PossibleCard msg) {
+ state.sentPossibleCard(msg);
+ }
+
+ // todo msg?, sent to everyone?
+ @Override
+ public void sentRankingResponse() {
+ state.sentRankingResponse();
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "(in " + 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
index 3b9bdabf..24e23b60 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/StartPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/StartPiece.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class StartPiece extends ChoosePiece {
+public class StartPiece extends ServerState {
+ public StartPiece(ServerState parent, ServerGameLogic logic) {
+ super(parent, 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
index 45bded82..5f5245d1 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/ThirdRoll.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/ThirdRoll.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class ThirdRoll extends RollDice {
+public class ThirdRoll extends ServerState {
+ public ThirdRoll(ServerState parent, ServerGameLogic logic) {
+ super(parent, 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
index 80dd59b8..ce1447a6 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/Turn.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/Turn.java
@@ -1,4 +1,9 @@
package pp.mdga.server;
public class Turn extends ServerState {
+ private final TurnStateMachine turnStateMachine = new TurnStateMachine(this, logic);
+
+ public Turn(ServerState parent, ServerGameLogic logic) {
+ super(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
new file mode 100644
index 00000000..b54f2e07
--- /dev/null
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/TurnStateMachine.java
@@ -0,0 +1,12 @@
+package pp.mdga.server;
+
+public class TurnStateMachine extends ServerStateMachine {
+ public TurnStateMachine(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
+
+ @Override
+ public ServerState initialState() {
+ return null;
+ }
+}
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
index bb074027..dcc28f3c 100644
--- a/Projekte/mdga/model/src/main/java/pp.mdga/server/WaitingPiece.java
+++ b/Projekte/mdga/model/src/main/java/pp.mdga/server/WaitingPiece.java
@@ -1,4 +1,7 @@
package pp.mdga.server;
-public class WaitingPiece extends ChoosePiece {
+public class WaitingPiece extends ServerState {
+ public WaitingPiece(ServerState parent, ServerGameLogic logic) {
+ super(parent, logic);
+ }
}