Files
reallife-gamemode/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts
2021-05-07 20:00:26 +02:00

143 lines
4.7 KiB
TypeScript

import * as NativeUI from '../../libs/NativeUI';
const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem;
const Point = NativeUI.Point;
const ItemsCollection = NativeUI.ItemsCollection;
var screenRes = mp.game.graphics.getScreenResolution(0, 0);
export default function vehicleMenu(globalData: IGlobalData) {
let menuBrowser: BrowserMp = null;
var lastDriversBrowser: BrowserMp = null;
var lastDrivers = null;
mp.events.add('lookLastDrivers', (lastDriversParam) => {
lastDrivers = JSON.parse(lastDriversParam);
if (lastDriversBrowser !== null) {
lastDriversBrowser.destroy();
lastDriversBrowser = null;
globalData.InMenu = false;
mp.gui.cursor.show(false, false);
mp.gui.chat.activate(true);
}
else if (!globalData.InMenu) {
globalData.InMenu = true;
lastDriversBrowser = mp.browsers.new('package://assets/vehicle/lastPlayers.html');
mp.gui.chat.activate(false);
mp.gui.cursor.show(true, true);
}
});
mp.events.add("CEF:VehicleLook_Loaded", () => {
lastDriversBrowser.execute(`setDrivers('${JSON.stringify(lastDrivers)}');`);
mp.gui.cursor.show(true, true);
});
mp.events.add("removeLookMenu", () => {
if (lastDriversBrowser == null) {
return;
}
else if (globalData.InMenu) {
lastDriversBrowser.destroy();
lastDriversBrowser = null;
globalData.InMenu = false;
mp.gui.cursor.show(false, false);
mp.gui.chat.activate(true);
}
});
mp.events.add('ToggleVehicleMenu', () => {
if (globalData.InMenu && menuBrowser !== null) {
menuBrowser.destroy();
menuBrowser = null;
globalData.InMenu = false;
mp.gui.chat.show(true);
mp.gui.cursor.show(false, false);
return;
} else {
menuBrowser = mp.browsers.new("package://assets/html/interaction/index.html");
mp.gui.chat.show(false);
globalData.InMenu = true;
mp.gui.cursor.show(true, true);
}
});
mp.events.add('doAction', (action) => {
mp.events.call('ToggleVehicleMenu');
switch (action) {
case 8: // Motor
mp.events.callRemote("VehicleMenu_ToggleEngine");
break;
case 5: // Auf -/ Abschließen
mp.events.callRemote("VehicleMenu_LockCar");
break;
case 3: // Türen
showDoorsMenu();
break;
case 7: // Parken
mp.events.callRemote("CLIENT:VehicleMenu_ParkCar");
break;
}
});
function showDoorsMenu() {
globalData.InMenu = true;
var doorMenu = new Menu("Türen", "Türen verwalten", new Point(0, screenRes.y / 3), null, null);
doorMenu.AddItem(new UIMenuListItem("Tür", "Welche Tür darf's sein?", new ItemsCollection([
" Fahrertür",
" Beifahrertür",
"Hinten links",
"Hinten rechts",
"Motorhaube",
"Kofferraum"
])));
doorMenu.AddItem(new UIMenuItem("Alle öffnen", "Öffnet alle Türen"));
doorMenu.AddItem(new UIMenuItem("Alle schließen", "Schließt alle Türen"));
doorMenu.ItemSelect.on((item, index) => {
if (index === 0) {
var doorId = -1;
switch (item.SelectedItem.DisplayText) {
case " Fahrertür":
doorId = 0;
break;
case " Beifahrertür":
doorId = 1;
break;
case "Hinten links":
doorId = 2;
break;
case "Hinten rechts":
doorId = 3;
break;
case "Motorhaube":
doorId = 4;
break;
case "Kofferraum":
doorId = 5;
break;
}
if (doorId !== -1) {
mp.events.callRemote("VehicleMenu_ToggleSingleDoor", doorId);
}
} else if (index === 1) {
mp.events.callRemote("VehicleMenu_OpenAllDoors");
} else if (index === 2) {
mp.events.callRemote("VehicleMenu_CloseAllDoors");
}
});
doorMenu.MenuClose.on(() => {
globalData.InMenu = false;
});
doorMenu.Open();
}
}