void Update() { // Select item from hotkey slots if (CrossPlatformInputManager.GetButtonDown("Fire1")) { itemSelected = inventoryGrid.GetHotkeyItem(MousePosToHotkey()); } if (isGridEnabled) { /* Determine which item the mouse is hovering over */ int[] mouseCoords = MouseToTileCoords(); itemMouseHover = null; if (mouseCoords[0] >= 0 && mouseCoords[1] >= 0) { Equipment item = inventoryGrid.ItemAtGridPoint(mouseCoords[0], mouseCoords[1]); if (item) { itemMouseHover = item; } } /* Select item from grid */ if (CrossPlatformInputManager.GetButtonDown("Fire1")) { if (itemMouseHover) { itemSelected = itemMouseHover; } } /* Remove item from hotkey */ if (CrossPlatformInputManager.GetButtonDown("Fire2")) { inventoryGrid.SetHotkeyItem(MousePosToHotkey(), null); } /* Click-and-drag to move items around */ if (CrossPlatformInputManager.GetButtonDown("Fire1") && itemMouseHover) { itemMoving = itemMouseHover; itemMovingDummy = new InventoryGridItem(itemMoving.inventoryGridItem); // Set pixel coords offset (mouse pos - corner of item) Rect corner = tileRects[itemMoving.inventoryGridItem.x, numTilesY - 1 - itemMoving.inventoryGridItem.y]; dummyOffsetPixels.x = Input.mousePosition.x - corner.center.x; dummyOffsetPixels.y = Input.mousePosition.y - corner.center.y; } // Update dummy item's tile coords when user is moving an item around the grid // If not on the grid, set to (-1, -1) if (itemMoving) { int[] tileCoords = MouseToTileCoords_Unconstrained(Input.mousePosition - dummyOffsetPixels); if (tileCoords[0] < 0 || tileCoords[0] > numTilesX - itemMovingDummy.width || tileCoords[1] < 0 || tileCoords[1] > numTilesY - itemMovingDummy.height) { itemMovingDummy.x = -1; itemMovingDummy.y = -1; } else { itemMovingDummy.x = tileCoords[0]; itemMovingDummy.y = tileCoords[1]; } } // Attempt to drop an item off when user let's go after click-and-drag if (CrossPlatformInputManager.GetButtonUp("Fire1")) { if (itemMoving) { // (1) Drop it into a new spot in the grid if it fits bool moved = inventoryGrid.MoveItem(itemMoving, itemMovingDummy.x, itemMovingDummy.y); // (2) If 1 didn't happen, drop it into a hotkey slot if possible if (!moved) { moved = inventoryGrid.SetHotkeyItem(MousePosToHotkey(), itemMoving); } /* * // (3) If 1 and 2 didn't happen, remove the item from the inventory and drop it in the world * if (!moved) { * inventoryGrid.DropItem(itemMoving); * if (itemSelected = itemMoving) * itemSelected = null; * for (int i = 0; i < numHotkeys; i++) * if (inventoryGrid.GetHotkeyItem(i) == itemMoving) * inventoryGrid.SetHotkeyItem(i, null); * } */ } itemMoving = null; itemMovingDummy = null; } } // Double click to equip if (itemSelected && Time.unscaledTime - timeLastClick <= doubleClickMaxDelay && itemLastClick == itemSelected) { inventoryGrid.SetCurrentItem(itemSelected); } timeLastClick = Time.unscaledTime; itemLastClick = itemSelected; }