import { Rpc } from '@entityseven/rage-fw-rpc' import type { RageFW_ICustomClientEvent } from '@entityseven/rage-fw-shared-types' import { _CefEventHasArgs, _ClientEventHasArgs, _ServerEventHasArgs, RageFW_CefArgs, RageFW_CefEvent, RageFW_CefReturn, RageFW_ClientArgs, RageFW_ClientReturn, RageFW_ClientServerEvent, RageFW_ClientServerArgs, RageFW_ClientServerReturn, } from '../types' export class Player { private _rpc: Rpc = new Rpc() public browser: BrowserMp | undefined get rpc(): Rpc { return this._rpc } public trigger( eventName: EventName, ...args: _ClientEventHasArgs extends true ? [RageFW_ClientArgs] : [] ): Promise> { return this._rpc.call(eventName, args) } public triggerServer( eventName: EventName, ...args: _ServerEventHasArgs extends true ? [RageFW_ClientServerArgs] : [] ): Promise> { return this._rpc.callServer(eventName, args) } public triggerBrowser( eventName: EventName, ...args: _CefEventHasArgs extends true ? [RageFW_CefArgs] : [] ): Promise> { if (!this.browser) throw new Error('You need to initialize browser first') return this._rpc.callBrowser(this.browser, eventName, args) } }