public DecisionTreeStatus Tick(long TickTime, T context) { IEnumerable <IDecisionNode <T> > searchNodes = (m_CurrentRunningNode == null) ? m_nodes : m_nodes.SkipWhile(node => node != m_CurrentRunningNode); DecisionTreeStatus accumulator = DecisionTreeStatus.Failure; foreach (IDecisionNode <T> currentNode in searchNodes) { if (accumulator != DecisionTreeStatus.Success) { DecisionTreeStatus NodeDecisionResult = currentNode.Tick(TickTime, context); if (NodeDecisionResult == DecisionTreeStatus.Running) { m_CurrentRunningNode = currentNode; } else { m_CurrentRunningNode = null; } accumulator = NodeDecisionResult; } } return(accumulator); }
private void IACombatStarts() { TreeContext ctx = new TreeContext(); DecisionTreeStatus heal = m_IATree.Tick(m_currentTurn, ctx); }