using UnityEngine;
using System.Collections;

public class DecisionTree {

    public delegate bool Decision();
    public Decision decision;
    public delegate void Action();
    public Action action;
    private DecisionTree right;
    private DecisionTree left;

    public DecisionTree() {
        right = null;
        left = null;
		decision = null;
		action = null;
    }

	public bool isLeaf() {
		return (right == null && left == null);
	}

    public void setDecision(Decision d) {
        decision = d;
    }

    public void setAction(Action a) {
        action += a;
    }

    public void setLeft(DecisionTree node) {
		left = node;
    }

    public void setRight(DecisionTree node) {
        right = node;
    }

    public void search() {
        if (isLeaf()) {
            action();
        }
        else if (decision() == true) {
			left.search();
        }
        else if (decision() == false) {
			right.search();
        }

    }
}