View Javadoc

1   package cz.cuni.amis.pogamut.base.agent.navigation;
2   
3   import cz.cuni.amis.pogamut.base.agent.navigation.impl.BasePathExecutor;
4   
5   /**
6    * If you did not read {@link IPathExecutor} javadoc - do it now! Following javadoc assumes you know what {@link IPathExecutor} is
7    * and how its interface works.
8    * <p><p>
9    * As the {@link IPathExecutor} interface is meant to provide a gateway for the user to navigate his/her bot
10   * through the environment, it can't be used (as is) as an interface for further {@link IPathExecutor} functionality
11   * decomposition into (for instance) navigators (i.e., to implement actual path-following into the different
12   * object that actual {@link IPathExecutor} implementation)
13   * <p><p>
14   * Note that example implementation is {@link BasePathExecutor} where new interface methods has better javadoc (bound to the
15   * actual {@link BasePathExecutor} implementation) that can give you hints how they are usually implemented.
16   * 
17   * @author Jimmy
18   * 
19   * @param <PATH_ELEMENT>
20   */
21  public interface IPathExecutorHelper<PATH_ELEMENT> extends IPathExecutor<PATH_ELEMENT> {
22  	
23  	/**
24  	 * Asks all {@link IStuckDetector} registered inside executor via {@link IPathExecutor#addStuckDetector(IStuckDetector)}
25  	 * whether the agent has stuck. 
26  	 * <p><p>
27  	 * This method checks (one-by-one) stuck detectors whether some of them is reporting that the agent has stuck.
28  	 * If the stuck is detected, particular {@link IStuckDetector} is returned. It the stuck is not detected,
29  	 * null is returned.
30  	 * 
31  	 * @return first detector to report that agent has stuck or null
32  	 */
33  	public IStuckDetector checkStuckDetectors();
34  	
35  	/**
36  	 * Switches from current path element index into the new one.
37  	 * <p><p>
38  	 * Effective only if {@link IPathExecutor#isExecuting()}.
39  	 * 
40  	 * @param index
41  	 */
42  	public void switchToAnotherPathElement(int index);
43  	
44  	/**
45  	 * Reports that the agent has stuck - this stuck is detected either by some registered {@link IStuckDetector}
46  	 * or some other part of the {@link IPathExecutor}.
47  	 * <p><p>
48  	 * Effective only if {@link IPathExecutor#isExecuting()}.
49  	 * 
50  	 * @param detector
51  	 */
52  	public void stuck();
53  	
54  	/**
55  	 * Reports that the agent has reached its target.
56  	 * <p><p>
57  	 * Effective only if {@link IPathExecutor#isExecuting()}.
58  	 */
59  	public void targetReached();
60  
61  }