public Task buildTree() { List <Task> tasks = new List <Task>(); // if !locked, open door Task checkLock = new doorUnlocked(door); Task waitASec = new Wait(1f); Task openDoor = new OpenDoor(door); tasks.Add(checkLock); tasks.Add(waitASec); tasks.Add(openDoor); Sequence openUnlockedDoor = new Sequence(tasks); // barge it tasks = new List <Task>(); Task checkDoorClosed = new doorClosed(door); Task bargeIt = new BargeDoor(door); tasks.Add(checkDoorClosed); tasks.Add(waitASec); tasks.Add(bargeIt); Sequence bargeClosedDoor = new Sequence(tasks); // ways to open a closed door tasks = new List <Task>(); tasks.Add(openUnlockedDoor); tasks.Add(bargeClosedDoor); Selector openIt = new Selector(tasks); // get the cheese when door closed tasks = new List <Task>(); Task toDoor = new MoveToDoor(mouse, door); Task toTarget = new MoveToTarget(mouse, cheese); tasks.Add(toDoor); tasks.Add(waitASec); tasks.Add(openIt); tasks.Add(waitASec); tasks.Add(toTarget); Sequence reachTargetBehindClosedDoor = new Sequence(tasks); // get the cheese when door is open tasks = new List <Task>(); Task checkDoorOpen = new doorOpen(door); tasks.Add(checkDoorOpen); tasks.Add(toTarget); Sequence reachTargetBehindOpenDoor = new Sequence(tasks); // get that cheese tasks = new List <Task>(); tasks.Add(reachTargetBehindOpenDoor); tasks.Add(reachTargetBehindClosedDoor); Selector reachTarget = new Selector(tasks); return(reachTarget); }
public ITask ConfigureBehavior() { List <ITask> moveToOpenRoom = new List <ITask>(); ITask CheckOpenDoor = new isDoorOpen(door); ITask MoveIntoRoom = new MoveToTarget(); moveToOpenRoom.Add(CheckOpenDoor); moveToOpenRoom.Add(MoveIntoRoom); Sequence moveToOpenRoomSeq = new Sequence(moveToOpenRoom); List <ITask> tryToOpenDoor = new List <ITask>(); ITask isUnlocked = new isDoorUnlocked(door); ITask openDoor = new OpenDoor(door); tryToOpenDoor.Add(isUnlocked); tryToOpenDoor.Add(openDoor); ITask tryToOpenSeq = new Sequence(tryToOpenDoor); List <ITask> breakLockedDoor = new List <ITask>(); ITask doorClosed = new isDoorClosed(door); ITask bargeDoor = new BargeDoor(door); breakLockedDoor.Add(doorClosed); breakLockedDoor.Add(bargeDoor); ITask breakDoor = new Sequence(breakLockedDoor); List <ITask> interactWithDoor = new List <ITask>(); interactWithDoor.Add(tryToOpenSeq); interactWithDoor.Add(breakDoor); ITask interact = new Selector(interactWithDoor); List <ITask> moveToDoor = new List <ITask>(); ITask goToDoor = new MoveToDoor(); ITask goToRoom = new MoveToTarget(); moveToDoor.Add(goToDoor); moveToDoor.Add(interact); moveToDoor.Add(goToRoom); ITask moveToClosedRoomSeq = new Sequence(moveToDoor); List <ITask> taskList = new List <ITask>(); taskList.Add(moveToOpenRoomSeq); taskList.Add(moveToClosedRoomSeq); ITask root = new Selector(taskList); return(root); }