UNPKG

phaser4-rex-plugins

Version:
65 lines (53 loc) 1.5 kB
import Decorator from '../Decorator.js'; import { SUCCESS, ERROR, FAILURE, RUNNING } from '../../constants.js'; class Repeat extends Decorator { constructor( { maxLoop = -1, child = null, title, name = 'Repeat' } = {}, nodePool ) { super( { child, title, name, properties: { maxLoop }, }, nodePool ); this.maxLoopExpression = this.addExpression(maxLoop); } open(tick) { var nodeMemory = this.getNodeMemory(tick); nodeMemory.$maxLoop = tick.evalExpression(this.maxLoopExpression); nodeMemory.$i = 0; } tick(tick) { if (!this.child) { return ERROR; } var nodeMemory = this.getNodeMemory(tick); var maxLoop = nodeMemory.$maxLoop; var i = nodeMemory.$i; var status = SUCCESS; // Open child before exceed maxLoop // Execute child many times in a tick while (maxLoop < 0 || i < maxLoop) { status = this.child._execute(tick); if ((status === SUCCESS) || (status === FAILURE)) { i++; } else { break; } } nodeMemory.$i = i; return status; } }; export default Repeat;