All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.co.mruoc.nac.entities.Status Maven / Gradle / Ivy

package uk.co.mruoc.nac.entities;

import lombok.Builder;
import lombok.Data;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@Builder(toBuilder = true)
@Data
public class Status {

    private final int turn;
    private final boolean complete;
    private final Players players;

    public Status() {
        this(new Players());
    }

    public Status(Players players) {
        this(0, false, players);
    }

    public Status turnTaken() {
        return toBuilder()
                .turn(nextTurn())
                .players(players.updateCurrentPlayer())
                .build();
    }

    public Status winningTurnTaken() {
        return toBuilder().turn(nextTurn()).complete(true).build();
    }

    public char getCurrentPlayerToken() {
        return players.getCurrentPlayerToken();
    }

    public void validateIsTurn(char token) {
        players.validateIsTurn(token);
    }

    private int nextTurn() {
        return turn + 1;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy