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 receivedSelectCard(SelectCard msg) { gameStateMachine.receivedSelectCard(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 Interrupt(parent, logic)); // todo: change to interrupt, save the last state of gamestatemachine, change from interrupt to gamestate has to restore the last state logic.getGame().removeObserver(this); } } }