reworked the client state machine and removed the seperate classes for the statemachines
these machines are now directly included in the parent states
This commit is contained in:
		@@ -1,5 +1,7 @@
 | 
			
		||||
<component name="ProjectRunConfigurationManager">
 | 
			
		||||
  <configuration default="false" name="MdgaApp" type="Application" factoryName="Application" singleton="false" nameIsGenerated="true">
 | 
			
		||||
    <option name="ALTERNATIVE_JRE_PATH" value="temurin-20" />
 | 
			
		||||
    <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
 | 
			
		||||
    <option name="MAIN_CLASS_NAME" value="pp.mdga.client.MdgaApp" />
 | 
			
		||||
    <module name="Projekte.mdga.client.main" />
 | 
			
		||||
    <option name="VM_PARAMETERS" value="-Djava.util.logging.config.file=logging.properties -ea" />
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,9 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ceremonyState.CeremonyStateMachine;
 | 
			
		||||
 | 
			
		||||
public class Ceremony extends ClientState {
 | 
			
		||||
    private final CeremonyStateMachine ceremonyStateMachine;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public Ceremony(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.ceremonyStateMachine = new CeremonyStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public CeremonyStateMachine getCeremonyStateMachine() {
 | 
			
		||||
        return ceremonyStateMachine;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
public class ClientAutomaton extends ClientStateMachine {
 | 
			
		||||
 | 
			
		||||
    private Dialogs dialogs;
 | 
			
		||||
    private Ceremony ceremony;
 | 
			
		||||
    private Game game;
 | 
			
		||||
    private Interrupt interrupt;
 | 
			
		||||
 | 
			
		||||
    public ClientAutomaton(ClientGameLogic logic){
 | 
			
		||||
        super(null, logic);
 | 
			
		||||
        dialogs = new Dialogs(this, logic);
 | 
			
		||||
        ceremony = new Ceremony(this, logic);
 | 
			
		||||
        game = new Game(this, logic);
 | 
			
		||||
        entry();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Dialogs initialState(){
 | 
			
		||||
        return dialogs;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,21 +1,27 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.gameState.turnState.choosePieceState.StartPiece;
 | 
			
		||||
import pp.mdga.game.BonusCard;
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
import pp.mdga.game.Game;
 | 
			
		||||
import pp.mdga.game.Piece;
 | 
			
		||||
import pp.mdga.message.client.ClientMessage;
 | 
			
		||||
import pp.mdga.message.server.*;
 | 
			
		||||
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
public class ClientGameLogic implements ServerInterpreter {
 | 
			
		||||
    static final System.Logger LOGGER = System.getLogger(ClientGameLogic.class.getName());
 | 
			
		||||
 | 
			
		||||
    private Game game;
 | 
			
		||||
    private final ClientSender clientSender;
 | 
			
		||||
    private ClientState state;
 | 
			
		||||
    private Map<UUID, Piece> pieces;
 | 
			
		||||
    private Map<UUID, BonusCard> cards;
 | 
			
		||||
 | 
			
		||||
    public ClientGameLogic(Game game, ClientSender clientSender) {
 | 
			
		||||
        this.game = game;
 | 
			
		||||
        this.clientSender = clientSender;
 | 
			
		||||
        state = new ClientAutomaton(this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void send(ClientMessage msg){
 | 
			
		||||
@@ -169,4 +175,46 @@ public void received(UpdateTSK msg) {
 | 
			
		||||
    public void received(WaitPiece msg) {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectPiece(UUID pieceId){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectCard(UUID cardId){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectTsk(Color color){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectDice(){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectName(String name){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectReady(boolean ready){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectHost(){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectLeave(){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectJoin(){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectStart(){
 | 
			
		||||
        //TODO
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,10 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
public abstract class ClientState implements Observer {
 | 
			
		||||
import pp.mdga.message.server.*;
 | 
			
		||||
 | 
			
		||||
import java.lang.System.Logger.Level;
 | 
			
		||||
 | 
			
		||||
public abstract class ClientState implements Observer, ServerInterpreter {
 | 
			
		||||
    protected static final System.Logger LOGGER = System.getLogger(ClientState.class.getName());
 | 
			
		||||
 | 
			
		||||
    protected ClientState parent;
 | 
			
		||||
@@ -12,13 +16,9 @@ protected ClientState(ClientState parent, ClientGameLogic logic){
 | 
			
		||||
        this.logic = logic;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void entry(){/* do nothing */}
 | 
			
		||||
    public abstract void enter();
 | 
			
		||||
 | 
			
		||||
    public void exit() {/* do nothing*/}
 | 
			
		||||
 | 
			
		||||
    public void gotoState(ClientState newState){
 | 
			
		||||
        throw new IllegalStateException("not in a statemachine");
 | 
			
		||||
    }
 | 
			
		||||
    public abstract void exit();
 | 
			
		||||
 | 
			
		||||
    public ClientState getParent(){
 | 
			
		||||
        return parent;
 | 
			
		||||
@@ -30,4 +30,139 @@ public void update() {/* do nothing */}
 | 
			
		||||
    public String toString(){
 | 
			
		||||
        return getClass().getSimpleName();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(ActivePlayer msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(AnyPiece msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(Briefing msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(CeremonyMessage msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(Dice msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(DiceAgain msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(DiceNow msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(EndOfTurn msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(LobbyAccept msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(LobbyDeny msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(LobbyPlayerJoin msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(LobbyPlayerLeave msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(MoveMessage msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(NoTurn msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(PauseGame msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(PlayCard msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(PossibleCard msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(PossiblePiece msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(RankingResponse msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(RankingRollAgain msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(ReconnectBriefing msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(ResumeGame msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(ServerStartGame msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(StartPiece msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(UpdateReady msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(UpdateTSK msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void received(WaitPiece msg) {
 | 
			
		||||
        LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
public abstract class ClientStateMachine extends ClientState {
 | 
			
		||||
 | 
			
		||||
    private ClientState state;
 | 
			
		||||
 | 
			
		||||
    protected ClientStateMachine(ClientState parent, ClientGameLogic logic){
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public abstract ClientState initialState();
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void gotoState(ClientState newState){
 | 
			
		||||
        LOGGER.log(System.Logger.Level.DEBUG, "{0}: {1} --> {2}", this, state, newState);
 | 
			
		||||
        enter(newState);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void entry(){
 | 
			
		||||
        final ClientState newState = initialState();
 | 
			
		||||
        LOGGER.log(System.Logger.Level.DEBUG, "{0}: initial state={1}", this, newState);
 | 
			
		||||
        enter(newState);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void enter(ClientState 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 exit(){state.exit();}
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String toString(){
 | 
			
		||||
        return super.toString() + "(in " + state + ")";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ClientState getState(){
 | 
			
		||||
        return state;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +1,48 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.dialogState.DialogsStateMachine;
 | 
			
		||||
import pp.mdga.client.dialogState.DialogStates;
 | 
			
		||||
import pp.mdga.client.dialogState.Lobby;
 | 
			
		||||
import pp.mdga.client.dialogState.NetworkDialog;
 | 
			
		||||
import pp.mdga.client.dialogState.StartDialog;
 | 
			
		||||
 | 
			
		||||
public class Dialogs extends ClientState {
 | 
			
		||||
    private final DialogsStateMachine dialogsStateMachine;
 | 
			
		||||
 | 
			
		||||
    private DialogStates currentState;
 | 
			
		||||
 | 
			
		||||
    private final Lobby lobby = new Lobby(this, logic);
 | 
			
		||||
    private final NetworkDialog networkDialog = new NetworkDialog(this, logic);
 | 
			
		||||
    private final StartDialog startDialog = new StartDialog(this, logic);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public Dialogs(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.dialogsStateMachine = new DialogsStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public DialogsStateMachine getDialogsStateMachine() {
 | 
			
		||||
        return dialogsStateMachine;
 | 
			
		||||
    @Override
 | 
			
		||||
    public void exit(){
 | 
			
		||||
        currentState.exit();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void enter(){
 | 
			
		||||
        currentState = startDialog;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setState(DialogStates newState){
 | 
			
		||||
        currentState.exit();
 | 
			
		||||
        currentState = newState;
 | 
			
		||||
        currentState.enter();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Lobby getLobby() {
 | 
			
		||||
        return lobby;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public NetworkDialog getNetworkDialog() {
 | 
			
		||||
        return networkDialog;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public StartDialog getStartDialog() {
 | 
			
		||||
        return startDialog;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,8 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.gameState.GameStateMachine;
 | 
			
		||||
 | 
			
		||||
public class Game extends ClientState {
 | 
			
		||||
    private final GameStateMachine gameStateMachine;
 | 
			
		||||
 | 
			
		||||
    public Game(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.gameStateMachine = new GameStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public GameStateMachine getGameStateMachine() {
 | 
			
		||||
        return gameStateMachine;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,8 @@
 | 
			
		||||
package pp.mdga.client;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.settingsState.SettingsStateMachine;
 | 
			
		||||
 | 
			
		||||
public class Settings extends ClientState {
 | 
			
		||||
    private final SettingsStateMachine settingsStateMachine;
 | 
			
		||||
 | 
			
		||||
    public Settings(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.settingsStateMachine = new SettingsStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public SettingsStateMachine getSettingsStateMachine() {
 | 
			
		||||
        return settingsStateMachine;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
package pp.mdga.client.ceremonyState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
 | 
			
		||||
public class CeremonyStateMachine extends ClientStateMachine {
 | 
			
		||||
 | 
			
		||||
    public CeremonyStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public Podium initialState() {
 | 
			
		||||
        return new Podium(this, logic);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
package pp.mdga.client.dialogState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
 | 
			
		||||
public class DialogsStateMachine extends ClientStateMachine {
 | 
			
		||||
    public DialogsStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public StartDialog initialState() {
 | 
			
		||||
        return new StartDialog(this, logic);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,9 +2,61 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.Dialogs;
 | 
			
		||||
 | 
			
		||||
public class NetworkDialog extends DialogStates {
 | 
			
		||||
 | 
			
		||||
    private final Dialogs parent;
 | 
			
		||||
 | 
			
		||||
    public NetworkDialog(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.parent = (Dialogs) parent;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean checkIP(String IP){
 | 
			
		||||
        String[] parts = IP.split("\\.");
 | 
			
		||||
 | 
			
		||||
        // Step 2: Check if there are exactly 4 parts
 | 
			
		||||
        if (parts.length != 4) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Step 3: Check each part for valid number
 | 
			
		||||
        for (String part : parts) {
 | 
			
		||||
            try {
 | 
			
		||||
                // Step 4: Convert each part into a number
 | 
			
		||||
                int num = Integer.parseInt(part);
 | 
			
		||||
 | 
			
		||||
                // Step 5: Check whether the number lies in between 0 and 255
 | 
			
		||||
                if (num < 0 || num > 255) {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            } catch (NumberFormatException e) {
 | 
			
		||||
                // If parsing fails, it's not a valid number
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // If all checks passed, return true
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void enter() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void exit() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectBack() {
 | 
			
		||||
        parent.setState(parent.getStartDialog());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectJoin(String IP) {
 | 
			
		||||
        if(checkIP(IP)){
 | 
			
		||||
            parent.setState(parent.getLobby());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,9 +2,36 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.Dialogs;
 | 
			
		||||
 | 
			
		||||
public class StartDialog extends DialogStates {
 | 
			
		||||
 | 
			
		||||
    private final Dialogs parent;
 | 
			
		||||
 | 
			
		||||
    public StartDialog(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.parent = (Dialogs) parent;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void enter() {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void exit() {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectJoin() {
 | 
			
		||||
        parent.setState(parent.getNetworkDialog());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectHost() {
 | 
			
		||||
        parent.setState(parent.getLobby());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void selectLeave() {
 | 
			
		||||
        parent.exit();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,17 +2,10 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.gameState.determineStartPlayer.DetermineStartPlayerStateMachine;
 | 
			
		||||
 | 
			
		||||
public class DetermineStartPlayer extends GameStates {
 | 
			
		||||
    private final DetermineStartPlayerStateMachine determineStartPlayerStateMachine;
 | 
			
		||||
 | 
			
		||||
    public DetermineStartPlayer(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.determineStartPlayerStateMachine = new DetermineStartPlayerStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public DetermineStartPlayerStateMachine getDetermineStartPlayerStateMachine() {
 | 
			
		||||
        return determineStartPlayerStateMachine;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
package pp.mdga.client.gameState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
 | 
			
		||||
public class GameStateMachine extends ClientStateMachine {
 | 
			
		||||
    public GameStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ClientState initialState() {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,17 +2,10 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.gameState.turnState.TurnStateMachine;
 | 
			
		||||
 | 
			
		||||
public class Turn extends GameStates {
 | 
			
		||||
    private final TurnStateMachine turnStateMachine;
 | 
			
		||||
 | 
			
		||||
    public Turn(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.turnStateMachine = new TurnStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public TurnStateMachine getTurnStateMachine() {
 | 
			
		||||
        return turnStateMachine;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,17 +0,0 @@
 | 
			
		||||
package pp.mdga.client.gameState.determineStartPlayer;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
import pp.mdga.client.RollRankingDice;
 | 
			
		||||
 | 
			
		||||
public class DetermineStartPlayerStateMachine extends ClientStateMachine {
 | 
			
		||||
    public DetermineStartPlayerStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public RollRankingDice initialState() {
 | 
			
		||||
        return new RollRankingDice(this, logic);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -2,7 +2,6 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.gameState.determineStartPlayer.DetermineStartPlayerStates;
 | 
			
		||||
 | 
			
		||||
public class RollRankingDice extends DetermineStartPlayerStates {
 | 
			
		||||
    public RollRankingDice(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,19 +1,11 @@
 | 
			
		||||
package pp.mdga.client.gameState.turnState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.gameState.turnState.choosePieceState.ChoosePieceStateMachine;
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
 | 
			
		||||
public class ChoosePiece extends TurnStates {
 | 
			
		||||
 | 
			
		||||
    private final ChoosePieceStateMachine choosePieceStateMachine;
 | 
			
		||||
 | 
			
		||||
    public ChoosePiece(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.choosePieceStateMachine = new ChoosePieceStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ChoosePieceStateMachine getChoosePieceStateMachine() {
 | 
			
		||||
        return choosePieceStateMachine;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,17 +2,10 @@
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.gameState.turnState.powerCardState.PowerCardStateMachine;
 | 
			
		||||
 | 
			
		||||
public class PowerCard extends TurnStates {
 | 
			
		||||
    private final PowerCardStateMachine powerCardStateMachine;
 | 
			
		||||
 | 
			
		||||
    public PowerCard(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
        this.powerCardStateMachine = new PowerCardStateMachine(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public PowerCardStateMachine getPowerCardStateMachine() {
 | 
			
		||||
        return powerCardStateMachine;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
package pp.mdga.client.gameState.turnState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
 | 
			
		||||
public class TurnStateMachine extends ClientStateMachine {
 | 
			
		||||
    public TurnStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public PowerCard initialState() {
 | 
			
		||||
        return new PowerCard(this, logic);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
package pp.mdga.client.gameState.turnState.choosePieceState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
 | 
			
		||||
public class ChoosePieceStateMachine extends ClientStateMachine {
 | 
			
		||||
    public ChoosePieceStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public NoPiece initialState() {
 | 
			
		||||
        return new NoPiece(this, logic);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
package pp.mdga.client.gameState.turnState.powerCardState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
 | 
			
		||||
public class PowerCardStateMachine extends ClientStateMachine {
 | 
			
		||||
    public PowerCardStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ChoosePowerCard initialState() {
 | 
			
		||||
        return new ChoosePowerCard(this, logic);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
package pp.mdga.client.settingsState;
 | 
			
		||||
 | 
			
		||||
import pp.mdga.client.ClientGameLogic;
 | 
			
		||||
import pp.mdga.client.ClientState;
 | 
			
		||||
import pp.mdga.client.ClientStateMachine;
 | 
			
		||||
 | 
			
		||||
public class SettingsStateMachine extends ClientStateMachine {
 | 
			
		||||
    public SettingsStateMachine(ClientState parent, ClientGameLogic logic) {
 | 
			
		||||
        super(parent, logic);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ClientState initialState() {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -4,10 +4,8 @@
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import pp.mdga.client.*;
 | 
			
		||||
import pp.mdga.client.Ceremony;
 | 
			
		||||
import pp.mdga.client.ceremonyState.CeremonyStateMachine;
 | 
			
		||||
import pp.mdga.client.ceremonyState.Podium;
 | 
			
		||||
import pp.mdga.client.ceremonyState.Statistics;
 | 
			
		||||
import pp.mdga.client.dialogState.DialogsStateMachine;
 | 
			
		||||
import pp.mdga.client.dialogState.Lobby;
 | 
			
		||||
import pp.mdga.client.dialogState.NetworkDialog;
 | 
			
		||||
import pp.mdga.client.dialogState.StartDialog;
 | 
			
		||||
@@ -16,13 +14,11 @@
 | 
			
		||||
import pp.mdga.client.gameState.determineStartPlayer.DetermineStartPlayerStateMachine;
 | 
			
		||||
import pp.mdga.client.gameState.turnState.*;
 | 
			
		||||
import pp.mdga.client.gameState.turnState.powerCardState.ChoosePowerCard;
 | 
			
		||||
import pp.mdga.client.gameState.turnState.powerCardState.PowerCardStateMachine;
 | 
			
		||||
import pp.mdga.client.gameState.turnState.powerCardState.Shield;
 | 
			
		||||
import pp.mdga.client.gameState.turnState.powerCardState.Swap;
 | 
			
		||||
import pp.mdga.client.Settings;
 | 
			
		||||
import pp.mdga.client.settingsState.AudioSettings;
 | 
			
		||||
import pp.mdga.client.settingsState.MainSettings;
 | 
			
		||||
import pp.mdga.client.settingsState.SettingsStateMachine;
 | 
			
		||||
import pp.mdga.client.settingsState.VideoSettings;
 | 
			
		||||
import pp.mdga.game.BonusCard;
 | 
			
		||||
import pp.mdga.game.Color;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user