Files
2021-05-08 19:58:11 +02:00

161 lines
5.4 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/html/driver-history/index.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 1: // Motor an-/ausschalten
mp.events.callRemote("VehicleMenu_ToggleEngine");
break;
case 2: // Gurt an-/ablegen
mp.events.callRemote("CLIENT:VehicleMenu_UseSeatbelt");
break;
case 3: // Fahrzeug auf-/abschließen
mp.events.callRemote("VehicleMenu_LockCar");
break;
case 4: // Fahrzeug tanken
break;
case 5: // Fahrzeug parken
mp.events.callRemote("CLIENT:VehicleMenu_ParkCar");
break;
case 6: // Türen öffnen/schließen
showDoorsMenu();
break;
}
});
mp.events.add("SERVER:ChangeSeatbeltState", () => {
var currentState = mp.players.local.getConfigFlag(32, true);
currentState = !currentState;
mp.players.local.setConfigFlag(32, currentState);
var msg = `Sicherheitsgurt ${(currentState ? '~r~abgelegt' : '~g~angelegt')}`;
mp.events.call("BN_Show", msg);
});
mp.events.add(RageEnums.EventKey.PLAYER_LEAVE_VEHICLE, (vehicle, seat) => {
mp.players.local.setConfigFlag(32, true);
});
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();
}
}