prendy
Version:
Make games with prerendered backdrops using babylonjs and repond
41 lines (40 loc) • 1.65 kB
JavaScript
import { addItemToUniqueArray, removeItemFromArray } from "chootils/dist/arrays";
import { setState } from "repond";
import { II, addSubEvents, makeEventTypes } from "repond-events";
import { setGlobalState } from "../helpers/prendyUtils/global";
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, revertDelay: undefined },
}),
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: "", toHolding: undefined },
}),
setAnimations: event({
run: ({ animations }, { runMode }) => {
if (runMode !== "start")
return;
setState({ players: { main: { animationNames: animations } } });
},
params: { animations: { walking: "", idle: "" } },
}),
}));