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(); } }