From 450b5610e90f7414ce49a45f1929aed8db32fab1 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 12 May 2019 14:51:14 +0200 Subject: [PATCH] rewrote tuning menu --- ReallifeGamemode.Client/Tuning/main.ts | 328 +++++++------------------ 1 file changed, 86 insertions(+), 242 deletions(-) diff --git a/ReallifeGamemode.Client/Tuning/main.ts b/ReallifeGamemode.Client/Tuning/main.ts index 82d66fe8..16baccd0 100644 --- a/ReallifeGamemode.Client/Tuning/main.ts +++ b/ReallifeGamemode.Client/Tuning/main.ts @@ -13,11 +13,11 @@ const Point = NativeUI.Point; export default function tuning(globalData: GlobalData) { var keyBound = false; - var disableInput = [75, 278, 279, 280, 281, 23, 59, 60, 71, 72, 74]; + const disableInput = [75, 278, 279, 280, 281, 23, 59, 60, 71, 72, 74]; - var carModTypes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 25, 27, 28, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 46, 48, 69]; + const carModTypes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 25, 27, 28, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 46, 48, 69]; - var carModSlotName = [ + const carModSlotName = [ { Slot: 0, Name: "Spoiler" }, { Slot: 1, Name: "Frontstoßstange" }, { Slot: 2, Name: "Heckstoßstange" }, @@ -26,8 +26,8 @@ export default function tuning(globalData: GlobalData) { { Slot: 5, Name: "Rahmen" }, { Slot: 6, Name: "Kühlergrill" }, { Slot: 7, Name: "Motorhaube" }, - { Slot: 8, Name: "Kotflügel" }, - { Slot: 9, Name: "Rechter Kotflügel" }, + { Slot: 8, Name: "Extra 1" }, + { Slot: 9, Name: "Extra 2" }, { Slot: 10, Name: "Dach" }, { Slot: 11, Name: "Motor" }, { Slot: 12, Name: "Bremsen" }, @@ -50,7 +50,7 @@ export default function tuning(globalData: GlobalData) { { Slot: 48, Name: "Design" } ]; - var customPartNames = [ + const customPartNames = [ { Model: 1093792632, Names: [ @@ -93,7 +93,7 @@ export default function tuning(globalData: GlobalData) { } ]; - var doorOpeners = [ + const doorOpeners = [ { Model: 3308022675, Doors: [ @@ -105,11 +105,7 @@ export default function tuning(globalData: GlobalData) { } ]; - var bikeModTypes = []; - - var mainMenu; - var modMenu; - var closeMenu = false; + var mainMenu: NativeUI.Menu; mp.events.add('showTuningInfo', () => { mp.game.ui.setTextComponentFormat('STRING'); @@ -133,12 +129,6 @@ export default function tuning(globalData: GlobalData) { globalData.InTuning = false; } - if (typeof modMenu !== "undefined" && modMenu.Visible && unbind) { - closeMenu = true; - modMenu.Close(); - globalData.InTuning = false; - } - if (keyBound && unbind) { mp.keys.unbind(0x45, false, keyPressHandler); keyBound = false; @@ -166,198 +156,123 @@ export default function tuning(globalData: GlobalData) { localVehicle.setHalt(1.0, true, false); - if (typeof mainMenu !== "undefined" && mainMenu.Visible) { - return; - } - - if (typeof modMenu !== "undefined" && modMenu.Visible) { - return; - } - + globalData.InMenu = true; globalData.InTuning = true; localVehicle.setLights(1); - var carName = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(localVehicle.model)); mainMenu = new Menu("Fahrzeugwerkstatt", carName, new Point(50, 50), null, null); - if (localVehicle.getBodyHealth() !== 1000) { - - var repairItem = new UIMenuItem("Fahrzeug reparieren"); - mainMenu.AddItem(repairItem); - - mainMenu.ItemSelect.on((selectedItem, index) => { - if (selectedItem === repairItem) { - mp.events.callRemote("repairVehicle"); - mainMenu.Close(); - setTimeout(() => { - mp.events.call("showTuningMenu"); - }, 500); - } - }); - - mainMenu.MenuClose.on(() => { - globalData.InTuning = false; - mp.events.call("hideTuningInfo", false); - }); - - mainMenu.Open(); - - return; - } + var currentMod = new Array(); + var currentActiveModItem = new Array(); carModTypes.forEach((modType) => { - if (localVehicle.getModSlotName(modType) !== "undefined") { - var slotName = mp.game.ui.getLabelText(localVehicle.getModSlotName(modType)); - if (slotName === "NULL") { - slotName = getCustomName(localVehicle.model, modType); - if (slotName === undefined) slotName = getSlotName(modType); + var num = localVehicle.getNumMods(modType); + + if (num === 0 && modType !== 18 && modType !== 22) return; + + var modName = localVehicle.getModSlotName(modType) || "nix gefunden"; + modName = mp.game.ui.getLabelText(modName); + + if (modName === "NULL") { + for (var x = 0; x < carModSlotName.length; x++) { + var tmpSlot = carModSlotName[x]; + if (tmpSlot.Slot == modType) { + modName = tmpSlot.Name; + break; + } } - - if (slotName === "undefined") slotName = "Slot " + modType; - - var menuItem = new UIMenuItem(slotName); - var num = localVehicle.getNumMods(modType); - if (num === undefined && modType !== 18 && modType !== 22) return; - if (num !== 0 || modType === 18 || modType === 22) mainMenu.AddItem(menuItem); - } - }); - - mainMenu.Open(); - - mainMenu.ItemSelect.on((item) => { - var modSlot: number = getSlotId(item.Text); - if (item.Text.startsWith("Slot")) { - var restStr = item.Text.substring(5); - modSlot = parseInt(restStr); - } - if (modSlot === undefined) return; - - if (modSlot === 38) { - localVehicle.setDoorOpen(5, false, false); - } else if (modSlot === 39 || modSlot === 40 || modSlot === 41) { - localVehicle.setDoorOpen(4, false, false); } - var door = getDoor(localVehicle.model, modSlot); - if (door !== undefined) { - localVehicle.setDoorOpen(door, false, false); - } + var modMenu = new Menu(modName, carName, new Point(50, 50), null, null); - var currentMod = localVehicle.getMod(modSlot); - var oldToggleValue; - if (modSlot === 18) { - oldToggleValue = localVehicle.isToggleModOn(modSlot); - currentMod = oldToggleValue ? 0 : -1; - } + var modNum = localVehicle.getNumMods(modType); + if (modType === 18) modNum = 1; + if (modType === 22) modNum = 14; + + var mod = localVehicle.getMod(modType); - if (modSlot === 22) { - localVehicle.setLights(2); + if (modType === 22) { var hlColor = localVehicle.getVariable("headlightColor"); if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) { - currentMod = -1; - } else if (hlColor === 13) currentMod = 0; - else currentMod = hlColor + 2; + mod = -1; + } else if (hlColor === 13) mod = 0; + else mod = hlColor + 1; } - var currentModItem; + if (modType === 18) { + var toggle = localVehicle.isToggleModOn(modType); + mod = toggle ? 0 : -1; + } - var modNum = localVehicle.getNumMods(modSlot); - if (modSlot === 18) modNum = 1; - if (modSlot === 22) modNum = 14; + currentMod[modType] = mod; - modMenu = new Menu(item.Text, "Änderung: " + item.Text, new Point(50, 50), null, null); - - for (var i = -1; i < modNum; i++) { - var modItem; - - if (i === -1) { - modItem = new UIMenuItem("Serie", ""); + for (var x = -1; x < modNum; x++) { + var modText = ""; + if (x === -1) { + modText = "Serie"; } else { - var modName = getModName(localVehicle, modSlot, i); - - modItem = new UIMenuItem(modName, ""); + modText = mp.game.ui.getLabelText(localVehicle.getModTextLabel(modType, x)); + if (modText === "NULL") modText = getModName(localVehicle, modType, x); } + var item = new UIMenuItem(modText); + modMenu.AddItem(item); - if (i === currentMod - (modSlot === 22 ? 1 : 0)) { - modItem.SetRightBadge(BadgeStyle.Car); - currentModItem = modItem; + if (x === mod) { + item.SetRightBadge(BadgeStyle.Car); + currentActiveModItem[modType] = item; + modMenu.CurrentSelection = x; } - - modMenu.AddItem(modItem); } - modMenu.ItemSelect.on((selectedItem, index) => { - if (currentModItem !== undefined) { - currentModItem.SetRightBadge(BadgeStyle.None); - } - if (selectedItem !== undefined) { - selectedItem.SetRightBadge(BadgeStyle.Car); - currentModItem = selectedItem; - } - mp.events.callRemote("setVehicleMod", modSlot, index); - - if (modSlot === 18) { - oldToggleValue = index; - return; - } - - if (modSlot === 22) { - currentMod = index; - return; - } - - if (index === 0) index = -1; - currentMod = index - 1; - }); - - modMenu.IndexChange.on((index) => { - if (modSlot === 18) return; - if (modSlot === 22) { + modMenu.IndexChange.on((index: number) => { + if (modType === 18) return; + if (modType === 22) { setHeadlightsColor(localVehicle, index); return; } - if (index === 0) index = -1; - localVehicle.setMod(modSlot, index - 1); + localVehicle.setMod(modType, index - 1); + }); + + modMenu.MenuOpen.on(() => { + if (modType === 22) { + localVehicle.setLights(2); + } + }); + + modMenu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => { + currentMod[modType] = index - 1; + currentActiveModItem[modType].SetRightBadge(BadgeStyle.None); + item.SetRightBadge(BadgeStyle.Car); + currentActiveModItem[modType] = item; + + mp.events.callRemote("setVehicleMod", modType, index); }); modMenu.MenuClose.on(() => { - if (modSlot === 38) { - localVehicle.setDoorShut(5, false); - } else if (modSlot === 39 || modSlot === 40 || modSlot === 41) { - localVehicle.setDoorShut(4, false); - } - - if (door !== undefined) { - localVehicle.setDoorShut(door, false); - } - - if (closeMenu) { - closeMenu = false; - return; - } - - mainMenu.Visible = true; - modMenu.Visible = false; - - if (modSlot === 18) return; - else if (modSlot === 22) { + if (modType === 18) return; + if (modType === 22) { localVehicle.setLights(1); - setHeadlightsColor(localVehicle, currentMod); return; } - localVehicle.setMod(modSlot, currentMod); + localVehicle.setMod(modType, currentMod[modType]); }); - mainMenu.Visible = false; - modMenu.Visible = true; + modMenu.Visible = false; + + var menuItem = new UIMenuItem(modName); + mainMenu.AddItem(menuItem); + mainMenu.BindMenuToItem(modMenu, menuItem); }); + mainMenu.Visible = true; + mainMenu.MenuClose.on(() => { localVehicle.setLights(0); globalData.InTuning = false; + globalData.InMenu = false; mp.events.call("hideTuningInfo", false); }); @@ -369,80 +284,7 @@ export default function tuning(globalData: GlobalData) { } }); - function getSlotName(slot) { - var toReturn = "undefined"; - - carModSlotName.forEach((name) => { - if (name.Slot === slot) toReturn = name.Name; - }); - - return toReturn; - } - - function getSlotId(slotName): number { - var toReturn = undefined; - - carModSlotName.forEach((name) => { - if (name.Name === slotName) toReturn = name.Slot; - }); - - if (toReturn === "undefined") { - - toReturn = getCustomId(mp.players.local.vehicle.model, slotName); - - if (toReturn === undefined) { - carModTypes.forEach((modType) => { - if (mp.game.ui.getLabelText(mp.players.local.vehicle.getModSlotName(modType)) === slotName) toReturn = getSlotId(getSlotName(modType)); - }); - } - } - - return toReturn; - } - - function getCustomName(model, slot) { - var toReturn = undefined; - - customPartNames.forEach((cpn) => { - if (cpn.Model === model) { - cpn.Names.forEach((names) => { - if (names.Slot === slot) toReturn = names.Name; - }); - } - }); - - return toReturn; - } - - function getCustomId(model, name) { - var toReturn = undefined; - - customPartNames.forEach((cpn) => { - if (cpn.Model === model) { - cpn.Names.forEach((names) => { - if (names.Name === name) toReturn = names.Slot; - }); - } - }); - - return toReturn; - } - - function getDoor(model, slot) { - var toReturn = undefined; - - doorOpeners.forEach((cpn) => { - if (cpn.Model === model) { - cpn.Doors.forEach((door) => { - if (door.Slot === slot) toReturn = door.Door; - }); - } - }); - - return toReturn; - } - - function getModName(vehicle, slot, mod) { + function getModName(vehicle: VehicleMp, slot: number, mod: number) { var modName = vehicle.getModTextLabel(slot, mod); var realModName = mp.game.ui.getLabelText(modName); @@ -484,6 +326,8 @@ export default function tuning(globalData: GlobalData) { case 2: realModName = "Renngetriebe"; break; + case 3: + realModName = "Wettkampfgetriebe"; } } else if (slot === 15) { switch (mod) { @@ -547,7 +391,7 @@ export default function tuning(globalData: GlobalData) { realModName = "Lila Licht"; break; case 13: - realModName = "Hell-lila Licht"; + realModName = "Schwarzlicht"; break; } }