phaser4-rex-plugins
Version:
56 lines (46 loc) • 1.75 kB
JavaScript
import { ForceFailure, Succeeder } from '../../../behaviortree/index.js';
import EventSheet from '../../eventsheetmanager/eventsheet/EventSheet.js';
import GetHeadingTree from './GetHeadingTree.js';
import GetTreeConfig from './GetTreeConfig.js';
import ParseTopLevelNodes from './ParseTopLevelNodes.js';
import GetConditionExpression from './GetConditionExpression.js';
import CreateParentNode from './CreateParentNode.js';
var BuildTree = function (
eventSheetManager,
markedString,
{
groupName,
lineBreak = '\\',
commentLineStart = '\/\/',
parallel = false,
active = true,
once = false,
} = {}
) {
var headingTree = GetHeadingTree(markedString);
var { conditionNodes, mainTaskNodes, catchNodes } = ParseTopLevelNodes(headingTree.children);
var treeConfig = Object.assign(
{ groupName, parallel, active, once },
GetTreeConfig(headingTree.paragraphs, commentLineStart)
);
var taskSequenceConfig = { lineBreak, commentLineStart };
var eventsheet = new EventSheet(
eventSheetManager,
{
title: headingTree.title,
condition: GetConditionExpression(conditionNodes),
properties: treeConfig
}
);
var rootNode = eventsheet.root;
rootNode.addChild(CreateParentNode(mainTaskNodes, taskSequenceConfig));
var forceFailure = new ForceFailure();
if (catchNodes.length > 0) {
forceFailure.addChild(CreateParentNode(catchNodes[0], taskSequenceConfig));
} else {
forceFailure.addChild(new Succeeder());
}
rootNode.addChild(forceFailure);
return eventsheet;
}
export default BuildTree;