2019-03-17 23:45:48 -05:00
|
|
|
import {TickingPromise} from '@avocado/core';
|
|
|
|
|
|
|
|
import {register as registerType} from './types/registry';
|
|
|
|
import {Traversal} from '../item/traversal';
|
|
|
|
|
|
|
|
export class Globals {
|
|
|
|
|
2019-04-21 01:30:32 -05:00
|
|
|
multiply(x, y) {
|
|
|
|
return x * y;
|
|
|
|
}
|
|
|
|
|
2019-05-21 03:08:43 -05:00
|
|
|
sub(x, y) {
|
|
|
|
return x - y;
|
|
|
|
}
|
|
|
|
|
2019-05-30 09:10:13 -05:00
|
|
|
makeArray(...args) {
|
|
|
|
return args;
|
|
|
|
}
|
|
|
|
|
2019-03-17 23:45:48 -05:00
|
|
|
log(any) {
|
|
|
|
console.log(any);
|
|
|
|
}
|
|
|
|
|
2019-06-06 00:09:51 -05:00
|
|
|
parallel(actions, context) {
|
|
|
|
return actions.parallel(context);
|
|
|
|
}
|
|
|
|
|
2019-03-17 23:45:48 -05:00
|
|
|
randomNumber(min, max, floor = true) {
|
2019-05-26 14:55:24 -05:00
|
|
|
let mag = Math.random() * ((max - min) + 1);
|
2019-03-17 23:45:48 -05:00
|
|
|
return min + (floor ? Math.floor(mag) : mag);
|
|
|
|
}
|
|
|
|
|
|
|
|
testing() {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2019-04-09 09:37:31 -05:00
|
|
|
wait(duration) {
|
2019-03-17 23:45:48 -05:00
|
|
|
let resolve;
|
|
|
|
const promise = new TickingPromise(_resolve => resolve = _resolve);
|
|
|
|
promise.ticker = (elapsed) => {
|
2019-04-09 09:37:31 -05:00
|
|
|
duration -= elapsed;
|
|
|
|
if (duration <= 0) {
|
2019-03-17 23:45:48 -05:00
|
|
|
resolve();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return promise;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// Globals.
|
|
|
|
registerType('globals', {
|
|
|
|
label: 'Globals',
|
|
|
|
children: {
|
|
|
|
log: {
|
|
|
|
type: {
|
|
|
|
key: 'function',
|
|
|
|
args: [
|
|
|
|
{
|
|
|
|
type: 'any',
|
|
|
|
label: 'Thing to log',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
return: {
|
|
|
|
type: 'void',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
label: 'Log to console',
|
|
|
|
},
|
|
|
|
randomNumber: {
|
|
|
|
type: {
|
|
|
|
key: 'function',
|
|
|
|
args: [
|
|
|
|
{
|
|
|
|
type: {
|
|
|
|
key: 'number',
|
|
|
|
},
|
|
|
|
label: 'Minimum value',
|
|
|
|
advanced: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'number',
|
|
|
|
label: 'Maximum value',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: 'boolean',
|
|
|
|
label: 'Convert to an integer?',
|
|
|
|
default: true,
|
|
|
|
},
|
|
|
|
],
|
|
|
|
return: {
|
|
|
|
type: 'number',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
label: 'Random number',
|
|
|
|
},
|
|
|
|
test: {
|
|
|
|
type: {
|
|
|
|
key: 'function',
|
|
|
|
args: [
|
|
|
|
{
|
|
|
|
type: 'number',
|
|
|
|
label: 'Milliseconds to wait',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
return: {
|
|
|
|
type: {
|
|
|
|
key: 'entity',
|
|
|
|
traits: ['mobile'],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
label: 'Entityyyyy',
|
|
|
|
},
|
|
|
|
waitMs: {
|
|
|
|
type: {
|
|
|
|
key: 'function',
|
|
|
|
args: [
|
|
|
|
{
|
|
|
|
type: 'number',
|
|
|
|
label: 'Milliseconds to wait',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
return: {
|
|
|
|
type: 'void',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
label: 'Wait for a specified time',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|