rewrote tuning menu
This commit is contained in:
@@ -13,11 +13,11 @@ const Point = NativeUI.Point;
|
|||||||
export default function tuning(globalData: GlobalData) {
|
export default function tuning(globalData: GlobalData) {
|
||||||
var keyBound = false;
|
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: 0, Name: "Spoiler" },
|
||||||
{ Slot: 1, Name: "Frontstoßstange" },
|
{ Slot: 1, Name: "Frontstoßstange" },
|
||||||
{ Slot: 2, Name: "Heckstoßstange" },
|
{ Slot: 2, Name: "Heckstoßstange" },
|
||||||
@@ -26,8 +26,8 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
{ Slot: 5, Name: "Rahmen" },
|
{ Slot: 5, Name: "Rahmen" },
|
||||||
{ Slot: 6, Name: "Kühlergrill" },
|
{ Slot: 6, Name: "Kühlergrill" },
|
||||||
{ Slot: 7, Name: "Motorhaube" },
|
{ Slot: 7, Name: "Motorhaube" },
|
||||||
{ Slot: 8, Name: "Kotflügel" },
|
{ Slot: 8, Name: "Extra 1" },
|
||||||
{ Slot: 9, Name: "Rechter Kotflügel" },
|
{ Slot: 9, Name: "Extra 2" },
|
||||||
{ Slot: 10, Name: "Dach" },
|
{ Slot: 10, Name: "Dach" },
|
||||||
{ Slot: 11, Name: "Motor" },
|
{ Slot: 11, Name: "Motor" },
|
||||||
{ Slot: 12, Name: "Bremsen" },
|
{ Slot: 12, Name: "Bremsen" },
|
||||||
@@ -50,7 +50,7 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
{ Slot: 48, Name: "Design" }
|
{ Slot: 48, Name: "Design" }
|
||||||
];
|
];
|
||||||
|
|
||||||
var customPartNames = [
|
const customPartNames = [
|
||||||
{
|
{
|
||||||
Model: 1093792632,
|
Model: 1093792632,
|
||||||
Names: [
|
Names: [
|
||||||
@@ -93,7 +93,7 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
var doorOpeners = [
|
const doorOpeners = [
|
||||||
{
|
{
|
||||||
Model: 3308022675,
|
Model: 3308022675,
|
||||||
Doors: [
|
Doors: [
|
||||||
@@ -105,11 +105,7 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
var bikeModTypes = [];
|
var mainMenu: NativeUI.Menu;
|
||||||
|
|
||||||
var mainMenu;
|
|
||||||
var modMenu;
|
|
||||||
var closeMenu = false;
|
|
||||||
|
|
||||||
mp.events.add('showTuningInfo', () => {
|
mp.events.add('showTuningInfo', () => {
|
||||||
mp.game.ui.setTextComponentFormat('STRING');
|
mp.game.ui.setTextComponentFormat('STRING');
|
||||||
@@ -133,12 +129,6 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
globalData.InTuning = false;
|
globalData.InTuning = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof modMenu !== "undefined" && modMenu.Visible && unbind) {
|
|
||||||
closeMenu = true;
|
|
||||||
modMenu.Close();
|
|
||||||
globalData.InTuning = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (keyBound && unbind) {
|
if (keyBound && unbind) {
|
||||||
mp.keys.unbind(0x45, false, keyPressHandler);
|
mp.keys.unbind(0x45, false, keyPressHandler);
|
||||||
keyBound = false;
|
keyBound = false;
|
||||||
@@ -166,198 +156,123 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
|
|
||||||
localVehicle.setHalt(1.0, true, false);
|
localVehicle.setHalt(1.0, true, false);
|
||||||
|
|
||||||
if (typeof mainMenu !== "undefined" && mainMenu.Visible) {
|
globalData.InMenu = true;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof modMenu !== "undefined" && modMenu.Visible) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
globalData.InTuning = true;
|
globalData.InTuning = true;
|
||||||
|
|
||||||
localVehicle.setLights(1);
|
localVehicle.setLights(1);
|
||||||
|
|
||||||
var carName = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(localVehicle.model));
|
var carName = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(localVehicle.model));
|
||||||
|
|
||||||
mainMenu = new Menu("Fahrzeugwerkstatt", carName, new Point(50, 50), null, null);
|
mainMenu = new Menu("Fahrzeugwerkstatt", carName, new Point(50, 50), null, null);
|
||||||
|
|
||||||
if (localVehicle.getBodyHealth() !== 1000) {
|
var currentMod = new Array<number>();
|
||||||
|
var currentActiveModItem = new Array<NativeUI.UIMenuItem>();
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
carModTypes.forEach((modType) => {
|
carModTypes.forEach((modType) => {
|
||||||
if (localVehicle.getModSlotName(modType) !== "undefined") {
|
|
||||||
var slotName = mp.game.ui.getLabelText(localVehicle.getModSlotName(modType));
|
|
||||||
|
|
||||||
if (slotName === "NULL") {
|
var num = localVehicle.getNumMods(modType);
|
||||||
slotName = getCustomName(localVehicle.model, modType);
|
|
||||||
if (slotName === undefined) slotName = getSlotName(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);
|
var modMenu = new Menu(modName, carName, new Point(50, 50), null, null);
|
||||||
if (door !== undefined) {
|
|
||||||
localVehicle.setDoorOpen(door, false, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
var currentMod = localVehicle.getMod(modSlot);
|
var modNum = localVehicle.getNumMods(modType);
|
||||||
var oldToggleValue;
|
if (modType === 18) modNum = 1;
|
||||||
if (modSlot === 18) {
|
if (modType === 22) modNum = 14;
|
||||||
oldToggleValue = localVehicle.isToggleModOn(modSlot);
|
|
||||||
currentMod = oldToggleValue ? 0 : -1;
|
var mod = localVehicle.getMod(modType);
|
||||||
}
|
|
||||||
|
|
||||||
if (modSlot === 22) {
|
if (modType === 22) {
|
||||||
localVehicle.setLights(2);
|
|
||||||
var hlColor = localVehicle.getVariable("headlightColor");
|
var hlColor = localVehicle.getVariable("headlightColor");
|
||||||
if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) {
|
if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) {
|
||||||
currentMod = -1;
|
mod = -1;
|
||||||
} else if (hlColor === 13) currentMod = 0;
|
} else if (hlColor === 13) mod = 0;
|
||||||
else currentMod = hlColor + 2;
|
else mod = hlColor + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentModItem;
|
if (modType === 18) {
|
||||||
|
var toggle = localVehicle.isToggleModOn(modType);
|
||||||
|
mod = toggle ? 0 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
var modNum = localVehicle.getNumMods(modSlot);
|
currentMod[modType] = mod;
|
||||||
if (modSlot === 18) modNum = 1;
|
|
||||||
if (modSlot === 22) modNum = 14;
|
|
||||||
|
|
||||||
modMenu = new Menu(item.Text, "Änderung: " + item.Text, new Point(50, 50), null, null);
|
for (var x = -1; x < modNum; x++) {
|
||||||
|
var modText = "";
|
||||||
for (var i = -1; i < modNum; i++) {
|
if (x === -1) {
|
||||||
var modItem;
|
modText = "Serie";
|
||||||
|
|
||||||
if (i === -1) {
|
|
||||||
modItem = new UIMenuItem("Serie", "");
|
|
||||||
} else {
|
} else {
|
||||||
var modName = getModName(localVehicle, modSlot, i);
|
modText = mp.game.ui.getLabelText(localVehicle.getModTextLabel(modType, x));
|
||||||
|
if (modText === "NULL") modText = getModName(localVehicle, modType, x);
|
||||||
modItem = new UIMenuItem(modName, "");
|
|
||||||
}
|
}
|
||||||
|
var item = new UIMenuItem(modText);
|
||||||
|
modMenu.AddItem(item);
|
||||||
|
|
||||||
if (i === currentMod - (modSlot === 22 ? 1 : 0)) {
|
if (x === mod) {
|
||||||
modItem.SetRightBadge(BadgeStyle.Car);
|
item.SetRightBadge(BadgeStyle.Car);
|
||||||
currentModItem = modItem;
|
currentActiveModItem[modType] = item;
|
||||||
|
modMenu.CurrentSelection = x;
|
||||||
}
|
}
|
||||||
|
|
||||||
modMenu.AddItem(modItem);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
modMenu.ItemSelect.on((selectedItem, index) => {
|
modMenu.IndexChange.on((index: number) => {
|
||||||
if (currentModItem !== undefined) {
|
if (modType === 18) return;
|
||||||
currentModItem.SetRightBadge(BadgeStyle.None);
|
if (modType === 22) {
|
||||||
}
|
|
||||||
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) {
|
|
||||||
setHeadlightsColor(localVehicle, index);
|
setHeadlightsColor(localVehicle, index);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (index === 0) index = -1;
|
localVehicle.setMod(modType, index - 1);
|
||||||
localVehicle.setMod(modSlot, 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(() => {
|
modMenu.MenuClose.on(() => {
|
||||||
if (modSlot === 38) {
|
if (modType === 18) return;
|
||||||
localVehicle.setDoorShut(5, false);
|
if (modType === 22) {
|
||||||
} 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) {
|
|
||||||
localVehicle.setLights(1);
|
localVehicle.setLights(1);
|
||||||
setHeadlightsColor(localVehicle, currentMod);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
localVehicle.setMod(modSlot, currentMod);
|
localVehicle.setMod(modType, currentMod[modType]);
|
||||||
});
|
});
|
||||||
|
|
||||||
mainMenu.Visible = false;
|
modMenu.Visible = false;
|
||||||
modMenu.Visible = true;
|
|
||||||
|
var menuItem = new UIMenuItem(modName);
|
||||||
|
mainMenu.AddItem(menuItem);
|
||||||
|
mainMenu.BindMenuToItem(modMenu, menuItem);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mainMenu.Visible = true;
|
||||||
|
|
||||||
mainMenu.MenuClose.on(() => {
|
mainMenu.MenuClose.on(() => {
|
||||||
localVehicle.setLights(0);
|
localVehicle.setLights(0);
|
||||||
globalData.InTuning = false;
|
globalData.InTuning = false;
|
||||||
|
globalData.InMenu = false;
|
||||||
mp.events.call("hideTuningInfo", false);
|
mp.events.call("hideTuningInfo", false);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -369,80 +284,7 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function getSlotName(slot) {
|
function getModName(vehicle: VehicleMp, slot: number, mod: number) {
|
||||||
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) {
|
|
||||||
var modName = vehicle.getModTextLabel(slot, mod);
|
var modName = vehicle.getModTextLabel(slot, mod);
|
||||||
var realModName = mp.game.ui.getLabelText(modName);
|
var realModName = mp.game.ui.getLabelText(modName);
|
||||||
|
|
||||||
@@ -484,6 +326,8 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
case 2:
|
case 2:
|
||||||
realModName = "Renngetriebe";
|
realModName = "Renngetriebe";
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
realModName = "Wettkampfgetriebe";
|
||||||
}
|
}
|
||||||
} else if (slot === 15) {
|
} else if (slot === 15) {
|
||||||
switch (mod) {
|
switch (mod) {
|
||||||
@@ -547,7 +391,7 @@ export default function tuning(globalData: GlobalData) {
|
|||||||
realModName = "Lila Licht";
|
realModName = "Lila Licht";
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
realModName = "Hell-lila Licht";
|
realModName = "Schwarzlicht";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user