UNPKG

prendy

Version:

Make games with prerendered backdrops using babylonjs and repond

46 lines (43 loc) 1.72 kB
import { addItemToUniqueArray, removeItemFromArray } from "chootils/dist/arrays"; import delay from "delay"; import { setState } from "repond"; import { II, addSubEvents, makeEventTypes } from "repond-events"; import { setGlobalState } from "../helpers/prendyUtils/global"; import { AnyAnimationName, PickupName } from "../types"; type PlayerAnimationNames = { walking: AnyAnimationName; idle: AnyAnimationName; }; export const playerEvents = makeEventTypes(({ event }) => ({ enableMovement: event({ run: async ({ canMove = true, revertDelay }, { runMode, liveId }) => { if (runMode !== "start") return; setGlobalState({ playerMovingPaused: !canMove }); if (revertDelay) { addSubEvents(liveId, [ II("basic", "wait", { time: revertDelay }), II("setState", "setState", { global: { main: { playerMovingPaused: !canMove } } }), ]); } }, params: { canMove: undefined as boolean | undefined, revertDelay: undefined as undefined | number }, }), takePickup: event({ run: ({ which: pickup, toHolding = true }, { runMode }) => { if (runMode !== "start") return; setGlobalState((state) => ({ heldPickups: toHolding ? addItemToUniqueArray(state.heldPickups, pickup) : removeItemFromArray(state.heldPickups, pickup), })); }, params: { which: "" as PickupName, toHolding: undefined as undefined | boolean }, }), setAnimations: event({ run: ({ animations }, { runMode }) => { if (runMode !== "start") return; setState({ players: { main: { animationNames: animations } } }); }, params: { animations: { walking: "", idle: "" } as PlayerAnimationNames }, }), }));