package jrummikub.control.turn; import jrummikub.model.GameSettings; import jrummikub.model.IPlayer; import jrummikub.model.ITable; import jrummikub.util.IEvent; import jrummikub.view.IView; /** * Interface containing shared methods of human and computer turn control * */ 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 turnMode * whether it is turn zero and if one may redeal */ public void setup(GameSettings settings, IPlayer player, ITable table, IView view, TurnMode turnMode); /** * Get the event that is emitted when the turn is over * * @return end of turn event */ public IEvent getEndOfTurnEvent(); /** * Emitted when the round is aborted and needs to be restarted * * @return the event */ public IEvent getRedealEvent(); /** * Start the turn */ public abstract void startTurn(); }