public BTEnemy(Agent ownerBrain) : base(ownerBrain) { rootSelector = new Selector(); enemyCheck = new Sequence(); patrolSequence = new Sequence(); suspiciousSequence = new Sequence(); ChaseSequence = new Sequence(); DistractionSequence = new Sequence(); parallelDetection = new Parallel(); checkInverter = new Inverter(); turnToPoint = new TurnToPoint(GetOwner()); patrol = new Patrol(GetOwner()); wait = new Wait(GetOwner()); detection = new Detection(GetOwner()); distraction = new Distraction(GetOwner()); suspicious = new Suspicious(GetOwner()); suspiciousAlert = new SuspiciousAlert(GetOwner()); moveToLKP = new MoveToLKP(GetOwner()); seen = new Seen(GetOwner()); chase = new Chase(GetOwner()); //Root -> Patrol and Check rootSelector.AddChild(parallelDetection); parallelDetection.AddChild(checkInverter); //A parallel to check for the player checkInverter.AddChild(detection); //Patrol alongside checking for the player parallelDetection.AddChild(patrolSequence); patrolSequence.AddChild(patrol); patrolSequence.AddChild(wait); patrolSequence.AddChild(turnToPoint); //Root -> Adding sequences rootSelector.AddChild(suspiciousSequence); rootSelector.AddChild(ChaseSequence); rootSelector.AddChild(DistractionSequence); //Distraction State DistractionSequence.AddChild(distraction); DistractionSequence.AddChild(wait); //Suspicious state suspiciousSequence.AddChild(suspicious); suspiciousSequence.AddChild(suspiciousAlert); suspiciousSequence.AddChild(moveToLKP); suspiciousSequence.AddChild(wait); //Chase state ChaseSequence.AddChild(seen); ChaseSequence.AddChild(chase); ChaseSequence.AddChild(wait); }
public void Returns_failure_when_child_returns_success() { var inverter = new Inverter(); inverter.AddChild(A.TaskStub().Build()); Assert.AreEqual(TaskStatus.Failure, inverter.Update()); }
public void Returns_continue_when_child_returns_continue() { var inverter = new Inverter(); inverter.AddChild(A.TaskStub().WithUpdateStatus(TaskStatus.Continue).Build()); Assert.AreEqual(TaskStatus.Continue, inverter.Update()); }
public void Returns_true_when_child_returns_false() { var inverter = new Inverter(); inverter.AddChild(A.TaskStub().WithUpdateStatus(TaskStatus.Failure).Build()); Assert.AreEqual(TaskStatus.Success, inverter.Update()); }