package jrummikub.control.turn;
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 hand
* active player's hand
* @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(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();
}