@benev/nubs
Version:
user-input system for web games
29 lines (22 loc) • 734 B
text/typescript
import {NubDetail} from "./types/detail.js"
import {ev, MagicEventBase} from "@chasemoskal/magical"
type Any = NubDetail.Any
export class NubEffectEvent<D extends Any = Any>
extends MagicEventBase<NubDetail.Effect<D>> {
static type = "nub_effect"
static target = ev(this).target
static switch<R = void>(
event: NubEffectEvent,
handlers: {
key: (event: NubEffectEvent<NubDetail.Key>) => R
pointer: (event: NubEffectEvent<NubDetail.Pointer>) => R
stick: (event: NubEffectEvent<NubDetail.Stick>) => R
},
): R {
switch (event.detail.kind) {
case "key": return handlers.key(<any>event)
case "pointer": return handlers.pointer(<any>event)
case "stick": return handlers.stick(<any>event)
}
}
}