UNPKG

rock-mod

Version:

Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.

46 lines (45 loc) 2.86 kB
type Listener = (...args: unknown[]) => void; /** * Тонкий внутренний event bus. * * RageMP даёт `mp.events.call(name, ...args)` для локальной шины поверх своего * движка событий. У CCMP нативной внутренней шины нет — её роль выполняет этот * класс. Используется только из `CCMPEventsManager` для `onInternal` / * `offInternal` / `emitInternal` и из `CCMPEventsBridge` для синтезированных * `rm::*` событий. * * Поддерживает "sticky" events (см. `emitSticky`) для one-shot lifecycle- * сигналов (например `rm::playerReady`), которые могут эмититься до того, * как поздние подписчики из DI-цепочки геймода успели зарегистрироваться. * Sticky-кэш гарантирует, что любой `on()`-вызов после `emitSticky` получит * последнее значение synchronously. */ export declare class CCMPInProcessEmitter { private readonly _listeners; /** Кэш аргументов для sticky-events. См. `emitSticky` / `on`. */ private readonly _stickyCache; on(event: string, listener: Listener): void; off(event: string, listener?: Listener): void; emit(event: string, ...args: unknown[]): void; /** * Как `emit`, но дополнительно кэширует args, чтобы любой будущий * `on(event, listener)` сразу получил воспроизведение последнего значения. * * Использовать только для one-shot lifecycle-событий (`rm::playerReady` и * т.п.), где "позднее" подписавшийся обработчик всё равно должен получить * сигнал. Для регулярных событий (`rm::playerConnected` на каждого нового * игрока) sticky-кэш приведёт к нежелательному поведению — используйте * обычный `emit`. * * Кэш переписывается на каждый последующий вызов с тем же event'ом, так * что подписчики получат последнее значение, не цепочку историй. */ emitSticky(event: string, ...args: unknown[]): void; /** * Удаляет sticky-кэш для события. Полезно на disconnect/reset, чтобы * новые подписчики не получили устаревший local-player-stub. */ clearSticky(event: string): void; private _callListener; } export {};