From 7361289dc9b4c092ec4b2a8a786e719b3d3eb745 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sat, 8 Dec 2018 23:00:34 +0100 Subject: [PATCH] Finish Inventory-Frontend --- Client/Gui/Inventory/inventory.js | 129 ++++++++++++++++-------------- 1 file changed, 71 insertions(+), 58 deletions(-) diff --git a/Client/Gui/Inventory/inventory.js b/Client/Gui/Inventory/inventory.js index 9cbe06ff..cd5edc23 100644 --- a/Client/Gui/Inventory/inventory.js +++ b/Client/Gui/Inventory/inventory.js @@ -44,17 +44,7 @@ var dragItem = null; var oldDragSlot; var actFreeSlot; var bufferItem = []; - -var slots = [20]; - -for (var s = 1; s <= slots.length; s++) { - for (var slY = 0.35; slY <= 0.8; slY += 0.15) { - for (var slX = 0.3775; slX <= 0.6655; slX += 0.082) { - items[s] = [ slX, slY ]; - } - } -} - +var stackToItem; mp.events.add("showInventory", (invWeight, itemArr) => { if (show === false) { @@ -83,6 +73,13 @@ mp.events.add("render", () => { // outline: true, //}); + //mp.game.graphics.drawText("~r~drag: " + dragItem + "~s~... ~b~hover:" + hoverItem + "~y~....FREESLOT: " + isMouseOverFreeSlot(pos[0], pos[1]) + "..." + isItemOverSameItem(pos[0], pos[1]), [0.5, 0.02], { + // font: 0, + // color: [255, 255, 255, 185], + // scale: [0.3, 0.3], + // outline: true, + //}); + mp.game.graphics.set2dLayer(1); //INVENTARHINTERGRUND mp.game.graphics.drawRect(rxC, ryC, 0.45, 0.7, 255, 255, 255, 200); @@ -98,14 +95,14 @@ mp.events.add("render", () => { //SLOTS [RECHTECKE] [SLOTZAHLEN] var tempSlot; - for (var slots = 0; slots < grid.length; slots++) { - mp.game.graphics.drawRect(grid[slots][0], grid[slots][1], sizeMul, sizeMul * yMul, 112, 128, 144, 254); + for (var 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)], { font: 7, color: [255, 69, 0, 254], scale: [0.3, 0.3], outline: true, - }); + }); } mp.game.graphics.set2dLayer(3); @@ -155,8 +152,8 @@ mp.events.add("render", () => { } //WENN MOUSE DOWN - if (mouseLDown && dragItem !== null || mouseRDown && dragItem !== null ) { - if (isMouseOverFreeSlot(pos[0], pos[1])) { + if (mouseLDown && dragItem !== null || mouseRDown && dragItem !== null) { + if (isMouseOverFreeSlot(pos[0], pos[1]) || isItemOverSameItem(pos[0], pos[1])) { mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 100, 255, 100, 255); } else { mp.game.graphics.drawSprite("itemimages", items[dragItem][0].toLowerCase(), pos[0] / screenX, pos[1] / screenY, rWidth / 8, rWidth / 5, 0, 255, 100, 100, 255); @@ -168,24 +165,27 @@ mp.events.add("render", () => { function isMouseOverItem(cX, cY) { - var x = cX / screenX; - var y = cY / screenY; - var a; - var b; - var c; + if (dragItem === null) { - for (var s = 0; s < 20; s++) { - a = grid[s][0] - x; - b = grid[s][1] - y; - c = Math.sqrt(a * a + b * b); + var x = cX / screenX; + var y = cY / screenY; + var a; + var b; + var c; - var invSlot = (s + 1); + for (var s = 0; s < 20; s++) { + a = grid[s][0] - x; + b = grid[s][1] - y; + c = Math.sqrt(a * a + b * b); - if (c < sizeMul / 2) { - for (i = 0; i < items.length; i++) { - if (parseInt(items[i][4]) === invSlot) { - hoverItem = i; - return true; + var invSlot = (s + 1); + + if (c < sizeMul / 2) { + for (i = 0; i < items.length; i++) { + if (parseInt(items[i][4]) === invSlot) { + hoverItem = i; + return true; + } } } } @@ -223,31 +223,31 @@ function isMouseOverFreeSlot(cX2, cY2) { } } -function isMouseOverSameItemType(cX2, cY2) { +function isItemOverSameItem(cX2, cY2) { - var x = cX2 / screenX; - var y = cY2 / screenY; - var a; - var b; - var c; + if (dragItem !== null) { - for (var s = 0; s < 20; s++) { - a = grid[s][0] - x; - b = grid[s][1] - y; - c = Math.sqrt(a * a + b * b); + var x = cX2 / screenX; + var y = cY2 / screenY; + var a; + var b; + var c; - var invSlot = (s + 1); + for (var s = 0; s < 20; s++) { + a = grid[s][0] - x; + b = grid[s][1] - y; + c = Math.sqrt(a * a + b * b); - if (c < sizeMul / 2) { - for (i = 0; i < items.length; i++) { - if (parseInt(items[i][4]) === invSlot) { - isItemOnSlot++; + var invSlot = (s + 1); + + if (c < sizeMul / 2) { + for (i = 0; i < items.length; i++) { + if (items[dragItem][0] === items[i][0] && parseInt(items[i][4]) === invSlot) { + stackToItem = i; + return true; + } } } - if (isItemOnSlot === 0) { - actFreeSlot = s + 1; - return true; - } } } } @@ -260,7 +260,7 @@ mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, world if (show) { //LINKE MAUSTASTE //RUNTER - if (upOrDown === "down" && leftOrRight === "left" && mouseLDown === false) { + if (upOrDown === "down" && leftOrRight === "left" && mouseLDown === false && mouseRDown === false) { mouseLDown = true; @@ -282,6 +282,12 @@ mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, world oldDragSlot = null; dragItem = null; hoverItem = null; + } else if (isItemOverSameItem(x, y)) { + var newAmount = parseInt(items[stackToItem][3]) + parseInt(items[dragItem][3]); + items[stackToItem][3] = newAmount.toString(); + items.splice(dragItem, 1); + dragItem = null; + hoverItem = null; } else { items[dragItem][4] = oldDragSlot; dragItem = null; @@ -292,14 +298,15 @@ mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, world //RECHTE MAUSTASTE //RUNTER - if (upOrDown === "down" && leftOrRight === "right" && mouseRDown === false) { + if (upOrDown === "down" && leftOrRight === "right" && mouseLDown === false && mouseRDown === false) { mouseRDown = true; if (isMouseOverItem(x, y) && dragItem === null) { - dragItem = hoverItem; + dragItem = hoverItem; + oldDragSlot = items[hoverItem][4]; bufferItem = [items[hoverItem][0], items[hoverItem][1], items[hoverItem][2], items[hoverItem][3], items[hoverItem][4]] - items[hoverItem][3]--; + items[hoverItem][3]--; } } @@ -310,15 +317,21 @@ mp.events.add('click', (x, y, upOrDown, leftOrRight, relativeX, relativeY, world if (dragItem !== null) { if (isMouseOverFreeSlot(x, y)) { + items.push([items[dragItem][0], items[dragItem][1], items[dragItem][2], "1", actFreeSlot.toString()]); - - if (items[hoverItem][3] === "0") { - items.splice(items.indexOf(items[hoverItem]), 1); + if (items[hoverItem][3] === 0) { + items.splice(hoverItem, 1); } dragItem = null; hoverItem = null; + } else if (isItemOverSameItem(x, y)) { + items[stackToItem][3]++; + items.splice(hoverItem, 1); + bufferItem = null; + dragItem = null; + hoverItem = null; } else { - items.push(bufferItem); + items[hoverItem][3]++; bufferItem = null; dragItem = null; hoverItem = null;