package jadex.bdi.examples.marsworld.movement; import jadex.application.space.envsupport.environment.AbstractTask; import jadex.application.space.envsupport.environment.IEnvironmentSpace; import jadex.application.space.envsupport.environment.ISpaceObject; import jadex.application.space.envsupport.math.IVector2; import jadex.bdi.planlib.PlanFinishedTaskCondition; import jadex.bdi.runtime.Plan; import java.util.HashMap; import java.util.Map; /** * The move to a location plan. */ public class MoveToLocationPlan extends Plan { /** * The plan body. */ public void body() { ISpaceObject myself = (ISpaceObject)getBeliefbase().getBelief("myself").getFact(); IVector2 dest = (IVector2)getParameter("destination").getValue(); Map props = new HashMap(); props.put(MoveTask.PROPERTY_DESTINATION, dest); props.put(MoveTask.PROPERTY_SCOPE, getScope().getExternalAccess()); props.put(AbstractTask.PROPERTY_CONDITION, new PlanFinishedTaskCondition(getPlanElement())); IEnvironmentSpace space = (IEnvironmentSpace)getBeliefbase().getBelief("environment").getFact(); Object taskid = space.createObjectTask(MoveTask.PROPERTY_TYPENAME, props, myself.getId()); // move = new MoveTask(dest, res, getExternalAccess()); // myself.addTask(move); SyncResultListener res = new SyncResultListener(); space.addTaskListener(taskid, myself.getId(), res); res.waitForResult(); } }