phaser3-rex-plugins
Version:
56 lines (46 loc) • 1.47 kB
JavaScript
import GetNodeType from './GetNodeType.js';
const STATE_CONDITION = 1;
const STATE_TASK = 2;
const STATE_CATCH = 3;
var TypeNames = ['condition', 'catch'];
var ParseNodes = function (nodes) {
var conditionNodes = [];
var mainTaskNodes = [];
var catchNodes = [];
var state = STATE_CONDITION;
var nextNodeType = GetNodeType(nodes[0], TypeNames);
for (var i = 0, cnt = nodes.length; i < cnt; i++) {
var node = nodes[i];
if (state === STATE_CONDITION) {
if (nextNodeType === '') {
state = STATE_TASK;
} else if (nextNodeType === 'catch') {
state = STATE_CATCH;
}
} else if (state === STATE_TASK) {
if (nextNodeType === 'catch') {
state = STATE_CATCH;
}
}
switch (state) {
case STATE_CONDITION:
conditionNodes.push(node)
break;
case STATE_TASK:
mainTaskNodes.push(node);
break;
case STATE_CATCH:
catchNodes.push(node);
break;
}
if ((i + 1) < cnt) {
nextNodeType = GetNodeType(nodes[i + 1], TypeNames);
}
}
return {
conditionNodes: conditionNodes,
mainTaskNodes: mainTaskNodes,
catchNodes: catchNodes,
}
}
export default ParseNodes;