Merge branch 'development' into 'dev/test'
TestMerge 3 See merge request progproj/gruppen-ht24/Gruppe-01!6
This commit is contained in:
@@ -1,4 +0,0 @@
|
||||
package pp.mdga.client.Animation;
|
||||
|
||||
public enum MdgaAnimation {
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package pp.mdga.client.Board;
|
||||
|
||||
class PileControl {
|
||||
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
|
||||
public class Dialog {
|
||||
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
|
||||
public class MenuDialog {
|
||||
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package pp.mdga.client.Gui;
|
||||
|
||||
public class GuiView {
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
package pp.mdga.client.acoustic;
|
||||
|
||||
import com.jme3.system.NanoTimer;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
package pp.mdga.client.acoustic;
|
||||
|
||||
import com.jme3.audio.AudioData;
|
||||
import com.jme3.audio.AudioNode;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
package pp.mdga.client.acoustic;
|
||||
|
||||
import com.jme3.audio.AudioData;
|
||||
import com.jme3.audio.AudioNode;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
package pp.mdga.client.acoustic;
|
||||
|
||||
/**
|
||||
* Enum representing the various sound effects used in the game.
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
package pp.mdga.client.acoustic;
|
||||
|
||||
/**
|
||||
* Enum representing various music assets used in the game.
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Acoustic;
|
||||
package pp.mdga.client.acoustic;
|
||||
|
||||
/**
|
||||
* Enum representing various sound assets used in the game.
|
||||
@@ -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:
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Animation;
|
||||
package pp.mdga.client.animation;
|
||||
|
||||
abstract class Animation {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Animation;
|
||||
package pp.mdga.client.animation;
|
||||
|
||||
import pp.mdga.client.MdgaApp;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Animation;
|
||||
package pp.mdga.client.animation;
|
||||
|
||||
class EmptyAnimation extends Animation {
|
||||
@Override
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client.animation;
|
||||
|
||||
public enum MdgaAnimation {
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
package pp.mdga.client.Board;
|
||||
package pp.mdga.client.board;
|
||||
|
||||
record AssetOnMap(BoardAsset asset, int x, int y, float rot) {}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Board;
|
||||
package pp.mdga.client.board;
|
||||
|
||||
enum BoardAsset {
|
||||
bigTent,
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Board;
|
||||
package pp.mdga.client.board;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Board;
|
||||
package pp.mdga.client.board;
|
||||
|
||||
import com.jme3.renderer.RenderManager;
|
||||
import com.jme3.renderer.ViewPort;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Board;
|
||||
package pp.mdga.client.board;
|
||||
|
||||
import com.jme3.renderer.RenderManager;
|
||||
import com.jme3.renderer.ViewPort;
|
||||
@@ -0,0 +1,5 @@
|
||||
package pp.mdga.client.board;
|
||||
|
||||
class PileControl {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
public class Dialog {
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
import pp.dialog.DialogManager;
|
||||
import pp.mdga.client.MdgaApp;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
public class InterruptDialog {
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
public class MenuDialog {
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
public class NetworkDialog {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
public class SoundDialog {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
import com.simsilica.lemur.Checkbox;
|
||||
import com.simsilica.lemur.Container;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client.Dialog;
|
||||
package pp.mdga.client.dialog;
|
||||
|
||||
public class VideoDialog {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package pp.mdga.client.gui;
|
||||
|
||||
public class GuiView {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Animation extends ClientState {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class AudioSettings extends Settings {
|
||||
public class AudioSettings extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Ceremony extends ClientState {
|
||||
private final CeremonyStateMachine ceremonyStateMachine = new CeremonyStateMachine();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class CeremonyStateMachine extends ClientStateMachine {
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ChoosePiece extends Turn {
|
||||
public class ChoosePiece extends ClientState {
|
||||
private final ChoosePieceStateMachine choosePieceStateMachine = new ChoosePieceStateMachine();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ChoosePieceStateMachine extends ClientStateMachine{
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ChoosePowerCard extends PowerCard {
|
||||
public class ChoosePowerCard extends ClientState {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ClientAutomaton extends ClientStateMachine {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ClientState {
|
||||
public abstract class ClientState {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public abstract class ClientStateMachine extends ClientState {
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class DetermineStartPlayer extends Game {
|
||||
public class DetermineStartPlayer extends ClientState {
|
||||
private final DetermineStartPlayerStateMachine determineStartPlayerStateMachine = new DetermineStartPlayerStateMachine();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class DetermineStartPlayerStateMachine extends ClientStateMachine{
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Dialogs extends ClientState {
|
||||
private final DialogsStateMachine dialogsStateMachine = new DialogsStateMachine();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class DialogsStateMachine extends ClientStateMachine {
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Game extends ClientState {
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class GameState extends ClientState {
|
||||
private final GameStateMachine gameStateMachine = new GameStateMachine();
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class GameStateMachine extends ClientStateMachine {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Lobby extends Dialogs {
|
||||
public class Lobby extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class MainSettings extends Settings {
|
||||
public class MainSettings extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class MovePiece extends Turn {
|
||||
public class MovePiece extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class NetworkDialog extends Dialogs {
|
||||
public class NetworkDialog extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class NoPiece extends ChoosePiece {
|
||||
public class NoPiece extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class PlayPowerCard extends PowerCard {
|
||||
public class PlayPowerCard extends ClientState {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Podium extends ClientState {
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class PowerCard extends Turn {
|
||||
public class PowerCard extends ClientState {
|
||||
private final PowerCardStateMachine powerCardStateMachine = new PowerCardStateMachine();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class PowerCardStateMachine extends ClientStateMachine {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class RollDice extends Turn {
|
||||
public class RollDice extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class RollRankingDice extends DetermineStartPlayer {
|
||||
public class RollRankingDice extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class SelectPiece extends ChoosePiece {
|
||||
public class SelectPiece extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Settings {
|
||||
public class Settings extends ClientState {
|
||||
private final SettingsStateMachine settingsStateMachine = new SettingsStateMachine();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class SettingsStateMachine extends ClientStateMachine {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Shield extends PowerCard {
|
||||
public class Shield extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Spectator extends Game {
|
||||
public class Spectator extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class StartPiece extends ChoosePiece {
|
||||
public class StartPiece extends ClientState {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Statistics extends ClientState {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Swap extends ClientState {
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class SwitchEnemy extends PowerCard {
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class SwitchOwn extends PowerCard {
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Turn extends Game {
|
||||
public class Turn extends ClientState {
|
||||
private final TurnStateMachine turnStateMachine = new TurnStateMachine();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class TurnStateMachine extends ClientStateMachine {
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class VideoSettings extends Settings {
|
||||
public class VideoSettings extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class WaitRanking extends DetermineStartPlayer {
|
||||
public class WaitRanking extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Waiting extends Game {
|
||||
public class Waiting extends ClientState {
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class WaitingPiece extends ChoosePiece {
|
||||
public class WaitingPiece extends ClientState {
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 <Color, Player> players;
|
||||
private Map<Color, Player> players = new HashMap<Color, Player>();
|
||||
private Statistic gameStatistics;
|
||||
private ArrayList<BonusCard> drawPile;
|
||||
private ArrayList<BonusCard> discardPile = new ArrayList<>();
|
||||
@@ -21,13 +21,17 @@ public class Game {
|
||||
private LinkedList<Color> order;
|
||||
private Map<Color, Integer> playerConnectionID;
|
||||
|
||||
private ArrayList<Observer> 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<Color, Integer> 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
import com.jme3.network.AbstractMessage;
|
||||
|
||||
public abstract class ClientMessage extends AbstractMessage {
|
||||
|
||||
protected ClientMessage() {
|
||||
super(true);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.server;
|
||||
|
||||
public class Ceremony extends ServerState {
|
||||
public Ceremony(ServerState parent, ServerGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
package pp.mdga.server;
|
||||
|
||||
public class Dialogs extends ServerState {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
package pp.mdga.server;
|
||||
|
||||
public class Game extends ServerState {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.server;
|
||||
|
||||
public class Interrupt extends ServerState {
|
||||
public Interrupt(ServerState parent, ServerGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
52
Projekte/mdga/model/src/main/java/pp.mdga/server/Lobby.java
Normal file
52
Projekte/mdga/model/src/main/java/pp.mdga/server/Lobby.java
Normal file
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user