2017-04-11 01:48:48 +00:00
|
|
|
var MATH = require('../../math');
|
2017-04-26 15:03:14 +00:00
|
|
|
var GetValue = require('./GetValue');
|
2017-04-11 01:48:48 +00:00
|
|
|
|
|
|
|
// Allowed types:
|
|
|
|
|
|
|
|
// Implicit
|
|
|
|
// {
|
|
|
|
// x: 4
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// From function
|
|
|
|
// {
|
|
|
|
// x: function ()
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// Randomly pick one element from the array
|
|
|
|
// {
|
|
|
|
// x: [a, b, c, d, e, f]
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// Random integer between min and max:
|
|
|
|
// {
|
|
|
|
// x: { randInt: [min, max] }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// Random float between min and max:
|
|
|
|
// {
|
|
|
|
// x: { randFloat: [min, max] }
|
|
|
|
// }
|
|
|
|
|
|
|
|
var GetAdvancedValue = function (source, key, defaultValue)
|
|
|
|
{
|
2017-04-26 15:03:14 +00:00
|
|
|
var value = GetValue(source, key, null);
|
2017-04-11 01:48:48 +00:00
|
|
|
|
|
|
|
if (value === null)
|
|
|
|
{
|
|
|
|
return defaultValue;
|
|
|
|
}
|
|
|
|
else if (Array.isArray(value))
|
|
|
|
{
|
|
|
|
return MATH.RND.pick(value);
|
|
|
|
}
|
|
|
|
else if (typeof value === 'object')
|
|
|
|
{
|
|
|
|
if (value.hasOwnProperty('randInt'))
|
|
|
|
{
|
|
|
|
return MATH.RND.integerInRange(value.randInt[0], value.randInt[1]);
|
|
|
|
}
|
|
|
|
else if (value.hasOwnProperty('randFloat'))
|
|
|
|
{
|
|
|
|
return MATH.RND.realInRange(value.randFloat[0], value.randFloat[1]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (typeof value === 'function')
|
|
|
|
{
|
|
|
|
return value(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
return value;
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = GetAdvancedValue;
|