rock-mod
Version:
Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.
67 lines (66 loc) • 2.06 kB
JavaScript
class CCMPBrowserHandle {
constructor(url) {
this._browser = ccmp.browsers.create(url);
}
get isAlive() {
return this._browser !== null;
}
destroy() {
if (!this._browser) {
return;
}
this._browser.destroy();
this._browser = null;
}
execute(code) {
if (!this._browser) {
return;
}
this._browser.executeJavaScript(code);
}
setOrderId(orderId) {
if (!this._browser) {
return;
}
this._browser.setOrderId(orderId);
}
}
/**
* Реализация `IBrowserManager` поверх нативного CCMP browser API.
*
* CCMP предоставляет полноценное CEF-управление через `ccmp.browsers` —
* это прямое соответствие RageMP'шному `mp.browsers`. Маппинг:
* - `create(url)` → `ccmp.browsers.create(url)` → возвращает `Browser` с
* числовым `id`, который мы храним для последующих `execute`/`destroy`.
* - `execute(code)` → `Browser.executeJavaScript(code)`.
* - `destroy()` → `Browser.destroy()`.
*
* Геймод-консьюмер (`BrowserService` → один логический браузер на гейм-mod)
* управляет только одним инстансом одновременно, поэтому держим ссылку
* на единственный созданный браузер.
*/
export class CCMPBrowserManager {
constructor() {
this._browser = null;
}
create(url) {
this.destroy();
this._browser = this.createInstance(url);
}
createInstance(url) {
return new CCMPBrowserHandle(url);
}
destroy() {
if (!this._browser) {
return;
}
this._browser.destroy();
this._browser = null;
}
execute(code) {
if (!this._browser) {
return;
}
this._browser.execute(code);
}
}