avocado-old/packages/behavior/context/globals.js

128 lines
2.2 KiB
JavaScript
Raw Normal View History

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);
}
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',
},
},
});