Пример #1
0
    public Sequencer <BlackBoard> BuildTree(BlackBoard blackboard)
    {
        Sequencer <BlackBoard> rootNode = new Sequencer <BlackBoard>(blackboard);

        Iddle iddleNode = new Iddle(blackboard);

        rootNode.AddChild(iddleNode);

        Sequencer <BlackBoard> mining = new Sequencer <BlackBoard>(blackboard);

        rootNode.AddChild(mining);
        GoToMine goMineNode = new GoToMine(blackboard);
        Mine     mineNode   = new Mine(blackboard);

        mining.AddChild(goMineNode);
        mining.AddChild(mineNode);

        Sequencer <BlackBoard> depositing = new Sequencer <BlackBoard>(blackboard);

        rootNode.AddChild(depositing);
        GoHome  goHomeNode = new GoHome(blackboard);
        Deposit depoNode   = new Deposit(blackboard);

        depositing.AddChild(goHomeNode);
        depositing.AddChild(depoNode);



        return(rootNode);
    }
Пример #2
0
    private void BuildTree()
    {
        root = new Selector();
        Sequencer  seq1  = new Sequencer();
        Randomizer rand1 = new Randomizer();

        root.AddChild(rand1);
        root.AddChild(seq1);

        Condition con1 = new Condition(nearDogs);
        BAction   pact = new BAction(Play);
        BAction   wact = new BAction(Wander);
        BAction   ract = new BAction(Run);
        BAction   sact = new BAction(Sleep);

        seq1.AddChild(con1);
        seq1.AddChild(pact);

        rand1.AddChild(wact);
        rand1.AddChild(ract);
        // rand1.AddChild(sact);


        root.AddChild(new BAction(Wander));
    }
Пример #3
0
    void BuildTree()
    {
        Sequencer idleSeq  = new Sequencer();
        Sequencer pathSeq  = new Sequencer();
        Sequencer shootSeq = new Sequencer();


        InverterGadget invCon = new InverterGadget();

        invCon.SetChild(new Condition(ShouldTgt));
        idleSeq.AddChild(invCon);
        idleSeq.AddChild(new BAction(Idle));

        invCon = new InverterGadget();
        invCon.SetChild(new Condition(InTgtDist));
        pathSeq.AddChild(invCon);
        pathSeq.AddChild(new BAction(Path));

        shootSeq.AddChild(new Condition(InSights));
        shootSeq.AddChild(new BAction(Shoot));

        root.AddChild(idleSeq);
        root.AddChild(pathSeq);
        root.AddChild(shootSeq);
        root.AddChild(new BAction(Idle));
    }
        public void TestSequencerSucceedsIfNoneFail()
        {
            var sequencer = new Sequencer("", 1, 1);

            sequencer.AddChild(TestingResources.GetRunRunSuccess());
            sequencer.AddChild(TestingResources.GetRunRunSuccess());

            var actual = new List <BehaviorState>();

            var expected = new List <BehaviorState>();

            expected.Add(BehaviorState.Running);
            expected.Add(BehaviorState.Running);
            expected.Add(BehaviorState.Success);

            sequencer.Start().Subscribe((x) => actual.Add(x));
            Assert.AreEqual(expected, actual);
        }
        public void TestSequencerCompletesOnFirstFail()
        {
            var sequencer = new Sequencer("", 1, 1);

            sequencer.AddChild(TestingResources.GetRunRunSuccess());
            sequencer.AddChild(TestingResources.GetRunRunFail());

            //all of these should be ignored
            //TODO: Should probably check if these are run anyways
            //      through the Concat operation
            sequencer.AddChild(TestingResources.GetRunRunFail());
            sequencer.AddChild(TestingResources.GetRunRunFail());

            var actual = new List <BehaviorState>();

            var expected = new List <BehaviorState>();

            expected.Add(BehaviorState.Running);
            expected.Add(BehaviorState.Fail);

            sequencer.Start().Subscribe((x) => actual.Add(x));

            Assert.AreEqual(expected, actual);
        }