phaser
Version:
A fast, free and fun HTML5 Game Framework for Desktop and Mobile web browsers.
123 lines (100 loc) • 3.85 kB
JavaScript
/**
* @author Richard Davey <rich@photonstorm.com>
* @copyright 2018 Photon Storm Ltd.
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
*/
var Defaults = require('../tween/Defaults');
var GetAdvancedValue = require('../../utils/object/GetAdvancedValue');
var GetBoolean = require('./GetBoolean');
var GetEaseFunction = require('./GetEaseFunction');
var GetNewValue = require('./GetNewValue');
var GetValue = require('../../utils/object/GetValue');
var GetValueOp = require('./GetValueOp');
var Tween = require('../tween/Tween');
var TweenData = require('../tween/TweenData');
/**
* [description]
*
* @function Phaser.Tweens.Builders.NumberTweenBuilder
* @since 3.0.0
*
* @param {(Phaser.Tweens.TweenManager|Phaser.Tweens.Timeline)} parent - [description]
* @param {object} config - [description]
* @param {Phaser.Tweens.TweenConfigDefaults} defaults - [description]
*
* @return {Phaser.Tweens.Tween} [description]
*/
var NumberTweenBuilder = function (parent, config, defaults)
{
if (defaults === undefined)
{
defaults = Defaults;
}
// var tween = this.tweens.addCounter({
// from: 100,
// to: 200,
// ... (normal tween properties)
// })
//
// Then use it in your game via:
//
// tween.getValue()
var from = GetValue(config, 'from', 0);
var to = GetValue(config, 'to', 1);
var targets = [ { value: from } ];
var delay = GetNewValue(config, 'delay', defaults.delay);
var duration = GetNewValue(config, 'duration', defaults.duration);
var easeParams = GetValue(config, 'easeParams', defaults.easeParams);
var ease = GetEaseFunction(GetValue(config, 'ease', defaults.ease), easeParams);
var hold = GetNewValue(config, 'hold', defaults.hold);
var repeat = GetNewValue(config, 'repeat', defaults.repeat);
var repeatDelay = GetNewValue(config, 'repeatDelay', defaults.repeatDelay);
var yoyo = GetBoolean(config, 'yoyo', defaults.yoyo);
var data = [];
var ops = GetValueOp('value', to);
var tweenData = TweenData(
targets[0],
'value',
ops.getEnd,
ops.getStart,
ease,
delay,
duration,
yoyo,
hold,
repeat,
repeatDelay,
false,
false
);
tweenData.start = from;
tweenData.current = from;
tweenData.to = to;
data.push(tweenData);
var tween = new Tween(parent, data, targets);
tween.offset = GetAdvancedValue(config, 'offset', null);
tween.completeDelay = GetAdvancedValue(config, 'completeDelay', 0);
tween.loop = Math.round(GetAdvancedValue(config, 'loop', 0));
tween.loopDelay = Math.round(GetAdvancedValue(config, 'loopDelay', 0));
tween.paused = GetBoolean(config, 'paused', false);
tween.useFrames = GetBoolean(config, 'useFrames', false);
// Set the Callbacks
var scope = GetValue(config, 'callbackScope', tween);
// Callback parameters: 0 = a reference to the Tween itself, 1 = the target/s of the Tween, ... your own params
var tweenArray = [ tween, null ];
var callbacks = Tween.TYPES;
for (var i = 0; i < callbacks.length; i++)
{
var type = callbacks[i];
var callback = GetValue(config, type, false);
if (callback)
{
var callbackScope = GetValue(config, type + 'Scope', scope);
var callbackParams = GetValue(config, type + 'Params', []);
// The null is reset to be the Tween target
tween.setCallback(type, callback, tweenArray.concat(callbackParams), callbackScope);
}
}
return tween;
};
module.exports = NumberTweenBuilder;