94 lines
2.5 KiB
TypeScript
94 lines
2.5 KiB
TypeScript
import game, { GlobalData } from "..";
|
|
|
|
export default class InputHelper {
|
|
private title: string;
|
|
private value: string;
|
|
private created: boolean;
|
|
private browser: BrowserMp;
|
|
private data: IGlobalData;
|
|
|
|
constructor(title: string, globalData?: IGlobalData) {
|
|
this.title = title;
|
|
this.data = globalData || GlobalData;
|
|
|
|
this.cefTitleCall = this.cefTitleCall.bind(this);
|
|
mp.events.add('cef_request_title', this.cefTitleCall);
|
|
|
|
this.cefCallback = this.cefCallback.bind(this);
|
|
mp.events.add('cef_inputhelper_sendvalue', this.cefCallback);
|
|
|
|
this.finish = this.finish.bind(this);
|
|
this.show = this.show.bind(this);
|
|
this.valueGetter = this.valueGetter.bind(this);
|
|
this.getValue = this.getValue.bind(this);
|
|
|
|
this.value = undefined;
|
|
const disableInput = [157, 158, 159, 32, 33, 34, 35];
|
|
|
|
//mp.events.add("render", this.disableControls);
|
|
|
|
mp.events.add("render", this.disableControls);
|
|
}
|
|
|
|
private disableControls() {
|
|
//for (var x = 0; x < 358; x++) {
|
|
// mp.game.controls.disableControlAction(1, x, true);
|
|
//}
|
|
|
|
|
|
game.ui.sendChatMessage("render in inputhelper");
|
|
mp.game.controls.disableAllControlActions(0);
|
|
mp.game.controls.disableAllControlActions(1);
|
|
mp.game.controls.disableAllControlActions(2);
|
|
mp.game.controls.disableAllControlActions(27);
|
|
}
|
|
|
|
show() {
|
|
if (this.created) return;
|
|
this.data.InInput = true;
|
|
this.created = true;
|
|
this.browser = mp.browsers.new('package://assets/html/inputhelper/index.html');
|
|
|
|
}
|
|
|
|
private finish() {
|
|
if (this.browser) {
|
|
mp.events.remove('cef_inputhelper_sendvalue');
|
|
mp.events.remove('cef_request_title');
|
|
mp.events.remove('render', this.disableControls);
|
|
this.browser.destroy();
|
|
this.data.InInput = false;
|
|
this.created = false;
|
|
this.browser = null;
|
|
}
|
|
}
|
|
|
|
private cefTitleCall() {
|
|
this.browser.execute(`setTitle('${this.title}')`);
|
|
}
|
|
|
|
private cefCallback(val) {
|
|
this.value = val;
|
|
this.finish();
|
|
}
|
|
|
|
private valueGetter(): Promise<string> {
|
|
return new Promise(resolve => {
|
|
while (this.value === undefined) {
|
|
mp.game.wait(1);
|
|
}
|
|
resolve(this.value);
|
|
});
|
|
}
|
|
|
|
async getValue(callback: Function) {
|
|
var getVal = await this.valueGetter();
|
|
callback(getVal);
|
|
}
|
|
}
|
|
|
|
exports = InputHelper;
|
|
|
|
|
|
|