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
TypeScript
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 {};