Task BuildTask_GetTreasue() { List <Task> taskList = new List <Task>(); Task isDoorNotLocked = new IsFalse(theDoor.isLocked); Task waitABeat = new Wait(0.5f); Task openDoor = new OpenDoor(theDoor); taskList.Add(isDoorNotLocked); taskList.Add(waitABeat); taskList.Add(openDoor); Sequence openUnlockedDoor = new Sequence(taskList); taskList = new List <Task>(); Task isDoorClosed = new IsTrue(theDoor.isClosed); Task hulkOut = new HulkOut(this.gameObject); Task bargeDoor = new BargeDoor(theDoor.transform.GetChild(0).GetComponent <Rigidbody>()); taskList.Add(isDoorClosed); taskList.Add(waitABeat); taskList.Add(hulkOut); taskList.Add(waitABeat); taskList.Add(bargeDoor); Sequence bargeClosedDoor = new Sequence(taskList); // open a closed door, one way or another taskList = new List <Task>(); taskList.Add(openUnlockedDoor); taskList.Add(bargeClosedDoor); Selector openTheDoor = new Selector(taskList); // get the treasure when the door is closed taskList = new List <Task>(); Task moveToDoor = new MoveKinematicToObject(this.GetComponent <Kinematic>(), theDoor.gameObject); Task moveToTreasure = new MoveKinematicToObject(this.GetComponent <Kinematic>(), theTreasure.gameObject); taskList.Add(moveToDoor); taskList.Add(waitABeat); taskList.Add(openTheDoor); // one way or another taskList.Add(waitABeat); taskList.Add(moveToTreasure); Sequence getTreasureBehindClosedDoor = new Sequence(taskList); // get the treasure when the door is open taskList = new List <Task>(); Task isDoorOpen = new IsFalse(theDoor.isClosed); taskList.Add(isDoorOpen); taskList.Add(moveToTreasure); Sequence getTreasureBehindOpenDoor = new Sequence(taskList); // get the treasure, one way or another taskList = new List <Task>(); taskList.Add(getTreasureBehindOpenDoor); taskList.Add(getTreasureBehindClosedDoor); Selector getTreasure = new Selector(taskList); return(getTreasure); }
Task BuildTask_GetHolocron() { List <Task> taskList = new List <Task>(); Task isDoorNotLocked = new isFalse(aDore.isLocked); Task waitABeat = new Wait(0.5f); Task openDoor = new OpenDoor(aDore); taskList.Add(isDoorNotLocked); taskList.Add(waitABeat); taskList.Add(openDoor); Sequence openUnlockedDoor = new Sequence(taskList); taskList = new List <Task>(); Task isDoorClosed = new isTrue(aDore.isClosed); Task darkside = new DarkSide(this.gameObject); Task bargeDoor = new PushDoor(aDore.GetComponent <Rigidbody>()); Task darksidetwo = new DarkSideTwo(this.gameObject); taskList.Add(isDoorClosed); taskList.Add(waitABeat); taskList.Add(darkside); taskList.Add(waitABeat); taskList.Add(darksidetwo); taskList.Add(waitABeat); taskList.Add(bargeDoor); Sequence bargeClosedDoor = new Sequence(taskList); taskList = new List <Task>(); taskList.Add(openUnlockedDoor); taskList.Add(bargeClosedDoor); Selector openTheDoor = new Selector(taskList); taskList = new List <Task>(); Task moveToDoor = new MoveKinematicToObject(this.GetComponent <Kinematic>(), aDore.gameObject); Task moveToTreasure = new MoveKinematicToObject(this.GetComponent <Kinematic>(), holocron.gameObject); taskList.Add(moveToDoor); taskList.Add(waitABeat); taskList.Add(openTheDoor); taskList.Add(waitABeat); taskList.Add(moveToTreasure); Sequence getTreasureBehindClosedDoor = new Sequence(taskList); taskList = new List <Task>(); Task isDoorOpen = new isFalse(aDore.isClosed); taskList.Add(isDoorOpen); taskList.Add(moveToTreasure); Sequence getTreasureBehindOpenDoor = new Sequence(taskList); taskList = new List <Task>(); taskList.Add(getTreasureBehindOpenDoor); taskList.Add(getTreasureBehindClosedDoor); Selector getTreasure = new Selector(taskList); return(getTreasure); }
Task BuildTask_GetHolocron() { Debug.Log("Checkpoint 3"); List <Task> taskList = new List <Task>(); //if door isn't locked, open it Task isDoorNotLocked = new isFalse(aDore.isLocked); Task openDoor = new OpenDoor(aDore); taskList.Add(isDoorNotLocked); taskList.Add(openDoor); Sequence openUnlockedDoor = new Sequence(taskList); //barge a closed door taskList = new List <Task>(); Task isDoorClosed = new isTrue(aDore.isClosed); Task darkside = new DarkSide(this.gameObject); Task bargeDoor = new PushDoor(aDore.GetComponent <Rigidbody>()); taskList.Add(isDoorClosed); taskList.Add(darkside); taskList.Add(bargeDoor); Sequence bargeClosedDoor = new Sequence(taskList); //open a closed door, one way or another taskList = new List <Task>(); taskList.Add(openUnlockedDoor); taskList.Add(bargeClosedDoor); Selector openTheDoor = new Selector(taskList); //get the treasure when the door is closed taskList = new List <Task>(); Task moveToDoor = new MoveKinematicToObject(this.GetComponent <Kinematic>(), aDore.gameObject); Task moveToTreasure = new MoveKinematicToObject(this.GetComponent <Kinematic>(), holocron.gameObject); taskList.Add(moveToDoor); taskList.Add(openTheDoor); taskList.Add(moveToTreasure); Sequence getTreasureBehindClosedDoor = new Sequence(taskList); //get the treasure when the door is open taskList = new List <Task>(); Task isDoorOpen = new isFalse(aDore.isClosed); taskList.Add(isDoorOpen); taskList.Add(moveToTreasure); Sequence getTreasureBehindOpenDoor = new Sequence(taskList); //get the treasure, one way or another??? taskList = new List <Task>(); taskList.Add(getTreasureBehindOpenDoor); taskList.Add(getTreasureBehindClosedDoor); Selector getTreasure = new Selector(taskList); return(getTreasure); }
Task BuildTask_GetPill() { List <Task> taskList = new List <Task>(); ///Open unlocked door Task isDoorNotLocked = new IsFalse(targetDoor.bIsLocked); Task catchBreath = new Pause(2f); Task openDoor = new OpenDoor(targetDoor); taskList.Add(isDoorNotLocked); taskList.Add(catchBreath); taskList.Add(openDoor); Sequence sqOpenUnlockedDoor = new Sequence(taskList); ///Barge door taskList = new List <Task>(); Task isDoorClosed = new IsTrue(targetDoor.bIsClosed); Task stackUp = new StackUp(this.gameObject); Task bargeDoor = new BargeDoor(targetDoor.transform.GetChild(0).GetComponent <Rigidbody>()); taskList.Add(isDoorClosed); taskList.Add(catchBreath); taskList.Add(stackUp); taskList.Add(catchBreath); taskList.Add(bargeDoor); Sequence sqBargeClosedDoor = new Sequence(taskList); ///Guarantee open closed door taskList = new List <Task>(); taskList.Add(sqOpenUnlockedDoor); taskList.Add(sqBargeClosedDoor); Selector sqOpenTheDoor = new Selector(taskList); ///Get pill behind closed door taskList = new List <Task>(); Task moveToDoor = new MoveKinematicToObject(this.gameObject.GetComponent <Kinematic>(), targetDoor.gameObject); Task moveToPill = new MoveKinematicToObject(this.gameObject.GetComponent <Kinematic>(), drugs.gameObject); taskList.Add(moveToDoor); taskList.Add(catchBreath); taskList.Add(sqOpenTheDoor); taskList.Add(catchBreath); taskList.Add(moveToPill); Sequence sqGetTreasureBehindClosedDoor = new Sequence(taskList); //Get pill if door is open taskList = new List <Task>(); Task isDoorOpen = new IsFalse(targetDoor.bIsClosed); taskList.Add(isDoorOpen); taskList.Add(moveToPill); Sequence sqGetTreasureBehindOpenDoor = new Sequence(taskList); //Guarantee get pill taskList = new List <Task>(); taskList.Add(sqGetTreasureBehindOpenDoor); taskList.Add(sqGetTreasureBehindClosedDoor); Selector sqGetTreasure = new Selector(taskList); return(sqGetTreasure); }
Task BuildTask() { List <Task> taskList = new List <Task>(); Task isOutOfFood = new IsTrue(OutOfFood); Task machineBroken = new IsTrue(MachineBroken); Task walkToCounter = new MoveKinematicToObject(this.GetComponent <Kinematic>(), stopPoint.gameObject, text); Task walkFromCounter = new MoveKinematicToObject(this.GetComponent <Kinematic>(), startPoint.gameObject, text); Task walkFromCounterMid = new MoveKinematicToObject(this.GetComponent <Kinematic>(), midPoint.gameObject, text); Task wait = new Wait(1.5f); Task orderFood = new OrderFood(text); Task giveFood = new GiveFood(textEmp); Task takeSlurpie = new TakeSlurpie(text); Task takingLong = new TakingLong(text); Task outOfFood = new OutOfFood(textEmp); Task outOfSlurpie = new OutOfSlurpie(textEmp); Task hulkOut = new HulkOut(text, this.gameObject); Task enterManager = new EnterManager(managerRb); Task killKaren = new KillKaren(this.gameObject, karenAnim); //if out of food, yell and get slurpie taskList.Add(isOutOfFood); taskList.Add(walkToCounter); taskList.Add(wait); taskList.Add(orderFood); taskList.Add(wait); taskList.Add(outOfFood); taskList.Add(wait); taskList.Add(takeSlurpie); taskList.Add(wait); taskList.Add(walkFromCounter); Sequence sequenceSlurpie = new Sequence(taskList); taskList = new List <Task>(); //if slurpie machine broken taskList.Add(machineBroken); taskList.Add(walkToCounter); taskList.Add(wait); taskList.Add(orderFood); taskList.Add(wait); taskList.Add(outOfSlurpie); taskList.Add(wait); taskList.Add(hulkOut); taskList.Add(wait); taskList.Add(wait); taskList.Add(takingLong); taskList.Add(enterManager); taskList.Add(walkFromCounterMid); taskList.Add(killKaren); Sequence sequenceKaren = new Sequence(taskList); taskList = new List <Task>(); //if else walk and get food taskList.Add(walkToCounter); taskList.Add(wait); taskList.Add(orderFood); taskList.Add(wait); taskList.Add(giveFood); taskList.Add(wait); taskList.Add(walkFromCounter); Sequence sequenceNormal = new Sequence(taskList); taskList = new List <Task>(); taskList.Add(sequenceSlurpie); taskList.Add(sequenceKaren); taskList.Add(sequenceNormal); Selector selector = new Selector(taskList); return(selector); }
tasks BuildTask_GetTreasue() { // create our behavior tree based on Millington pg. 344 // building from the bottom up //I like the use of a list, much more than what Millington List <tasks> taskList = new List <tasks>(); // if door isn't locked, open it tasks isDoorNotLocked = new IsFalse(theDoor.isLocked); tasks waitABeat = new Wait(0.5f); tasks openDoor = new OpenDoor(theDoor); taskList.Add(isDoorNotLocked); taskList.Add(waitABeat); taskList.Add(openDoor); Sequence openUnlockedDoor = new Sequence(taskList); // barge a closed door taskList = new List <tasks>(); tasks isDoorClosed = new IsTrue(theDoor.isClosed); // made a small change to get the rigid body of the door instead of the children tasks bargeDoor = new BargeDoor(theDoor.transform.GetComponent <Rigidbody>()); taskList.Add(isDoorClosed); taskList.Add(waitABeat); taskList.Add(bargeDoor); Sequence bargeClosedDoor = new Sequence(taskList); // open a closed door, one way or another taskList = new List <tasks>(); taskList.Add(openUnlockedDoor); taskList.Add(bargeClosedDoor); Selector openTheDoor = new Selector(taskList); // get the treasure when the door is closed taskList = new List <tasks>(); tasks moveToDoor = new MoveKinematicToObject(this.GetComponent <Kinematic>(), theDoor.gameObject); tasks moveToTreasure = new MoveKinematicToObject(this.GetComponent <Kinematic>(), theTreasure.gameObject); taskList.Add(moveToDoor); taskList.Add(waitABeat); taskList.Add(openTheDoor); // one way or another taskList.Add(waitABeat); taskList.Add(moveToTreasure); Sequence getTreasureBehindClosedDoor = new Sequence(taskList); // get the treasure when the door is open taskList = new List <tasks>(); tasks isDoorOpen = new IsFalse(theDoor.isClosed); taskList.Add(isDoorOpen); taskList.Add(moveToTreasure); Sequence getTreasureBehindOpenDoor = new Sequence(taskList); // get the treasure, one way or another taskList = new List <tasks>(); taskList.Add(getTreasureBehindOpenDoor); taskList.Add(getTreasureBehindClosedDoor); Selector getTreasure = new Selector(taskList); return(getTreasure); }