UNPKG

@petkoneo/phaser3-rex-plugins

Version:
79 lines (67 loc) 1.95 kB
import BaseCmd from './BaseCmd.js'; import Clone from '../../../../utils/object/Clone.js'; import Clear from '../../../../utils/object/Clear.js'; import GetValue from '../../../../utils/object/GetValue.js'; class LabelCmd extends BaseCmd { constructor(scenario) { super(scenario, 'label'); this.labels = {}; this.prevLabel = ''; this.lastLabel = ''; } resetFromJSON(o) { this.prevLabel = GetValue(o, 'preLabel', ''); this.lastLabel = GetValue(o, 'lastLabel', ''); var labels = GetValue(o, 'labels', undefined); if (labels === undefined) { Clear(this.labels); } else { Clone(labels, this.labels); } } toJSON() { return { preLabel: this.prevLabel, lastLabel: this.lastLabel, labels: this.labels }; } parse(inst, index) { inst.length = 2; var label = this.getLabel(inst); this.addLabel(label, index); return inst; } run(inst) { var label = this.getLabel(inst); if (this.scenario.isDebugMode) { this.scenario.log('#LABEL: ' + label); } this.prevLabel = this.lastLabel; this.lastLabel = label; //this.scenario.resetClock(); // TODO var scenario = this.scenario; scenario.emit('labelchange', this.lastLabel, this.prevLabel, scenario.scope, scenario); } getLabel(inst) { var label = inst[1]; if (label == null) { label = ''; inst[1] = label; } return label; } addLabel(name, index) { this.labels[name] = index; } getIndex(name) { if ((name === '') || !this.hasLabel(name)) { return 0; } return this.labels[name]; } hasLabel(name) { return this.labels.hasOwnProperty(name); } } export default LabelCmd;