diff --git a/Client/Gui/vehiclemenu/main.js b/Client/Gui/vehiclemenu/main.js index bfd0b09f..2538d5f9 100644 --- a/Client/Gui/vehiclemenu/main.js +++ b/Client/Gui/vehiclemenu/main.js @@ -1,5 +1,17 @@ let menuBrowser = null; +const NativeUI = require('nativeui'); +const Menu = NativeUI.Menu; +const UIMenuItem = NativeUI.UIMenuItem; +const UIMenuListItem = NativeUI.UIMenuListItem; +const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem; +const UIMenuSliderItem = NativeUI.UIMenuSliderItem; +const BadgeStyle = NativeUI.BadgeStyle; +const Point = NativeUI.Point; +const ItemsCollection = NativeUI.ItemsCollection; +const Color = NativeUI.Color; +const ListItem = NativeUI.ListItem; + mp.events.add('ToggleVehicleMenu', () => { if (menuBrowser !== null) { menuBrowser.destroy(); @@ -24,15 +36,68 @@ mp.events.add('doAction', (action) => { case 8: // Motor mp.events.callRemote("VehicleMenu_ToggleEngine"); break; - case 5: + case 5: // Auf -/ Abschließen mp.events.callRemote("VehicleMenu_LockCar"); break; - case 3: + case 3: // Türen showDoorsMenu(); break; } }); function showDoorsMenu() { + mp.gui.chat.show(false); + var doorMenu = new Menu("Türen", "Türen verwalten", new Point(50, 50)); + + 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(() => { + mp.gui.chat.show(true); + }); + + doorMenu.Open(); } \ No newline at end of file diff --git a/Server/Events/VehicleMenu.cs b/Server/Events/VehicleMenu.cs index f86705a0..f3cb47d6 100644 --- a/Server/Events/VehicleMenu.cs +++ b/Server/Events/VehicleMenu.cs @@ -88,5 +88,42 @@ namespace reallife_gamemode.Server.Events player.SendNotification(msg); } } + + [RemoteEvent("VehicleMenu_ToggleSingleDoor")] + public void VehicleMenuToggleSingleDoorEvent(Client player, int door) + { + if (!player.IsInVehicle) return; + Vehicle veh = player.Vehicle; + + DoorID doorId = (DoorID)door; + + DoorState state = VehicleStreaming.GetDoorState(veh, doorId); + + VehicleStreaming.SetDoorState(veh, doorId, state == DoorState.DoorOpen ? DoorState.DoorClosed : DoorState.DoorOpen); + } + + [RemoteEvent("VehicleMenu_OpenAllDoors")] + public void VehicleMenuOpenAllDoorsEvent(Client player) + { + if (!player.IsInVehicle) return; + Vehicle veh = player.Vehicle; + + foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) + { + VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorOpen); + } + } + + [RemoteEvent("VehicleMenu_CloseAllDoors")] + public void VehicleMenuCloseAllDoorsEvent(Client player) + { + if (!player.IsInVehicle) return; + Vehicle veh = player.Vehicle; + + foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) + { + VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorClosed); + } + } } }