svelte-phaser
Version:
Create Phaser 3 games with Svelte 3
24 lines (21 loc) • 721 B
text/typescript
/**
* Hooks into a phaser event with a svelte dispatcher
*
* @param instance - the game object
* @param dispatch - svelte dispatcher
* @param event - phaser event to hook in to
* @param makeArgs - called with the event parameters from phaser. should return an object to send with the svelte dispatcher
* @returns a function to remove the event listener
*/
export const createPhaserEventDispatcher = <
T extends Phaser.Events.EventEmitter
>(
instance: T,
dispatch: (type: string, detail: any) => any,
event: string,
makeArgs: (...args: any[]) => any
) => {
const callback = (...args) => dispatch(event, makeArgs(...args))
instance.on(event, callback)
return () => instance.off(event, callback)
}