var Between = require('./Between'); var FloatBetween = require('./FloatBetween'); var Class = require('../utils/Class'); var Percent = require('./Percent'); var Wrap = require('./Wrap'); var MinMax2 = new Class({ initialize: function MinMax2(min, max, steps){ this.min = 0; this.max = 0; this.steps = 0; this._current = 0; if (min !== undefined) { this.set(min, max, steps); } } , set: function (min, max, steps){ if (Array.isArray(min)) { steps = min[2]; max = min[1]; min = min[0]; } else if (typeof min === 'object') { var obj = min; min = (obj.hasOwnProperty('x'))? obj.x: obj.min; max = (obj.hasOwnProperty('y'))? obj.y: obj.max; steps = obj.steps; } if (min === undefined) { min = 0; } if (max === undefined) { max = min; } if (steps === undefined) { steps = 0; } this.min = min; this.max = max; this.steps = steps; this._current = min; return this; } , clone: function (){ return new MinMax2(this.min, this.max, this.steps); } , copy: function (dest){ dest.min = this.min; dest.max = this.max; dest.steps = this.steps; return this; } , copyXY: function (dest){ dest.x = this.min; dest.y = this.max; return this; } , copyToMinMax: function (dest){ dest.min = this.min; dest.max = this.max; return this; } , getU: function (u){ } , getPercent: function (value){ return Percent(value, this.min, this.max); } , getRandom: function (){ return Between(this.min, this.max); } , getRandomFloat: function (){ return FloatBetween(this.min, this.max); } , getNext: function (){ var value; if (this.steps > 0) { value = this._current; var i = value + ((this.max - this.min) / this.steps); this._current = Wrap(i, this.min, this.max); } else { value = this.getRandom(); } return value; } , getNextFloat: function (){ var value; if (this.steps > 0) { value = this._current; var i = value + ((this.max - this.min) / this.steps); this._current = Wrap(i, this.min, this.max); } else { value = this.getRandomFloat(); } return value; } , current: { get: function (){ return this._current; } , set: function (value){ this._current = Wrap(value, this.min, this.max); } } , x: { get: function (){ return this.min; } , set: function (value){ this.min = value; } } , y: { get: function (){ return this.max; } , set: function (value){ this.max = value; } } } ); module.exports = MinMax2;