package syncleus.dann.solve.vacuum;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import syncleus.dann.plan.agent.Action;
import syncleus.dann.search.framework.ActionsFunction;

/**
 * Specifies the actions available to the agent at state s
 * 
 * @author Andrew Brown
 */
public class VacuumWorldActions implements ActionsFunction {

	private static final Set<Action> _actions;
	static {
		Set<Action> actions = new HashSet<Action>();
		actions.add(VacuumEnvironment.ACTION_SUCK);
		actions.add(VacuumEnvironment.ACTION_MOVE_LEFT);
		actions.add(VacuumEnvironment.ACTION_MOVE_RIGHT);
		// Ensure cannot be modified.
		_actions = Collections.unmodifiableSet(actions);
	}

	/**
	 * Returns possible actions given this state
	 * 
	 * @param s
	 * @return possible actions given this state.
	 */
	@Override
	public Set<Action> actions(Object s) {
		return _actions;
	}
}
