UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

76 lines (62 loc) 2.08 kB
import { noop } from "../../../../function/noop.js"; import { NodeParameterDataType } from "./NodeParameterDataType.js"; export class NodeParameterDescription { /** * Human-readable label * @type {string} */ name = ""; /** * Unique integer identifier * @type {number} */ id = 0; /** * * @type {NodeParameterDataType|number} */ type = NodeParameterDataType.Number; /** * * @type {string|number|boolean} */ defaultValue = undefined; /** * * @param {function(string)} [problemConsumer] * @returns {boolean} */ validate(problemConsumer = noop) { let result = true; const defaultValue = this.defaultValue; if (defaultValue === undefined) { problemConsumer(`default value is undefined`); result = false; } switch (this.type) { //intended fallthrough case NodeParameterDataType.Number: if (typeof defaultValue !== "number") { problemConsumer(`expected default value to be a number, instead was '${typeof defaultValue}'`); result = false; } break; case NodeParameterDataType.Boolean: if (typeof defaultValue !== "boolean") { problemConsumer(`expected default value to be a boolean, instead was '${typeof defaultValue}'`); result = false; } break; case NodeParameterDataType.String: if (typeof defaultValue !== "string") { problemConsumer(`expected default value to be a string, instead was '${typeof defaultValue}'`); result = false; } break; default: problemConsumer(`Unexpected data type '${type}'`); result = false; } return result; } }