package jrummikub.control.turn;
import jrummikub.model.GameSettings;
import jrummikub.model.IPlayer;
import jrummikub.model.ITable;
import jrummikub.util.Event;
import jrummikub.util.IEvent;
import jrummikub.view.IView;
public interface ITurnControl {
/**
* Start the turn
*
* @param settings
* the game settings
* @param player
* the active player
* @param table
* current table
* @param view
* view for user interaction.
* @param inspectOnly
* the current turn doesn't allow any table manipulation
* @param mayRedeal
* true when the current player may decide to redeal
*/
public void setup(GameSettings settings, IPlayer player, ITable table,
IView view, boolean inspectOnly, boolean mayRedeal);
* Get the event that is emitted when the turn is over
* @return end of turn event
public abstract IEvent getEndOfTurnEvent();
* Emitted when the round is aborted and needs to be restarted
* @return the event
public abstract Event getRedealEvent();
public abstract void startTurn();
}