rage-framework/server/src/index.ts

53 lines
1.7 KiB
TypeScript
Raw Normal View History

/// <reference types="../../shared/server/index.d.ts" />
2024-06-08 22:35:14 +00:00
import rpc from 'rage-rpc'
class Server implements RageFW_Server {
public register<EventName extends RageFW_ServerEvent>(
eventName: EventName,
2024-06-09 00:06:20 +00:00
callback: RageFW_ServerEventCallback<EventName>,
): void {
rpc.register(eventName, callback as rpc.ProcedureListener)
2024-06-09 00:06:20 +00:00
}
2024-06-09 16:19:06 +00:00
public registerMany<EventName extends RageFW_ServerEvent>(events: {
2024-06-09 21:53:59 +00:00
[event in EventName]: RageFW_ServerEventCallback<event>
2024-06-09 16:19:06 +00:00
}): void {
2024-06-09 21:53:59 +00:00
Object.entries(events).map(([eventName, callback]) =>
rpc.register(eventName, (args: unknown[]) => {
return Array.isArray(args)
? (callback as (...arg: typeof args) => void)(...args)
: (callback as (arg: typeof args) => void)(args)
}),
2024-06-09 16:19:06 +00:00
)
2024-06-09 21:53:59 +00:00
// Object.keys(events).forEach(eventName =>
// // unknown[] ?
// // rpc.register(eventName, (args: unknown[]) =>
// // Array.isArray(args) ? events[eventName as keyof typeof events](...args) : callback(args),
// // ),
// rpc.register(eventName, (...args: unknown[]) =>
// events[eventName as EventName](args),
// ),
// )
2024-06-09 16:19:06 +00:00
}
2024-06-08 22:35:14 +00:00
}
export const rage = {
event: new Server(),
}
rage.event.register('customServerEvent', (player, arg1, arg2) => {
2024-06-09 21:53:59 +00:00
console.log(player, arg1, arg2)
return true
2024-06-09 00:06:20 +00:00
})
2024-06-08 22:35:14 +00:00
2024-06-09 16:19:06 +00:00
rage.event.registerMany({
customServerEvent: (player, arg1, arg2) => {
2024-06-09 21:53:59 +00:00
console.log(player, arg1, arg2)
2024-06-09 16:19:06 +00:00
return true
},
2024-06-09 21:53:59 +00:00
playerDeath: (player, reason, killer) => {
console.log(player, reason, killer)
return undefined
},
2024-06-09 16:19:06 +00:00
})