UNPKG

prendy

Version:

Make games with prerendered backdrops using babylonjs and repond

55 lines (54 loc) 2 kB
import { onNextTick, setState } from "repond"; import { addSubEvents, makeEventTypes, setLiveEventState } from "repond-events"; import { getStateAtPath } from "repond"; export const basicEvents = makeEventTypes(({ event }) => ({ wait: event({ run: ({ time }, { runMode, liveId, elapsedTime }) => { if (runMode === "start") setLiveEventState(liveId, { goalEndTime: elapsedTime + time * 1000 }); }, params: { time: 1 }, isParallel: false, }), log: event({ run: ({ text }, { runMode, liveId, elapsedTime }) => { console.log("log", { text }); // if (runMode === "add") console.log("log added"); if (runMode === "start") console.log(text); }, params: { text: "" }, isParallel: false, }), setState: event({ run: ({ state }, { runMode, isFirstStart }) => { if (isFirstStart) onNextTick(() => setState(state)); }, params: { state: {} }, isParallel: false, }), runEventsIf: event({ run: async ({ events, elseEvents, state: statePath }, { runMode, liveId }) => { if (runMode !== "start") return; if (!statePath[0]) return console.error("runEventsIf: statePath[0] is empty"); let shouldRunEvents = getStateAtPath(statePath); // if (shouldRunEvents ===) if (shouldRunEvents) { if (events) addSubEvents(liveId, events); } else { if (elseEvents) addSubEvents(liveId, elseEvents); } }, params: { state: ["", "", ""], events: undefined, // NOTE can't use EventTuple because typescript will go into itself elseEvents: undefined, // NOTE can't use EventTuple because typescript will go into itself }, }), }));