1 line
1.0 KiB
JavaScript
1 line
1.0 KiB
JavaScript
"use strict";var r=require("../../bt/factory"),t=require("../../bt/base"),e=t.Status,i=t.createBehavior;module.exports=i({constructor:function(r,t){this.succeedOnOne=r,this.children=t||[]},start:function(){if(0===this.children.length)return!1;var r=!1;this.runChildren=[];for(var t=0;t<this.children.length;t++){var e=this.children[t];e.start()?this.runChildren.push(e):r=!0}if(this.activeChildren=this.runChildren.length,r){for(var t=0;t<this.runChildren.length;t++)this.runChildren[t].stop();return!1}return!0},stop:function(){for(var r=0;r<this.runChildren.length;r++)this.runChildren[r]&&this.runChildren[r].stop()},update:function(){for(var r=!1,t=0;t<this.runChildren.length;t++)if(this.runChildren[t]){var i=this.runChildren[t],n=i.update();if(n===e.SUCCEEDED){if(this.succeedOnOne)return this.stop(),e.SUCCEEDED;i.stop(),delete this.runChildren[t],this.activeChildren--}else if(n===e.FAILED)r=!0;else if(n===e.PAUSED)return e.IN_PROGRESS}return r?e.FAILED:0===this.activeChildren?e.SUCCEEDED:e.IN_PROGRESS}}),r.addBehavior(module); |