UNPKG

bhive

Version:
56 lines (48 loc) 1.26 kB
const BaseComposite = require('../core/BaseComposite'); const {FAILURE, RUNNING} = require('../constants'); /** * Class Priority * @extends BaseComposite * @category Composites **/ class Priority extends BaseComposite { /** * @constructor * @param {Object} params * @param {BaseNode[]} params.children */ constructor({children = [], name} = {}) { super({ type: 'Priority', name, children }); } /** * @override * @param {Context} context **/ open(context) { context.treeBoard.node(this).set('runningChild', 0); } /** * @override * @param {Context} context * @return {NodeStatus} **/ run(context) { const nodeBoard = context.treeBoard.node(this); const child = nodeBoard.get('runningChild'); for (let i = child; i < this.children.length; i++) { const status = this.children[i].tick(context); if (status !== FAILURE) { if (status === RUNNING) { nodeBoard.set('runningChild', i); } return status; } } return FAILURE; } } module.exports = Priority;