bhive
Version:
Behavior Tree for Javascript
53 lines (45 loc) • 1.2 kB
JavaScript
const BaseDecorator = require('../core/BaseDecorator');
const {FAILURE, SUCCESS, ERROR} = require('../constants');
/**
* Class Invert the result of the child
*
* if child returns `SUCCESS` --> Inverter returns `FAILURE`
* if child returns `FAILURE` --> Inverter returns `SUCCESS`
* if child returns `RUNNING` --> Inverter returns `RUNNING`
*
* @category Decorators
* @extends BaseDecorator
**/
class Inverter extends BaseDecorator {
/**
* Creates an instance of Inverter.
* @constructor
* @param {Object} params
* @param {BaseNode} params.child
*/
constructor({child = null} = {}) {
super({
child,
type: 'Inverter',
});
}
/**
* Context method.
* @override
* @param {Context} context A run instance.
* @return {NodeStatus} A state constant.
**/
run(context) {
if (!this.child) {
return ERROR;
}
let status = this.child.tick(context);
if (status === SUCCESS) {
status = FAILURE;
} else if (status === FAILURE) {
status = SUCCESS;
}
return status;
}
}
module.exports = Inverter;