avocado-old/packages/behavior/context/globals.js
2019-03-17 23:45:48 -05:00

116 lines
2.1 KiB
JavaScript

import {TickingPromise} from '@avocado/core';
import {register as registerType} from './types/registry';
import {Traversal} from '../item/traversal';
export class Globals {
log(any) {
console.log(any);
}
randomNumber(min, max, floor = true) {
let mag = Math.random() * (max - min);
return min + (floor ? Math.floor(mag) : mag);
}
testing() {
return null;
}
waitMs(ms, state) {
let waited = 0;
let resolve;
const promise = new TickingPromise(_resolve => resolve = _resolve);
promise.ticker = (elapsed) => {
if ((waited += elapsed) >= ms) {
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',
},
},
});