Example usage for com.badlogic.gdx.ai.btree Task getChild

List of usage examples for com.badlogic.gdx.ai.btree Task getChild

Introduction

In this page you can find the example usage for com.badlogic.gdx.ai.btree Task getChild.

Prototype

public Task<E> getChild(int i) 

Source Link

Document

Returns the child at the given index.

Usage

From source file:com.badlogic.gdx.ai.tests.BehaviorTreeViewer.java

License:Apache License

@Override
public void create() {
    step = 0;// w  w  w . java2  s .c  o m
    taskNodes = new ObjectMap<Task<Dog>, TaskNode>();
    BehaviorTreeParser<Dog> parser = new BehaviorTreeParser<Dog>(BehaviorTreeParser.DEBUG_NONE);
    BehaviorTree<Dog> tree = parser.parse(Gdx.files.internal("data/dog.tree"), null);
    dog = new Dog("Dog 1", tree);
    tree.addListener(new BehaviorTree.Listener<Dog>() {
        @Override
        public void statusUpdated(Task<Dog> task, Task.Status previousStatus) {
            TaskNode tn = taskNodes.get(task);
            tn.updateStatus(previousStatus, step);
        }

        @Override
        public void childAdded(Task<Dog> task, int index) {
            TaskNode parentNode = taskNodes.get(task);
            Task<Dog> child = task.getChild(index);
            addToTree(displayTree, parentNode, child, null, 0);
            displayTree.expandAll();
        }
    });
    KryoUtils.initKryo();
    skin = new Skin(Gdx.files.internal("data/uiskin.json"));

    treeStatus = SUSPENDED;

    runDelaySlider = new Slider(0, 5, 0.01f, false, skin);
    runDelaySlider.setValue(.5f);

    runButton = new TextButton("Run", skin);

    stepButton = new TextButton("Step", skin);

    loadButton = new TextButton("Load", skin);
    loadButton.setDisabled(true);

    saveButton = new TextButton("Save", skin);

    stepLabel = new Label(new StringBuilder(LABEL_STEP + step), skin);

    stage = new Stage(new ScreenViewport());

    Table table = new Table();
    table.row().height(20).fillX();
    table.add(runDelaySlider);
    table.add(runButton);
    table.add(stepButton);
    table.add(saveButton);
    table.add(loadButton);
    table.add(stepLabel);
    table.row();
    displayTree = new Tree(skin);

    redrawTree();

    table.add(displayTree).colspan(3).fillX().fillY().expand(true, true);

    stage.addActor(table);
    table.setFillParent(true);

    saveButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            save();
            saved = true;
            loadButton.setDisabled(false);
        }
    });

    loadButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            load();
        }
    });

    stepButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            treeStatus = STEP; // step();
        }
    });

    runButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            if (treeStatus == SUSPENDED) {
                treeStatus = RUNNING;
                delay = runDelaySlider.getValue(); // this makes it start immediately
                runButton.setText("Suspend");
                stepButton.setDisabled(true);
                saveButton.setDisabled(true);
                loadButton.setDisabled(true);
            } else {
                treeStatus = SUSPENDED;
                runButton.setText("Run");
                stepButton.setDisabled(false);
                saveButton.setDisabled(false);
                loadButton.setDisabled(!saved);
            }
        }
    });

    Gdx.input.setInputProcessor(stage);

    setScreen(this);
}

From source file:com.badlogic.gdx.ai.tests.BehaviorTreeViewer.java

License:Apache License

private void addToTree(Tree displayTree, TaskNode parentNode, Task<Dog> task, IntArray taskSteps,
        int taskStepIndex) {
    TaskNode node = new TaskNode(task, taskSteps == null ? step - 1 : taskSteps.get(taskStepIndex), skin);
    taskNodes.put(task, node);/*from   w  w  w. ja v  a2s .c o m*/
    if (parentNode == null) {
        displayTree.add(node);
    } else {
        parentNode.add(node);
    }
    for (int i = 0; i < task.getChildCount(); i++) {
        Task<Dog> child = task.getChild(i);
        addToTree(displayTree, node, child, taskSteps, taskStepIndex + 1);
    }
}

From source file:com.badlogic.gdx.ai.tests.btree.BehaviorTreeViewer.java

License:Apache License

public BehaviorTreeViewer(BehaviorTree<E> tree, boolean loadAndSave, Skin skin) {
    super(skin);/* www  .j av  a2  s.  c o  m*/
    this.tree = tree;
    step = 0;
    taskNodes = new ObjectMap<Task<E>, TaskNode>();
    tree.addListener(new BehaviorTree.Listener<E>() {
        @Override
        public void statusUpdated(Task<E> task, Task.Status previousStatus) {
            TaskNode tn = taskNodes.get(task);
            if (tn != null)
                tn.updateStatus(previousStatus, step);
        }

        @Override
        public void childAdded(Task<E> task, int index) {
            TaskNode parentNode = taskNodes.get(task);
            Task<E> child = task.getChild(index);
            addToTree(displayTree, parentNode, child, null, 0);
            displayTree.expandAll();
        }
    });

    treeStatus = BT_SUSPENDED;

    runDelaySlider = new Slider(0, 5, 0.01f, false, skin);
    runDelaySlider.setValue(.5f);

    runButton = new TextButton("Run", skin);
    runButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            if (treeStatus == BT_SUSPENDED) {
                treeStatus = BT_RUNNING;
                runDelayAccumulator = runDelaySlider.getValue(); // this makes it start immediately
                runButton.setText("Suspend");
                stepButton.setDisabled(true);
                if (saveButton != null)
                    saveButton.setDisabled(true);
                if (loadButton != null)
                    loadButton.setDisabled(true);
            } else {
                treeStatus = BT_SUSPENDED;
                runButton.setText("Run");
                stepButton.setDisabled(false);
                if (saveButton != null)
                    saveButton.setDisabled(false);
                if (loadButton != null)
                    loadButton.setDisabled(!saved);
            }
        }
    });

    stepButton = new TextButton("Step", skin);
    stepButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            treeStatus = BT_STEP;
        }
    });

    resetButton = new TextButton("Reset", skin);
    resetButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            BehaviorTreeViewer.this.tree.reset();
            rebuildDisplayTree();
        }
    });

    if (loadAndSave) {
        loadButton = new TextButton("Load", skin);
        loadButton.setDisabled(true);
        loadButton.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                load();
            }
        });

        saveButton = new TextButton("Save", skin);
        saveButton.addListener(new ChangeListener() {
            @Override
            public void changed(ChangeEvent event, Actor actor) {
                save();
                saved = true;
                loadButton.setDisabled(false);
            }
        });
    }

    stepLabel = new Label(new StringBuilder(LABEL_STEP + step), skin);

    this.row().height(26).fillX();
    this.add(runDelaySlider);
    this.add(runButton);
    this.add(stepButton);
    this.add(resetButton);
    if (loadAndSave) {
        this.add(saveButton);
        this.add(loadButton);
    }
    this.add(stepLabel);
    this.row();
    displayTree = new Tree(skin);

    rebuildDisplayTree();

    this.add(displayTree).colspan(5 + (loadAndSave ? 2 : 0)).grow();
}

From source file:com.badlogic.gdx.ai.tests.btree.BehaviorTreeViewer.java

License:Apache License

private int addToTree(Tree displayTree, TaskNode parentNode, Task<E> task, IntArray taskSteps,
        int taskStepIndex) {
    TaskNode node = new TaskNode(task, this, taskSteps == null ? step - 1 : taskSteps.get(taskStepIndex),
            getSkin());/*from  w w w  .j  a  v a 2 s.  co m*/
    taskNodes.put(task, node);
    if (parentNode == null) {
        displayTree.add(node);
    } else {
        parentNode.add(node);
    }
    taskStepIndex++;
    for (int i = 0; i < task.getChildCount(); i++) {
        Task<E> child = task.getChild(i);
        taskStepIndex = addToTree(displayTree, node, child, taskSteps, taskStepIndex);
    }
    return taskStepIndex;
}