package gizmoball.ui;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * An enumeration for the types of interaction modes, used as a handle  
 * to access the specific interaction modes when externally setting the
 * current mode of the {@link AbstractGameBoardComponent GameBoard}.
 *  
 * @see AbstractInteractionMode
 * @author Albert Leung
 * @version 1.0
 */
public class InteractionModeType {

	/**
	 * The InteractionModeType corresponding to when the game is being played.
	 * 
	 */
	public static final InteractionModeType PLAYING = new InteractionModeType();
	/**
	 * The InteractionModeType corresponding to when the board is being edited.
	 * 
	 */
	public static final InteractionModeType EDITING = new InteractionModeType();
	/**
	 * A List of all possible InteractionModeTypes.
	 * 
	 */
	public static final List TYPES = 
		Collections.unmodifiableList(Arrays.asList(
			new InteractionModeType[] { PLAYING, EDITING } ));

	/**
	 * This object is purely static, so this ctor is not callable. 
	 */
	private InteractionModeType() {
		
	}
}
