Files
kva/src/cards/maumau/model/PlayerHandler.java
2024-06-19 01:58:53 +02:00

104 lines
2.4 KiB
Java

package cards.maumau.model;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class PlayerHandler {
private final MauMau game;
private final List<Player> players = new LinkedList<>();
private final List<Player> ranking = new ArrayList<>();
private Player remember;
private PlayerState waitForNextTurnState;
private PlayerState waitForMauState;
private PlayerState waitForMauMauState;
private PlayerState finishedState;
private PlayerState currentState;
public PlayerHandler(MauMau game) {
this.game = game;
//Initialize all the States to be used
this.waitForNextTurnState = new WaitForNextTurnState(this);
this.waitForMauState = new WaitForMauState(this);
this.waitForMauMauState = new WaitForMauMauState(this);
this.finishedState = new FinishedState();
//set waitingForNextTurnState as default
this.currentState = waitForNextTurnState;
}
public void nextTurn(int n) {
currentState.nextTurn(n);
}
public void mau(Player p) {
currentState.mau(p);
}
public void maumau(Player p) {
currentState.maumau(p);
}
public List<Player> getPlayers() {
return players;
}
public List<Player> getRanking() {
return ranking;
}
public void addPlayer(Player player) {
players.addLast(player);
}
public void localNextTurn(int n) {
for(int i = 0; i < n; i++){
players.addLast(players.removeFirst());
// players.removeFirst();
}
}
public void finishPlayer(Player p) {
ranking.addLast(players.removeLast());
}
public Player getCurrentPlayer() {
return players.isEmpty() ? null : players.get(0);
}
public void setRemember(Player player) {
this.remember = player;
}
public Player getRemember() {
return remember;
}
public PlayerState getWaitForNextTurnState() {
return waitForNextTurnState;
}
public PlayerState getWaitForMauState() {
return waitForMauState;
}
public PlayerState getWaitForMauMauState() {
return waitForMauMauState;
}
public PlayerState getFinishedState() {
return finishedState;
}
public void setCurrentState(PlayerState state) {
this.currentState = state;
}
public void finishGame() {
game.getActionHandler().finishGame();
}
}