diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index 45a3efb1..bc5d21ba 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -156,231 +156,232 @@ export default function factionInteraction(globalData: IGlobalData) { }); }); - mp.events.add("showFactionInteractionMedic", (userFactionId, isDuty, userFactionName, isFactionLeader, reviveTaskCountMedic, healTaskCountMedic, fireTaskCountMedic) => { - mp.gui.chat.activate(false); - globalData.InMenu = true; + mp.events.add("showFactionInteractionMedic", (userFactionId, isDuty, userFactionName, isFactionLeader, reviveTaskCountMedic, healTaskCountMedic, fireTaskCountMedic) => { + mp.gui.chat.activate(false); + globalData.InMenu = true; - //Medic - var rPM = ((reviveTaskCountMedic === "0") ? "~r~" : "~g~"); - var hPM = ((healTaskCountMedic === "0") ? "~r~" : "~g~"); - var fPM = ((fireTaskCountMedic === "0") ? "~r~" : "~g~"); + //Medic + var rPM = ((reviveTaskCountMedic === "0") ? "~r~" : "~g~"); + var hPM = ((healTaskCountMedic === "0") ? "~r~" : "~g~"); + var fPM = ((fireTaskCountMedic === "0") ? "~r~" : "~g~"); - factionInteractionMenu = new Menu("Fraktionsinteraktion", userFactionName, new Point(0, screenRes.y / 2), null, null); + factionInteractionMenu = new Menu("Fraktionsinteraktion", userFactionName, new Point(0, screenRes.y / 2), null, null); - if (isFactionLeader) { - let leaderMenu = new UIMenuItem("Leadermen\u00fc", "Verwaltung der Fraktion"); - leaderMenu.SetRightBadge(BadgeStyle.Star); - factionInteractionMenu.AddItem(leaderMenu); - } + if (isFactionLeader) { + let leaderMenu = new UIMenuItem("Leadermen\u00fc", "Verwaltung der Fraktion"); + leaderMenu.SetRightBadge(BadgeStyle.Star); + factionInteractionMenu.AddItem(leaderMenu); + } - //Medic - let reviveTaskMenuMedic; - let healTaskMenuMedic; - let fireTaskMenuMedic; + //Medic + let reviveTaskMenuMedic; + let healTaskMenuMedic; + let fireTaskMenuMedic; - if (userFactionId == 2) { - if (isDuty) { - reviveTaskMenuMedic = new UIMenuItem("Reviveauftr\u00e4ge"); - reviveTaskMenuMedic.SetRightLabel(rPM + reviveTaskCountMedic) - factionInteractionMenu.AddItem(reviveTaskMenuMedic); + if (userFactionId == 2) { + if (isDuty) { + reviveTaskMenuMedic = new UIMenuItem("Reviveauftr\u00e4ge"); + reviveTaskMenuMedic.SetRightLabel(rPM + reviveTaskCountMedic) + factionInteractionMenu.AddItem(reviveTaskMenuMedic); - healTaskMenuMedic = new UIMenuItem("Healauftr\u00e4ge"); - healTaskMenuMedic.SetRightLabel(hPM + healTaskCountMedic) - factionInteractionMenu.AddItem(healTaskMenuMedic); + healTaskMenuMedic = new UIMenuItem("Healauftr\u00e4ge"); + healTaskMenuMedic.SetRightLabel(hPM + healTaskCountMedic) + factionInteractionMenu.AddItem(healTaskMenuMedic); - fireTaskMenuMedic = new UIMenuItem("Feuerauftr\u00e4ge"); - fireTaskMenuMedic.SetRightLabel(fPM + fireTaskCountMedic); - factionInteractionMenu.AddItem(fireTaskMenuMedic); + fireTaskMenuMedic = new UIMenuItem("Feuerauftr\u00e4ge"); + fireTaskMenuMedic.SetRightLabel(fPM + fireTaskCountMedic); + factionInteractionMenu.AddItem(fireTaskMenuMedic); - } - } + } + } - let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Fraktionsinteraktion."); - cancelItem.BackColor = new Color(213, 0, 0); - cancelItem.HighlightedBackColor = new Color(229, 57, 53); - factionInteractionMenu.AddItem(cancelItem); + let cancelItem = new UIMenuItem("Schlie\u00dfen", "Schlie\u00dft die Fraktionsinteraktion."); + cancelItem.BackColor = new Color(213, 0, 0); + cancelItem.HighlightedBackColor = new Color(229, 57, 53); + factionInteractionMenu.AddItem(cancelItem); - factionInteractionMenu.Visible = true; + factionInteractionMenu.Visible = true; - factionInteractionMenu.ItemSelect.on((item) => { - switch (item) { - case cancelItem: - factionInteractionMenu.Visible = false; - mp.gui.chat.activate(true); - globalData.InMenu = false; - break; - case reviveTaskMenuMedic: - mp.events.callRemote("loadMedicTasks", 0) - factionInteractionMenu.Visible = false; - mp.gui.chat.activate(true); - globalData.InMenu = false; - break; - } - }); - - factionInteractionMenu.MenuClose.on(() => { + factionInteractionMenu.ItemSelect.on((item) => { + switch (item) { + case cancelItem: + factionInteractionMenu.Visible = false; mp.gui.chat.activate(true); globalData.InMenu = false; - }); - }); - - - mp.events.add("showMedicTasks", (type, taskList) => { - tasks = JSON.parse(taskList); - if (sorting === 0) { - initTasks = tasks; - } - - mp.events.call("sortFactionTasks", false); - - mp.gui.chat.activate(false); - globalData.InMenu = true; - switch (type) { - case 0: - reviveTaskMenuMedic = new Menu("Revives", "\u00c4lteste zu erst", new Point(0, screenRes.y / 2), null, null); - let aTask; - for (var i = 0; i < tasks.length; i++) { - if (tasks[i].MedicName === "none") { - aTask = new UIMenuItem("~g~" + tasks[i].Victim); - } else { - aTask = new UIMenuItem("~r~" + tasks[i].Victim); - } - - aTask.SetRightLabel(mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[i].Position.x, tasks[i].Position.y, tasks[i].Position.z, true).toFixed(2).toString() + " ~g~m"); - reviveTaskMenuMedic.AddItem(aTask); - } - - let backItem = new UIMenuItem("Zur\u00fcck", "Zur\u00fcck zur Fraktionsinteraktion."); - backItem.BackColor = new Color(213, 0, 0); - backItem.HighlightedBackColor = new Color(229, 57, 53); - reviveTaskMenuMedic.AddItem(backItem); - - reviveTaskMenuMedic.ItemSelect.on((item, index) => { - if (item === backItem) { - reviveTaskMenuMedic.Visible = false; - factionInteractionMenu.Visible = true; - } else { - if (tasks[index].MedicName === "none") { - mp.game.graphics.requestStreamedTextureDict("medicimages", true); - mp.events.callRemote("updateMedicTask", 0, index, player.name); - mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y); - activeCheckpoint = mp.markers.new(1, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0, { - color: [255, 0, 0, 150], - visible: true, - dimension: 0 - }); - reviveTaskMenuMedic.Visible = false; - mp.gui.chat.activate(true); - globalData.InMenu = false; - ambulanceImagePos = 0.325 - taskStart = player.position; - taskFinish = tasks[index].Position; - taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true); - activeTask = true; - } - } - }); - - reviveTaskMenuMedic.MenuClose.on(() => { - reviveTaskMenuMedic.Visible = false; - factionInteractionMenu.Visible = true; - }); - break; - case 1: - break; - case 2: - break; - } - }); - - mp.events.add("sortFactionTasks", (sortByKey) => { - if (firstSorting) { - sortText = "Nach Uhrzeit"; - firstSorting = false; - //mp.gui.chat.push("Init Sort"); - return; - } else { - if (sortByKey) { - if (sorting < 1) { - sorting++; - } else { - sorting = 0; - } - - switch (sorting) { - case 0: //Standartsortierung - - reviveTaskMenuMedic.Close(); - factionInteractionMenu.Close(); - sortText = "Nach Uhrzeit"; - mp.events.call("showMedicTasks", 0, JSON.stringify(initTasks)); - break; - - case 1: //Sortierung nach Metern (aufsteigend) - for (var d = 0; d < tasks.length; d++) { - for (var e = 0; e < tasks.length - 1; e++) { - if (getDistance1(e) > getDistance2(e + 1)) { - var tempTask = tasks[e]; - tasks[e] = tasks[e + 1]; - tasks[e + 1] = tempTask; - mp.gui.chat.push("SWITCH"); - } - } - } - reviveTaskMenuMedic.Close(); - factionInteractionMenu.Close(); - sortText = "Entfernung aufsteigend"; - mp.events.call("showMedicTasks", 0, JSON.stringify(tasks)); - break; - - //case 2: //Sortierung nach Metern (absteigend) - // mp.gui.chat.push("Sorting 2"); - // sortText = "Entfernung absteigend"; - // break; - //case 3: //Sortierung nach Zeit (aufsteigend) - // mp.gui.chat.push("Sorting 3"); - // sortText = "Restzeit aufsteigend"; - // break; - //case 4: //Sortierung nach Zeit (absteigend) - // mp.gui.chat.push("Sorting 4"); - // sortText = "Restzeit absteigend"; - // break; - } - } - } - }); - - function getDistance1(index) { - return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); - } - function getDistance2(index) { - return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); + break; + case reviveTaskMenuMedic: + mp.events.callRemote("loadMedicTasks", 0) + factionInteractionMenu.Visible = false; + mp.gui.chat.activate(true); + globalData.InMenu = false; + break; } + }); - mp.events.add('render', () => { - if (activeTask) { - rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2); - if (rangeLeft > 1.9) { - ambulanceImagePos = 0.655 - (mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true) / taskRange * 0.35); - mp.game.graphics.drawRect(0.5, 0.945, 0.35, 0.025, 150, 0, 0, 200); - mp.game.graphics.drawText(rangeLeft.toString() + "m", [0.5, 0.93], { - font: 0, - color: [255, 255, 255, 255], - scale: [0.35, 0.35], - outline: true, - centre: true - }); - if (taskRange < rangeLeft) ambulanceImagePos = 0.3; - mp.game.graphics.drawSprite("medicimages", "finish", 0.655, 0.898, 0.04, 0.07, 0, 255, 255, 255, 255); - if (player.isInAnyVehicle(false)) { - mp.game.graphics.drawSprite("medicimages", "ambulance", ambulanceImagePos + 0.01, 0.915, 0.04, 0.07, 0, 255, 255, 255, 255); - } else { - mp.game.graphics.drawSprite("medicimages", "running", ambulanceImagePos + 0.02, 0.915, 0.02, 0.035, 0, 255, 0, 0, 255); - } + factionInteractionMenu.MenuClose.on(() => { + mp.gui.chat.activate(true); + globalData.InMenu = false; + }); + }); + + + mp.events.add("showMedicTasks", (type, taskList) => { + tasks = JSON.parse(taskList); + if (sorting === 0) { + initTasks = tasks; + } + + mp.events.call("sortFactionTasks", false); + + mp.gui.chat.activate(false); + globalData.InMenu = true; + switch (type) { + case 0: + reviveTaskMenuMedic = new Menu("Revives", "\u00c4lteste zu erst", new Point(0, screenRes.y / 2), null, null); + let aTask; + for (var i = 0; i < tasks.length; i++) { + if (tasks[i].MedicName === "none") { + aTask = new UIMenuItem("~g~" + tasks[i].Victim); } else { - activeTask = false; - activeCheckpoint.destroy(); + aTask = new UIMenuItem("~r~" + tasks[i].Victim); } + + aTask.SetRightLabel(mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[i].Position.x, tasks[i].Position.y, tasks[i].Position.z, true).toFixed(2).toString() + " ~g~m"); + reviveTaskMenuMedic.AddItem(aTask); } - }); - } \ No newline at end of file + + let backItem = new UIMenuItem("Zur\u00fcck", "Zur\u00fcck zur Fraktionsinteraktion."); + backItem.BackColor = new Color(213, 0, 0); + backItem.HighlightedBackColor = new Color(229, 57, 53); + reviveTaskMenuMedic.AddItem(backItem); + + reviveTaskMenuMedic.ItemSelect.on((item, index) => { + if (item === backItem) { + reviveTaskMenuMedic.Visible = false; + factionInteractionMenu.Visible = true; + } else { + if (tasks[index].MedicName === "none") { + mp.game.graphics.requestStreamedTextureDict("medicimages", true); + mp.events.callRemote("updateMedicTask", 0, index, player.name); + mp.game.ui.setNewWaypoint(tasks[index].Position.x, tasks[index].Position.y); + activeCheckpoint = mp.markers.new(1, new mp.Vector3(tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z - 2), 3.0, { + color: [255, 0, 0, 150], + visible: true, + dimension: 0 + }); + reviveTaskMenuMedic.Close(); + mp.gui.chat.activate(true); + globalData.InMenu = false; + ambulanceImagePos = 0.325 + taskStart = player.position; + taskFinish = tasks[index].Position; + taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true); + activeTask = true; + } + } + }); + + reviveTaskMenuMedic.MenuClose.on(() => { + reviveTaskMenuMedic.Visible = false; + factionInteractionMenu.Visible = true; + globalData.InMenu = false; + }); + break; + case 1: + break; + case 2: + break; + } + }); + + mp.events.add("sortFactionTasks", (sortByKey) => { + if (firstSorting) { + sortText = "Nach Uhrzeit"; + firstSorting = false; + //mp.gui.chat.push("Init Sort"); + return; + } else { + if (sortByKey) { + if (sorting < 1) { + sorting++; + } else { + sorting = 0; + } + + switch (sorting) { + case 0: //Standartsortierung + + reviveTaskMenuMedic.Close(); + factionInteractionMenu.Close(); + sortText = "Nach Uhrzeit"; + mp.events.call("showMedicTasks", 0, JSON.stringify(initTasks)); + break; + + case 1: //Sortierung nach Metern (aufsteigend) + for (var d = 0; d < tasks.length; d++) { + for (var e = 0; e < tasks.length - 1; e++) { + if (getDistance1(e) > getDistance2(e + 1)) { + var tempTask = tasks[e]; + tasks[e] = tasks[e + 1]; + tasks[e + 1] = tempTask; + mp.gui.chat.push("SWITCH"); + } + } + } + reviveTaskMenuMedic.Close(); + factionInteractionMenu.Close(); + sortText = "Entfernung aufsteigend"; + mp.events.call("showMedicTasks", 0, JSON.stringify(tasks)); + break; + + //case 2: //Sortierung nach Metern (absteigend) + // mp.gui.chat.push("Sorting 2"); + // sortText = "Entfernung absteigend"; + // break; + //case 3: //Sortierung nach Zeit (aufsteigend) + // mp.gui.chat.push("Sorting 3"); + // sortText = "Restzeit aufsteigend"; + // break; + //case 4: //Sortierung nach Zeit (absteigend) + // mp.gui.chat.push("Sorting 4"); + // sortText = "Restzeit absteigend"; + // break; + } + } + } + }); + + function getDistance1(index) { + return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); + } + function getDistance2(index) { + return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); + } + + mp.events.add('render', () => { + if (activeTask) { + rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2); + if (rangeLeft > 1.9) { + ambulanceImagePos = 0.655 - (mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true) / taskRange * 0.35); + mp.game.graphics.drawRect(0.5, 0.945, 0.35, 0.025, 150, 0, 0, 200); + mp.game.graphics.drawText(rangeLeft.toString() + "m", [0.5, 0.93], { + font: 0, + color: [255, 255, 255, 255], + scale: [0.35, 0.35], + outline: true, + centre: true + }); + if (taskRange < rangeLeft) ambulanceImagePos = 0.3; + mp.game.graphics.drawSprite("medicimages", "finish", 0.655, 0.898, 0.04, 0.07, 0, 255, 255, 255, 255); + if (player.isInAnyVehicle(false)) { + mp.game.graphics.drawSprite("medicimages", "ambulance", ambulanceImagePos + 0.01, 0.915, 0.04, 0.07, 0, 255, 255, 255, 255); + } else { + mp.game.graphics.drawSprite("medicimages", "running", ambulanceImagePos + 0.02, 0.915, 0.02, 0.035, 0, 255, 0, 0, 255); + } + } else { + activeTask = false; + activeCheckpoint.destroy(); + } + } + }); +} \ No newline at end of file