From 7b19a83e12050b226aa8e8ec7b817f0b1bb142db Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sat, 11 May 2019 20:59:18 +0200 Subject: [PATCH] Refactored inventory.ts / theoretically improve of performance --- .../Gui/Inventory/inventory.ts | 248 ++++++++++-------- 1 file changed, 133 insertions(+), 115 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/Inventory/inventory.ts b/ReallifeGamemode.Client/Gui/Inventory/inventory.ts index b58082cd..3c7db32f 100644 --- a/ReallifeGamemode.Client/Gui/Inventory/inventory.ts +++ b/ReallifeGamemode.Client/Gui/Inventory/inventory.ts @@ -2,42 +2,47 @@ import InputHelper from '../../inputhelper'; export default function inventory(globalData: GlobalData) { - var show = false; - var showAdmin = false; + var show = false; //ob das Inventar dem Spieler gezeigt wird. + var showAdmin = false; //ob das Inventar eines Spielers dem Admin gezeigt wird const { x: screenX, y: screenY } = mp.game.graphics.getScreenActiveResolution(0, 0); - let rxC = 0.5; - let ryC = 0.4; + let rxC = 0.5; //Breitenpositionierung des Inventars auf Screen-(C)enter + let ryC = 0.4; //Höhenpositionierung des Inventars auf Screen-(C)enter let rWidth = 0.4; let sX = (screenX * 0.1 / 1000); let sY = (screenY * 0.1 / 1000); let eX = sX - 0.1; let eY = sY - 0.1; - let sizeMul = 0.08; - let yMul = 1.8; - var targetPlayerName; - let closePos = [0.7125, 0.17] - let tradeBoxPos = [0.7125, 0.82] - var clickTime; - var itemRadial = false; - var hoverGrid; - var radialSelect = "none"; - var clickedItem; - let aspectRatioFactor = screenX / screenY; - var upRColor = 222; - var downRColor = 222; - var leftRColor = 222; - var rightRColor = 222; - var radialDescription; - var tradePartner = "Keinem"; - var tradePrize = 0; - var tradeConfirm = false; - var isTrading = false; + let aspectRatioFactor = screenX / screenY; //Höhenmultiplikator (damit Quadrate anstatt Rechtecke der einzelnen Slots entstehen) + let sizeMulx = 0.08; //Größenmultiplikator (GUI Skalierung) + let sizeMuly = sizeMulx * aspectRatioFactor; //Größenmultiplikator (GUI Skalierung) + let sizeMulxHalf = sizeMulx / 2; + let sizeMulyHalf = sizeMuly / 2; + var targetPlayerName; //Der Spieler der den Handel anfragt + let closePos = [0.7125, 0.17] //Position des X für Adminansicht + let tradeBoxPos = [0.7125, 0.82] //Center der Handelsbox + var clickTime; //Für Berechnung wie lange der Mausklick-Handler zwischen Aktionen benötigt + var itemRadial = false; //Ob das Item-Radialmenü gezeigt wird + var hoverGrid; //Ob man über einem Gridfeld hovert + var radialSelect = "none"; //Auswahl des Radialmenüs + var clickedItem; //Das angeklickte Item für das Radialmenü + //let aspectRatioFactor = ; //Seitenverhältnis des Bildschirms (Entspricht yMul aufgerundet) + var upRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl + var downRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl + var leftRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl + var rightRColor = 222; //Standard Transparenzen für das Hovern über der Radialauswahl + var radialDescription; //Radialbeschreibung die über dem Mauszeiger angezeigt wird wenn man hovert. + var tradePartner = "Keinem"; //Der Spieler mit dem man Handeln möchte + var tradePrize = 0; //Der Preis welcher dem Handelempfänger angezeigt wird + var tradeConfirm = false; //Ob der Handelspartner den Handel akzeptiert + var isTrading = false; //Bestimmt ob das Handelsfenster unten angezeigt wird var isTradingResult = false; - var dragTradeItem = null; + var dragTradeItem = null; //Ob aktuell ein Item aus dem Handelfenster gezogen wird + var spriteScaleX = rWidth / 8; + var spriteScaleY = rWidth / 8 * aspectRatioFactor; - var inventoryWeight; - var items = [[]]; - var tradeItems = []; + var inventoryWeight; //Das aktuelle Inventargewicht, berechnet aus allen Metainfos des items[[]] Array + var items = [[]]; //Items aus der Datenbank + var tradeItems = []; //Handelsitems aus der aktuellen Handelssession var tradeResultItems = [[]]; var grid = []; @@ -69,16 +74,16 @@ export default function inventory(globalData: GlobalData) { tradeGrid[3] = [0.5835, 0.925] tradeGrid[4] = [0.6655, 0.925] - var mouseLDown = false; - var mouseRDown = false; - var hoverItem; - var dragItem = null; - var oldDragSlot; - var actFreeSlot; - var actFreeTradeSlot; + var mouseLDown = false; //Ob die Linke Maustaste gedrückt wird (while) + var mouseRDown = false; //Ob die Rechte Maustaste gedrückt wird (while) + var hoverItem; //Das Item über welches der Mauszeiger schwebt + var dragItem = null; //Das Item das aktuell gezogen wird + var oldDragSlot; //Ursprungsslot des gezogenen Items + var actFreeSlot; //Ob der aktuelle Hover-Slot während des Item-ziehens frei ist + var actFreeTradeSlot; //Ob der aktuelle TradeInventar-Hover-Slot während des Item-ziehens frei ist var bufferItem = []; - var stackToItem; - var stackToTradeItem; + var stackToItem; //Der Slot zu dem das aktuelle Item gestackt würde, wenn man die Maustaste loslässt + var stackToTradeItem; //Der Handels-Slot zu dem das aktuelle Item gestackt würde, wenn man die Maustaste loslässt mp.events.add("showInventory", (invWeight, itemArr) => { if (show === false) { @@ -104,13 +109,18 @@ export default function inventory(globalData: GlobalData) { } }); + //Zeigt dem Handelsanfragenden das Handelsinventar mp.events.add("openTradeMenu", (tradePartnerName) => { tradePartner = tradePartnerName; isTrading = true; }); + + //Zeigt dem Handelspartner das Fenster zur Annahme oder Verweigerung des Handels mp.events.add("showTradeRequest", () => { show = false; }); + + //Zeigt dem Admin das Inventar eines Spielers mp.events.add("showInventoryToAdmin", (pName, invWeight, itemArr) => { if (showAdmin === false) { targetPlayerName = pName; @@ -123,13 +133,14 @@ export default function inventory(globalData: GlobalData) { } }); + //Falls das Inventar aktuell offen ist und ein neues hinzugefügt wird, wird dieses Live angezeigt. mp.events.add("addItem", (item) => { if (show) { items.push(JSON.parse(item)); } }); - //HANDEL akzeptiert. + //Löscht die Handelsitems beim Handelsanfragenden mp.events.add("clearTradeItems", () => { tradeConfirm = false; tradeItems.splice(0, tradeItems.length); @@ -138,7 +149,7 @@ export default function inventory(globalData: GlobalData) { }); - //HANDEL akzeptiert. + //Zeigt dem Handelspartner die zu handelnden Items unter seinem Inventar an. mp.events.add("showTradeItems", (tradeResultItemArray) => { //for (var i = 0; i < tradeResultItemArray.length; i++) { @@ -146,16 +157,16 @@ export default function inventory(globalData: GlobalData) { //} tradeItems = JSON.parse(tradeResultItemArray); isTrading = true; - }); - //HANDEL Abgebrochen + //Entsperrt beim Handelsanfragenden die Items aus dem Handelsfenster mp.events.add("unlockTradeItems", () => { tradeConfirm = false; tradePartner = "Keinem"; tradePrize = 0; }); + //Falls ein Item administrativ entfernt wird, würde auch dies Live angezeigt. mp.events.add("removeItem", (userItemId, amount) => { if (show) { var arrIndex; @@ -177,10 +188,10 @@ export default function inventory(globalData: GlobalData) { if (show === true) { pos = mp.gui.cursor.position; - mp.game.graphics.set2dLayer(1); - //INVENTARHINTERGRUND - mp.game.graphics.drawRect(rxC, ryC, 0.45, 0.7, 255, 255, 255, 200); //inventar - mp.game.graphics.set2dLayer(2); + mp.game.graphics.set2dLayer(1); //# + mp.game.graphics.drawRect(rxC, ryC, 0.45, 0.7, 255, 255, 255, 200); //INVENTARHINTERGRUND + + mp.game.graphics.set2dLayer(2); //## //INVENTARÜBERSCHRIFT mp.game.graphics.drawText("Inventar ~g~" + inventoryWeight + "/40000g", [rxC, ryC - (rWidth / 1.20)], { @@ -194,11 +205,10 @@ export default function inventory(globalData: GlobalData) { //SLOTS [RECHTECKE] [SLOTZAHLEN] var slots; - var tempSlot; for (slots = 0; slots < grid.length; slots++) { - mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMul, sizeMul * yMul, 112, 128, 144, 254); - mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - (sizeMul / 2) + 0.006, grid[slots][1] - (sizeMul / 2 * yMul)], { + mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMulx, sizeMuly, 112, 128, 144, 254); + mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - sizeMulxHalf + 0.006, grid[slots][1] - (sizeMulxHalf * aspectRatioFactor)], { font: 7, color: [255, 69, 0, 254], scale: [0.3, 0.3], @@ -207,15 +217,15 @@ export default function inventory(globalData: GlobalData) { }); } - mp.game.graphics.set2dLayer(3); + mp.game.graphics.set2dLayer(3); //### var currentItem; //SPRITES + ITEMANZAHL for (currentItem = 0; currentItem < items.length; currentItem++) { if (items[currentItem][4] !== "-1") { - mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); - mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + (sizeMul / 2) - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], { + mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255); + mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + sizeMulxHalf - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], { font: 0, color: [255, 255, 255, 255], scale: [0.25, 0.25], @@ -227,7 +237,7 @@ export default function inventory(globalData: GlobalData) { var hoverItemP; - mp.game.graphics.set2dLayer(4); + mp.game.graphics.set2dLayer(4); //#### //WENN MAUS ÜBER ITEM if (isMouseOverItem(pos[0], pos[1]) && dragItem === null && itemRadial === false) { mp.game.graphics.drawRect(pos[0] / screenX, pos[1] / screenY + 0.055, 0.14, 0.08, 0, 0, 0, 220); @@ -267,30 +277,31 @@ export default function inventory(globalData: GlobalData) { if (isMouseOverFreeSlot(pos[0], pos[1]) || isMouseOverFreeTradeSlot(pos[0], pos[1]) || isItemOverSameItem(pos[0], pos[1]) || isItemOverSameTradeItem(pos[0], pos[1])) { if (dragTradeItem === false) { - mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 100, 255, 100, 255); + mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 100, 255, 100, 255); } else { - mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 100, 255, 100, 255); + mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 100, 255, 100, 255); } } else { if (dragTradeItem === false) { - mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 255, 100, 100, 255); + mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 255, 100, 100, 255); } else { - mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 255, 100, 100, 255); + mp.game.graphics.drawSprite("itemimages", tradeItems[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, spriteScaleX, spriteScaleY, 0, 255, 100, 100, 255); } } } - mp.game.graphics.set2dLayer(5); + mp.game.graphics.set2dLayer(5); //##### if (itemRadial === true) { mp.game.graphics.drawSprite("itemimages", "radialsplit", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 0, 0, 0, 255); mp.game.graphics.drawSprite("itemimages", "radialup", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, upRColor, 222, upRColor); mp.game.graphics.drawSprite("itemimages", "radialdown", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, downRColor, 222, downRColor); //mp.game.graphics.drawSprite("itemimages", "radialleft", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, leftRColor, 222, leftRColor); //mp.game.graphics.drawSprite("itemimages", "radialright", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 222, rightRColor, 222, rightRColor); - mp.game.graphics.set2dLayer(6); + + mp.game.graphics.set2dLayer(6); //###### mp.game.graphics.drawSprite("itemimages", "radialdrop", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255); mp.game.graphics.drawSprite("itemimages", "radialuse", grid[hoverGrid][0], grid[hoverGrid][1], rWidth / aspectRatioFactor, rWidth, 0, 255, 255, 255, 255); } - mp.game.graphics.set2dLayer(7); + mp.game.graphics.set2dLayer(7); //####### if (ifMouseSelectRadial(pos[0], pos[1])) { //mp.game.graphics.drawRect(pos[0] / screenX, pos[1] / screenY - 0.02, 0.08, 0.03, 0, 0, 0, 255); @@ -308,8 +319,8 @@ export default function inventory(globalData: GlobalData) { mp.game.graphics.set2dLayer(2); var tempSlot2; for (slots = 0; slots < tradeGrid.length; slots++) { - mp.game.graphics.drawRect(tradeGrid[slots][0], tradeGrid[slots][1], sizeMul, sizeMul * yMul, 112, 128, 144, 254); - mp.game.graphics.drawText(tempSlot2 = slots + 1, [tradeGrid[slots][0] - (sizeMul / 2) + 0.006, tradeGrid[slots][1] - (sizeMul / 2 * yMul)], { + mp.game.graphics.drawRect(tradeGrid[slots][0], tradeGrid[slots][1], sizeMulx, sizeMuly, 112, 128, 144, 254); + mp.game.graphics.drawText(tempSlot2 = slots + 1, [tradeGrid[slots][0] - sizeMulxHalf + 0.006, tradeGrid[slots][1] - (sizeMulxHalf * aspectRatioFactor)], { font: 7, color: [69, 255, 0, 254], scale: [0.3, 0.3], @@ -324,8 +335,8 @@ export default function inventory(globalData: GlobalData) { if (tradeItems.length !== 0) { for (currentItem = 0; currentItem < tradeItems.length; currentItem++) { if (tradeItems[currentItem][4] !== "-1") { - mp.game.graphics.drawSprite("itemimages", tradeItems[currentItem][0].toLowerCase(), tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); - mp.game.graphics.drawText("(~y~" + tradeItems[currentItem][3] + "~s~)", [tradeGrid[tradeItems[currentItem][4] - 1][0] + (sizeMul / 2) - 0.008, tradeGrid[tradeItems[currentItem][4] - 1][1] + 0.05], { + mp.game.graphics.drawSprite("itemimages", tradeItems[currentItem][0].toLowerCase(), tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255); + mp.game.graphics.drawText("(~y~" + tradeItems[currentItem][3] + "~s~)", [tradeGrid[tradeItems[currentItem][4] - 1][0] + sizeMulxHalf - 0.008, tradeGrid[tradeItems[currentItem][4] - 1][1] + 0.05], { font: 0, color: [255, 255, 255, 255], scale: [0.25, 0.25], @@ -333,7 +344,7 @@ export default function inventory(globalData: GlobalData) { centre: false }); if (tradeConfirm === true) { - mp.game.graphics.drawSprite("itemimages", "lock", tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], rWidth / 8 / 2, rWidth / 5 / 2, 0, 255, 255, 255, 255); + mp.game.graphics.drawSprite("itemimages", "lock", tradeGrid[tradeItems[currentItem][4] - 1][0], tradeGrid[tradeItems[currentItem][4] - 1][1], spriteScaleX / 2, spriteScaleY / 2, 0, 255, 255, 255, 255); } } } @@ -341,7 +352,7 @@ export default function inventory(globalData: GlobalData) { //} else { // if (tradeResultItems.length !== 0) { // for (var currentItem = 0; currentItem < tradeResultItems.length; currentItem++) { - // mp.game.graphics.drawSprite("itemimages", tradeResultItems[currentItem][0].toLowerCase(), tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][0], tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); + // mp.game.graphics.drawSprite("itemimages", tradeResultItems[currentItem][0].toLowerCase(), tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][0], tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255); // mp.game.graphics.drawText("(~y~" + tradeResultItems[currentItem][3] + "~s~)", [tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][0] + (sizeMul / 2) - 0.008, tradeGrid[parseInt(tradeResultItems[currentItem][4] - 1)][1] + 0.05], { // font: 0, // color: [255, 255, 255, 255], @@ -458,8 +469,8 @@ export default function inventory(globalData: GlobalData) { //SLOTS [RECHTECKE] [SLOTZAHLEN] for (slots = 0; slots < grid.length; slots++) { - mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMul, sizeMul * yMul, 112, 128, 144, 254); - mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - (sizeMul / 2) + 0.006, grid[slots][1] - (sizeMul / 2 * yMul)], { + mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMulx, sizeMuly, 112, 128, 144, 254); + mp.game.graphics.drawText(tempSlot = slots + 1, [grid[slots][0] - sizeMulxHalf + 0.006, grid[slots][1] - (sizeMulxHalf * aspectRatioFactor)], { font: 7, color: [255, 69, 0, 254], scale: [0.3, 0.3], @@ -472,8 +483,8 @@ export default function inventory(globalData: GlobalData) { //SPRITES + ITEMANZAHL for (currentItem = 0; currentItem < items.length; currentItem++) { if (items[currentItem][4] !== "-1") { - mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], rWidth / 8, rWidth / 5, 0, 255, 255, 255, 255); - mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + (sizeMul / 2) - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], { + mp.game.graphics.drawSprite("itemimages", items[currentItem][0].toLowerCase(), grid[items[currentItem][4] - 1][0], grid[items[currentItem][4] - 1][1], spriteScaleX, spriteScaleY, 0, 255, 255, 255, 255); + mp.game.graphics.drawText("(~y~" + items[currentItem][3] + "~s~)", [grid[items[currentItem][4] - 1][0] + sizeMulxHalf - 0.008, grid[items[currentItem][4] - 1][1] + 0.05], { font: 0, color: [255, 255, 255, 255], scale: [0.25, 0.25], @@ -530,23 +541,16 @@ export default function inventory(globalData: GlobalData) { function isMouseOverItem(cX, cY) { var x, y, a, b, c, s, invSlot; - + x = cX / screenX; + y = cY / screenY; + if (dragItem === null) { - - x = cX / screenX; - y = cY / screenY; - a; - b; - c; - for (s = 0; s < 20; s++) { a = grid[s][0] - x; b = grid[s][1] - y; c = Math.sqrt(a * a + b * b); - invSlot = (s + 1); - - if (c < sizeMul / 2) { + if (c < sizeMulxHalf) { for (var i = 0; i < items.length; i++) { if (parseInt(items[i][4]) === invSlot) { hoverItem = i; @@ -556,21 +560,13 @@ export default function inventory(globalData: GlobalData) { } } } else { - if (itemRadial === false) { - x = cX / screenX; - y = cY / screenY; - a; - b; - c; - + if (itemRadial === false) { for (s = 0; s < 20; s++) { a = grid[s][0] - x; b = grid[s][1] - y; c = Math.sqrt(a * a + b * b); - invSlot = (s + 1); - - if (c < sizeMul / 2) { + if (c < sizeMulxHalf) { for (i = 0; i < items.length; i++) { if (parseInt(items[i][4]) === invSlot) { hoverGrid = s; @@ -599,7 +595,7 @@ export default function inventory(globalData: GlobalData) { var invSlot = (s + 1); - if (c < sizeMul / 2) { + if (c < sizeMulxHalf) { for (var i = 0; i < tradeItems.length; i++) { if (parseInt(tradeItems[i][4]) === invSlot) { hoverItem = i; @@ -620,7 +616,7 @@ export default function inventory(globalData: GlobalData) { for (var s = 0; s < 20; s++) { var invSlot = (s + 1); - if (x > grid[s][0] - sizeMul / 2 && x < grid[s][0] + sizeMul / 2 && y > grid[s][1] - sizeMul / 2 * aspectRatioFactor && y < grid[s][1] + sizeMul / 2 * aspectRatioFactor) { + if (x > grid[s][0] - sizeMulxHalf && x < grid[s][0] + sizeMulxHalf && y > grid[s][1] - sizeMulxHalf * aspectRatioFactor && y < grid[s][1] + sizeMulxHalf * aspectRatioFactor) { for (var i = 0; i < items.length; i++) { if (parseInt(items[i][4]) === invSlot) { isItemOnSlot++; @@ -644,7 +640,7 @@ export default function inventory(globalData: GlobalData) { for (var s = 0; s < 5; s++) { var invSlot = (s + 1); - if (x > tradeGrid[s][0] - sizeMul / 2 && x < tradeGrid[s][0] + sizeMul / 2 && y > tradeGrid[s][1] - sizeMul / 2 * aspectRatioFactor && y < tradeGrid[s][1] + sizeMul / 2 * aspectRatioFactor) { + if (x > tradeGrid[s][0] - sizeMulxHalf && x < tradeGrid[s][0] + sizeMulxHalf && y > tradeGrid[s][1] - sizeMulxHalf * aspectRatioFactor && y < tradeGrid[s][1] + sizeMulxHalf * aspectRatioFactor) { for (var i = 0; i < tradeItems.length; i++) { if (parseInt(tradeItems[i][4]) === invSlot) { isItemOnSlot++; @@ -668,7 +664,7 @@ export default function inventory(globalData: GlobalData) { for (var s = 0; s < 20; s++) { var invSlot = (s + 1); - if (x > grid[s][0] - sizeMul / 2 && x < grid[s][0] + sizeMul / 2 && y > grid[s][1] - sizeMul / 2 * aspectRatioFactor && y < grid[s][1] + sizeMul / 2 * aspectRatioFactor) { + if (x > grid[s][0] - sizeMulxHalf && x < grid[s][0] + sizeMulxHalf && y > grid[s][1] - sizeMulxHalf * aspectRatioFactor && y < grid[s][1] + sizeMulxHalf * aspectRatioFactor) { for (var i = 0; i < items.length; i++) { if (dragTradeItem === false) { @@ -696,7 +692,7 @@ export default function inventory(globalData: GlobalData) { for (var s = 0; s < 5; s++) { var invSlot = (s + 1); - if (x > tradeGrid[s][0] - sizeMul / 2 && x < tradeGrid[s][0] + sizeMul / 2 && y > tradeGrid[s][1] - sizeMul / 2 * aspectRatioFactor && y < tradeGrid[s][1] + sizeMul / 2 * aspectRatioFactor) { + if (x > tradeGrid[s][0] - sizeMulxHalf && x < tradeGrid[s][0] + sizeMulxHalf && y > tradeGrid[s][1] - sizeMulxHalf * aspectRatioFactor && y < tradeGrid[s][1] + sizeMulxHalf * aspectRatioFactor) { for (var i = 0; i < tradeItems.length; i++) { if (dragTradeItem === false) { @@ -791,20 +787,24 @@ export default function inventory(globalData: GlobalData) { } } - mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, worldPosition, hitEntity) => { - var cX = x / screenX; - var cY = y / screenY; + //Mausklick Events + mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, worldPosition, hitEntity) => { if (show) { //LINKE MAUSTASTE //RUNTER if (upOrDown === "down" && leftOrRight === "left" && mouseLDown === false && mouseRDown === false) { + mouseLDown = true; + + //Wenn Maus über grünen Haken if (isTrading && isMouseOverTradeBox(x, y) && tradePrize > 0) { tradeConfirm = true; mp.events.callRemote('sendTradeItemsToPartner', JSON.stringify(tradeItems), tradePrize, tradePartner); } + + //Wenn Maus über Dollar Zeichen if (isTrading && isMouseOverTradeDollar(x, y)) { var tradeMoney = new InputHelper("Wie viel $ möchtest du für deine Items haben?", globalData); tradeMoney.show(); @@ -817,14 +817,16 @@ export default function inventory(globalData: GlobalData) { tradePrize = amount; }); } - mouseLDown = true; - + + //Wenn Maus über Item if (isMouseOverItem(x, y) && dragItem === null && itemRadial === false) { dragItem = hoverItem; oldDragSlot = items[dragItem][4]; items[dragItem][4] = "-1"; dragTradeItem = false; - } else if (ifMouseSelectRadial(x, y)) { + } + //wenn Maus über Radialmenü + if (ifMouseSelectRadial(x, y)) { switch (radialSelect) { case "up": var dropInput = new InputHelper("Wie viel Items möchtest du wegwerfen?", globalData); @@ -854,7 +856,9 @@ export default function inventory(globalData: GlobalData) { itemRadial = false; break; } - } else if (isMouseOverTradeItem(x, y) && dragItem === null && itemRadial === false && tradeConfirm === false) { + } + //Wenn Maus über Tradeitem + if (isMouseOverTradeItem(x, y) && dragItem === null && itemRadial === false && tradeConfirm === false) { dragItem = hoverItem; oldDragSlot = tradeItems[dragItem][4]; tradeItems[dragItem][4] = "-1"; @@ -869,13 +873,16 @@ export default function inventory(globalData: GlobalData) { if (dragItem !== null) { var newAmount; + + //wenn Maus über freien Slot if (isMouseOverFreeSlot(x, y)) { if (dragTradeItem === false) { items[dragItem][4] = actFreeSlot; } else { items.push([tradeItems[dragItem][0], tradeItems[dragItem][1], tradeItems[dragItem][2], tradeItems[dragItem][3], actFreeSlot.toString(), tradeItems[dragItem][5]]); - tradeItems.splice(dragItem, 1); + tradeItems.splice(dragItem, 1); } + mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; hoverItem = null; @@ -889,6 +896,8 @@ export default function inventory(globalData: GlobalData) { items[stackToItem][3] = newAmount.toString(); tradeItems.splice(dragItem, 1); } + mp.events.callRemote('saveInventory', JSON.stringify(items)); + oldDragSlot = null; dragItem = null; hoverItem = null; } else if (isItemOverSameTradeItem(x, y)) { @@ -901,6 +910,8 @@ export default function inventory(globalData: GlobalData) { tradeItems[stackToTradeItem][3] = newAmount.toString(); tradeItems[dragItem][4] = "-1"; } + mp.events.callRemote('saveInventory', JSON.stringify(items)); + oldDragSlot = null; dragItem = null; hoverItem = null; } else if (isMouseOverFreeTradeSlot(x, y)) { @@ -910,6 +921,7 @@ export default function inventory(globalData: GlobalData) { } else { tradeItems[dragItem][4] = actFreeTradeSlot; } + mp.events.callRemote('saveInventory', JSON.stringify(items)); oldDragSlot = null; dragItem = null; hoverItem = null; @@ -919,6 +931,7 @@ export default function inventory(globalData: GlobalData) { } else { tradeItems[dragItem][4] = oldDragSlot; } + oldDragSlot = null; dragItem = null; hoverItem = null; } @@ -970,6 +983,8 @@ export default function inventory(globalData: GlobalData) { tradeItems.splice(hoverItem, 1); } } + mp.events.callRemote('saveInventory', JSON.stringify(items)); + oldDragSlot = null; dragItem = null; hoverItem = null; } else if (isItemOverSameItem(x, y)) { @@ -983,9 +998,11 @@ export default function inventory(globalData: GlobalData) { tradeItems.splice(hoverItem, 1); } } + mp.events.callRemote('saveInventory', JSON.stringify(items)); bufferItem = null; dragItem = null; hoverItem = null; + oldDragSlot = null; } else if (isItemOverSameTradeItem(x, y)) { tradeItems[stackToTradeItem][3]++; if (dragTradeItem === false) { @@ -997,6 +1014,8 @@ export default function inventory(globalData: GlobalData) { tradeItems[hoverItem][4] = "-1"; } } + mp.events.callRemote('saveInventory', JSON.stringify(items)); + oldDragSlot = null; bufferItem = null; dragItem = null; hoverItem = null; @@ -1012,6 +1031,8 @@ export default function inventory(globalData: GlobalData) { tradeItems[hoverItem][4] = "-1"; } } + mp.events.callRemote('saveInventory', JSON.stringify(items)); + oldDragSlot = null; dragItem = null; hoverItem = null; } else { @@ -1020,6 +1041,7 @@ export default function inventory(globalData: GlobalData) { } else { tradeItems[hoverItem][3]++; } + oldDragSlot = null; bufferItem = null; dragItem = null; hoverItem = null; @@ -1037,6 +1059,13 @@ export default function inventory(globalData: GlobalData) { items[hoverItem][4] = "-1"; inventoryWeight -= parseInt(items[hoverItem][2]) * parseInt(items[hoverItem][3]); mp.events.callRemote('removeItemAsAdmin', "stack", items[hoverItem][5], targetPlayerName); + } else if (isMouseOverX(x, y)) { + mp.gui.chat.activate(true); + mp.gui.cursor.show(false, false); + showAdmin = false; + mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("itemimages"); + inventoryWeight = 0; + items = null; } } @@ -1052,18 +1081,7 @@ export default function inventory(globalData: GlobalData) { } inventoryWeight -= items[hoverItem][2]; } - } - if (upOrDown === "down" && leftOrRight === "left" && mouseLDown === false && mouseRDown === false) { - - if (isMouseOverX(x, y)) { - mp.gui.chat.activate(true); - mp.gui.cursor.show(false, false); - showAdmin = false; - mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("itemimages"); - inventoryWeight = 0; - items = null; - } - } + } } }); } \ No newline at end of file