Example #1
0
    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);
    }
Example #2
0
    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);
    }