1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public enum GameState {
JOINING {
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void joinPlayer(G game, Session session) {
game.insertPlayer(session);
if (game.getExpectedPlayerCount() == 0) {
game.setState(OPEN);
}
}
},
OPEN {
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void playGame(G game) {
game.performGame();
}
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void playTurn(G game) {
game.performTurn();
}
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void makeAction(G game, Session session, A action) {
game.performAction(session, action);
if (game.isOver()) {
game.setState(ENDED);
}
}
},
ENDED {
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void playGame(G game) {
/* Restart the game with the same players */
game.setState(OPEN);
}
};
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void joinPlayer(G game, Session session) { /* Nothing to do */ }
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void playGame(G game) { /* Nothing to do */ };
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void playTurn(G game) { /* Nothing to do */ };
public <B extends Board, A extends Action<B>, P extends Player<B, A>, G extends Game<B, A, P>> void makeAction(G game, Session session, A action) { /* Nothing to do */ };
} |
Partager