phaser4-rex-plugins
Version:
135 lines (108 loc) • 3.19 kB
JavaScript
import TimerTask from '../timerticktask/TimerTask.js';
const GetValue = Phaser.Utils.Objects.GetValue;
const GetAdvancedValue = Phaser.Utils.Objects.GetAdvancedValue;
const GetEaseFunction = Phaser.Tweens.Builders.GetEaseFunction;
class EaseValueTaskBase extends TimerTask {
resetFromJSON(o) {
this.timer.resetFromJSON(GetValue(o, 'timer'));
this.setEnable(GetValue(o, 'enable', true));
this.setTarget(GetValue(o, 'target', this.parent));
this.setDelay(GetAdvancedValue(o, 'delay', 0));
this.setDuration(GetAdvancedValue(o, 'duration', 1000));
this.setEase(GetValue(o, 'ease', 'Linear'));
this.setRepeat(GetValue(o, 'repeat', 0));
return this;
}
setEnable(e) {
if (e == undefined) {
e = true;
}
this.enable = e;
return this;
}
setTarget(target) {
if (target === undefined) {
target = this.parent;
}
this.target = target;
return this;
}
setDelay(time) {
this.delay = time;
// Assign `this.timer.setRepeat(repeat)` manually
return this;
}
setDuration(time) {
this.duration = time;
return this;
}
setRepeat(repeat) {
this.repeat = repeat;
// Assign `this.timer.setRepeat(repeat)` manually
return this;
}
setRepeatDelay(repeatDelay) {
this.repeatDelay = repeatDelay;
// Assign `this.timer.setRepeatDelay(repeatDelay)` manually
return this;
}
setEase(ease) {
if (ease === undefined) {
ease = 'Linear';
}
this.ease = ease;
this.easeFn = GetEaseFunction(ease);
return this;
}
// Override
start() {
// Ignore start if timer is running, i.e. in DELAY, o RUN state
if (this.timer.isRunning) {
return this;
}
super.start();
return this;
}
restart() {
this.timer.stop();
this.start.apply(this, arguments);
return this;
}
stop(toEnd) {
if (toEnd === undefined) {
toEnd = false;
}
super.stop();
if (toEnd) {
this.timer.setT(1);
this.updateTarget(this.target, this.timer);
this.complete();
}
return this;
}
update(time, delta) {
if (
(!this.isRunning) ||
(!this.enable) ||
(this.parent.hasOwnProperty('active') && !this.parent.active)
) {
return this;
}
var target = this.target,
timer = this.timer;
timer.update(time, delta);
// isDelay, isCountDown, isDone
if (!timer.isDelay) {
this.updateTarget(target, timer);
}
this.emit('update', target, this);
if (timer.isDone) {
this.complete();
}
return this;
}
// Override
updateTarget(target, timer) {
}
}
export default EaseValueTaskBase;