public void RemoveItem(InvItemShell itemSlot) { heldItems.Remove(itemSlot); for (int i = 0; i < itemSlot.item.itemSize.y; i++) //through item Y { for (int j = 0; j < itemSlot.item.itemSize.x; j++) //through item X { grid[(int)itemSlot.startPosition.x + j, (int)itemSlot.startPosition.y + i] = 0; //clean old pos } } }
public bool AddItemInOpenSpace(GameObject newItemPrefab) { Item newItem = newItemPrefab.GetComponent <ItemObj>().thisItem; int contX = (int)newItem.itemSize.x; int contY = (int)newItem.itemSize.y; for (int i = 0; i < maxGridX; i++) { for (int j = 0; j < maxGridY; j++) { if (inventoryPositions.Count != (contX * contY)) // if false, the item fits { //for each x,y position (i,j), test if item fits for (int sizeY = 0; sizeY < contY; sizeY++) // item size in Y { for (int sizeX = 0; sizeX < contX; sizeX++) //item size in X { if ((i + sizeX) < maxGridX && (j + sizeY) < maxGridY && grid[i + sizeX, j + sizeY] != 1) //inside of index { Vector2 pos; pos.x = i + sizeX; pos.y = j + sizeY; inventoryPositions.Add(pos); } else { sizeX = contX; sizeY = contY; inventoryPositions.Clear(); } } } } else { break; } } } if (inventoryPositions.Count == (contX * contY)) // If the item's in the inventory { InvItemShell myInvItem = Instantiate(slotPrefab); myInvItem.startPosition = new Vector2(inventoryPositions[0].x, inventoryPositions[0].y); //1st position //myInvItem.startPosition = inventoryPositions[0]; myInvItem.item = newItem; myInvItem.icon.sprite = newItem.itemIcon; myInvItem.GetComponent <RectTransform>().anchoredPosition = Vector2.zero; myInvItem.GetComponent <RectTransform>().anchorMax = new Vector2(0f, 1f); myInvItem.GetComponent <RectTransform>().anchorMin = new Vector2(0f, 1f); myInvItem.transform.SetParent(this.GetComponent <RectTransform>(), false); myInvItem.gameObject.transform.localScale = new Vector3(1f, 1f, 1f); myInvItem.GetComponent <RectTransform>().anchoredPosition = new Vector2(myInvItem.startPosition.x * cellSize.x, -myInvItem.startPosition.y * cellSize.y); heldItems.Add(myInvItem); for (int k = 0; k < inventoryPositions.Count; k++) { int posToAddX = (int)inventoryPositions[k].x; int posToAddY = (int)inventoryPositions[k].y; grid[posToAddX, posToAddY] = 1; } inventoryPositions.Clear(); theInventory.AddItem(newItem); return(true); } return(false); }