package jrummikub.model;

import java.io.Serializable;

/**
 * Interface for {@link Player} model
 */
public interface IPlayer extends Serializable {

	/**
	 * Get the current hand of the player
	 * 
	 * @return the player's hand
	 */
	public IHand getHand();

	/**
	 * Set the current hand of the player
	 * 
	 * @param hand
	 *            the new hand
	 */
	public void setHand(IHand hand);

	/**
	 * Has the player laid out yet?
	 * 
	 * @return if the player has laid out
	 */
	public boolean getLaidOut();

	/**
	 * Returns the player settings
	 * 
	 * @return the player settings
	 */
	public PlayerSettings getPlayerSettings();

	/**
	 * Set if the player laid out
	 * 
	 * @param laidOut
	 *            the player laid out
	 * 
	 */
	public void setLaidOut(boolean laidOut);

	/**
	 * Getter for last turn invalid
	 * 
	 * @return last turn invalid
	 */
	public boolean wasLastTurnInvalid();

	/**
	 * Sets last turn invalid
	 * 
	 * @param value
	 *            last turn invalid
	 */
	public void setLastTurnInvalid(boolean value);

	/**
	 * Gets the number of stones put on table in player's last turn
	 * 
	 * @return number of stones
	 */
	public int getLastTurnStoneCount();

	/**
	 * Sets the number of stones out on the table in player's last turn
	 * 
	 * @param value
	 *            number of stones
	 */
	public void setLastTurnStoneCount(int value);
}