UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

48 lines (37 loc) 1.38 kB
import DataType from "../../../core/parser/simple/DataType.js"; import { computeDataTypeFromValue } from "../../../core/parser/simple/computeDataTypeFromValue.js"; /** * Given a blackboard, returns a Proxy instance, exposing blackboard attributes as plain JSON * Useful for connecting blackboard to systems that are not explicitly designed to work with a blackboard * @param {AbstractBlackboard} blackboard * @returns {Proxy} */ export function make_blackboard_proxy(blackboard) { return new Proxy(blackboard, { /** * * @param target * @param {string} p * @param receiver * @returns {*} */ get(target, p, receiver) { if (!target.contains(p, DataType.Any)) { // property not found return undefined; } const value_container = target.acquire(p, DataType.Any); return value_container.getValue(); }, set(target, p, value, receiver) { const dataType = computeDataTypeFromValue(value); const value_container = target.acquire(p, dataType, value); value_container.set(value); // succeeded return true; }, ownKeys(target) { return target.getKeys(); } }) }