package jrummikub.control.turn; import jrummikub.model.IHand; 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(); /** * Start the turn */ public abstract void startTurn(); }