added the constructors for all client states and their statemachines
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Animation extends ClientState {
|
||||
protected Animation(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class AudioSettings extends ClientState {
|
||||
protected AudioSettings(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Ceremony extends ClientState {
|
||||
private final CeremonyStateMachine ceremonyStateMachine = new CeremonyStateMachine();
|
||||
private final CeremonyStateMachine ceremonyStateMachine;
|
||||
|
||||
protected Ceremony(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.ceremonyStateMachine = new CeremonyStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class CeremonyStateMachine extends ClientStateMachine {
|
||||
|
||||
protected CeremonyStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Podium initialState() {
|
||||
return new Podium(this, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ChoosePiece extends ClientState {
|
||||
private final ChoosePieceStateMachine choosePieceStateMachine = new ChoosePieceStateMachine();
|
||||
private final ChoosePieceStateMachine choosePieceStateMachine;
|
||||
|
||||
protected ChoosePiece(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.choosePieceStateMachine = new ChoosePieceStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ChoosePieceStateMachine extends ClientStateMachine{
|
||||
protected ChoosePieceStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NoPiece initialState() {
|
||||
return new NoPiece(this, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ChoosePowerCard extends ClientState {
|
||||
protected ChoosePowerCard(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class ClientAutomaton extends ClientStateMachine {
|
||||
|
||||
public ClientAutomaton(ClientGameLogic logic){
|
||||
super(null, logic);
|
||||
entry();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dialogs initialState(){
|
||||
return new Dialogs(this, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,36 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
import pp.mdga.game.Game;
|
||||
import pp.mdga.message.client.ClientMessage;
|
||||
import pp.mdga.server.ServerSender;
|
||||
|
||||
public class ClientGameLogic {
|
||||
static final System.Logger LOGGER = System.getLogger(ClientGameLogic.class.getName());
|
||||
|
||||
private Game game;
|
||||
private final ClientSender clientSender;
|
||||
private ClientState state;
|
||||
|
||||
public ClientGameLogic(Game game, ClientSender clientSender) {
|
||||
this.game = game;
|
||||
this.clientSender = clientSender;
|
||||
state = new ClientAutomaton(this);
|
||||
}
|
||||
|
||||
public void send(ClientMessage msg){
|
||||
LOGGER.log(System.Logger.Level.INFO, "send {0}", msg);
|
||||
clientSender.send(msg);
|
||||
}
|
||||
|
||||
public ClientSender getClientSender(){
|
||||
return clientSender;
|
||||
}
|
||||
|
||||
public Game getGame(){
|
||||
return game;
|
||||
}
|
||||
|
||||
public ClientState getState(){
|
||||
return state;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
import pp.mdga.message.client.ClientMessage;
|
||||
|
||||
public interface ClientSender {
|
||||
void send(ClientMessage msg);
|
||||
}
|
||||
@@ -1,4 +1,33 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public abstract class ClientState {
|
||||
public abstract class ClientState implements Observer {
|
||||
protected static final System.Logger LOGGER = System.getLogger(ClientState.class.getName());
|
||||
|
||||
protected ClientState parent;
|
||||
|
||||
protected ClientGameLogic logic;
|
||||
|
||||
protected ClientState(ClientState parent, ClientGameLogic logic){
|
||||
this.parent = parent;
|
||||
this.logic = logic;
|
||||
}
|
||||
|
||||
public void entry(){/* do nothing */}
|
||||
|
||||
public void exit() {/* do nothing*/}
|
||||
|
||||
public void gotoState(ClientState newState){
|
||||
throw new IllegalStateException("not in a statemachine");
|
||||
}
|
||||
|
||||
public ClientState getParent(){
|
||||
return parent;
|
||||
}
|
||||
|
||||
public void update() {/* do nothing */}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return getClass().getSimpleName();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,46 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
import pp.mdga.message.server.*;
|
||||
|
||||
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,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class DetermineStartPlayer extends ClientState {
|
||||
private final DetermineStartPlayerStateMachine determineStartPlayerStateMachine = new DetermineStartPlayerStateMachine();
|
||||
private final DetermineStartPlayerStateMachine determineStartPlayerStateMachine;
|
||||
|
||||
protected DetermineStartPlayer(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.determineStartPlayerStateMachine = new DetermineStartPlayerStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class DetermineStartPlayerStateMachine extends ClientStateMachine{
|
||||
protected DetermineStartPlayerStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RollRankingDice initialState() {
|
||||
return new RollRankingDice(this, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Dialogs extends ClientState {
|
||||
private final DialogsStateMachine dialogsStateMachine = new DialogsStateMachine();
|
||||
private final DialogsStateMachine dialogsStateMachine;
|
||||
|
||||
public Dialogs(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.dialogsStateMachine = new DialogsStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class DialogsStateMachine extends ClientStateMachine {
|
||||
protected DialogsStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StartDialog initialState() {
|
||||
return new StartDialog(this, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class GameState extends ClientState {
|
||||
private final GameStateMachine gameStateMachine = new GameStateMachine();
|
||||
private final GameStateMachine gameStateMachine;
|
||||
|
||||
protected GameState(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.gameStateMachine = new GameStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class GameStateMachine extends ClientStateMachine {
|
||||
protected GameStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClientState initialState() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
import pp.mdga.server.GameState;
|
||||
|
||||
public class Interrupt extends ClientState {
|
||||
|
||||
private final GameState lastState;
|
||||
|
||||
public Interrupt(ClientState parent, ClientGameLogic logic, GameState lastState) {
|
||||
super(parent, logic);
|
||||
this.lastState = lastState;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Lobby extends ClientState {
|
||||
protected Lobby(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class MainSettings extends ClientState {
|
||||
protected MainSettings(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class MovePiece extends ClientState {
|
||||
protected MovePiece(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class NetworkDialog extends ClientState {
|
||||
protected NetworkDialog(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class NoPiece extends ClientState {
|
||||
protected NoPiece(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public interface Observer {
|
||||
void update();
|
||||
}
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class PlayPowerCard extends ClientState {
|
||||
protected PlayPowerCard(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Podium extends ClientState {
|
||||
protected Podium(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class PowerCard extends ClientState {
|
||||
private final PowerCardStateMachine powerCardStateMachine = new PowerCardStateMachine();
|
||||
private final PowerCardStateMachine powerCardStateMachine;
|
||||
|
||||
protected PowerCard(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.powerCardStateMachine = new PowerCardStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class PowerCardStateMachine extends ClientStateMachine {
|
||||
protected PowerCardStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChoosePowerCard initialState() {
|
||||
return new ChoosePowerCard(this, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class RollDice extends ClientState {
|
||||
protected RollDice(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class RollRankingDice extends ClientState {
|
||||
protected RollRankingDice(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class SelectPiece extends ClientState {
|
||||
protected SelectPiece(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Settings extends ClientState {
|
||||
private final SettingsStateMachine settingsStateMachine = new SettingsStateMachine();
|
||||
private final SettingsStateMachine settingsStateMachine;
|
||||
|
||||
protected Settings(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.settingsStateMachine = new SettingsStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class SettingsStateMachine extends ClientStateMachine {
|
||||
protected SettingsStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClientState initialState() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Shield extends ClientState {
|
||||
protected Shield(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Spectator extends ClientState {
|
||||
protected Spectator(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class StartDialog extends ClientState {
|
||||
protected StartDialog(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class StartPiece extends ClientState {
|
||||
protected StartPiece(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Statistics extends ClientState {
|
||||
protected Statistics(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Swap extends ClientState {
|
||||
protected Swap(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Turn extends ClientState {
|
||||
private final TurnStateMachine turnStateMachine = new TurnStateMachine();
|
||||
private final TurnStateMachine turnStateMachine;
|
||||
|
||||
protected Turn(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
this.turnStateMachine = new TurnStateMachine(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class TurnStateMachine extends ClientStateMachine {
|
||||
protected TurnStateMachine(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PowerCard initialState() {
|
||||
return new PowerCard(this, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class VideoSettings extends ClientState {
|
||||
protected VideoSettings(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class WaitRanking extends ClientState {
|
||||
protected WaitRanking(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class Waiting extends ClientState {
|
||||
protected Waiting(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package pp.mdga.client;
|
||||
|
||||
public class WaitingPiece extends ClientState {
|
||||
protected WaitingPiece(ClientState parent, ClientGameLogic logic) {
|
||||
super(parent, logic);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user