UNPKG

@communityox/ox_lib

Version:

JS/TS wrapper for ox_lib exports

57 lines (56 loc) 1.72 kB
import { cache } from '../cache'; const duis = {}; let currentId = 0; export class Dui { id = ''; debug = false; url = ''; duiObject = 0; duiHandle = ''; runtimeTxd = 0; txdObject = 0; dictName = ''; txtName = ''; constructor(data) { const time = GetGameTimer(); const id = `${cache.resource}_${time}_${currentId}`; currentId++; this.id = id; this.debug = data.debug || false; this.url = data.url; this.dictName = `ox_lib_dui_dict_${id}`; this.txtName = `ox_lib_dui_txt_${id}`; this.duiObject = CreateDui(data.url, data.width, data.height); this.duiHandle = GetDuiHandle(this.duiObject); this.runtimeTxd = CreateRuntimeTxd(this.dictName); this.txdObject = CreateRuntimeTextureFromDuiHandle(this.runtimeTxd, this.txtName, this.duiHandle); duis[id] = this; if (this.debug) console.log(`Dui ${this.id} created`); } remove() { SetDuiUrl(this.duiObject, 'about:blank'); DestroyDui(this.duiObject); delete duis[this.id]; if (this.debug) console.log(`Dui ${this.id} removed`); } setUrl(url) { this.url = url; SetDuiUrl(this.duiObject, url); if (this.debug) console.log(`Dui ${this.id} url set to ${url}`); } sendMessage(data) { SendDuiMessage(this.duiObject, JSON.stringify(data)); if (this.debug) console.log(`Dui ${this.id} message sent with data :`, data); } } on('onResourceStop', (resourceName) => { if (cache.resource !== resourceName) return; for (const dui in duis) { duis[dui].remove(); } });