/// <summary> /// Raises the item click event. /// </summary> /// <param name="item">Item.</param> public void OnItemUse(GameObject item) { if (item != null) { StackItem stackItem = item.GetComponent <StackItem>(); if (stackItem != null) { StackGroup sourceGroup = Gets.GetComponentInParent <StackGroup>(item.transform); if (sourceGroup != null && (sourceGroup == firstGroup || sourceGroup == secondGroup)) { StackGroup destinationGroup = sourceGroup == firstGroup ? secondGroup : firstGroup; // Try to place item into free space of specified stack group if (destinationGroup.AddItem(stackItem, stackItem.GetStack()) <= 0) { // If group have no free space for item // Get similar items in that group List <StackItem> similarItems = destinationGroup.GetSimilarStackItems(stackItem); if (similarItems.Count > 0) { // Try to replace with first similar item destinationGroup.ReplaceItems(similarItems[0], stackItem, sourceGroup); } } } } } }
/// <summary> /// Update this instance. /// </summary> void Update() { // On click if (Input.GetMouseButtonDown(0) == true) { PointerEventData pointerEventData = new PointerEventData(EventSystem.current); pointerEventData.position = Input.mousePosition; List <RaycastResult> results = new List <RaycastResult>(); EventSystem.current.RaycastAll(pointerEventData, results); // If clicked not on UI if (results.Count <= 0) { // Raycast to colliders2d RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Camera.main.transform.forward); if (hit.collider != null) { DummyItemPickUp dummyItemPickUp = hit.collider.gameObject.GetComponent <DummyItemPickUp>(); if (dummyItemPickUp != null) { // Hitted on DummyItemPickUp item // Get stack item from DummyItemPickUp item StackItem stackItem = dummyItemPickUp.PickUp(inventoryStackGroup.GetAllowedSpace(dummyItemPickUp.itemPrefab)); if (stackItem != null) { // Try to place item into inventory dummyItemPickUp.stack -= inventoryStackGroup.AddItem(stackItem, stackItem.GetStack()); // Show item price if vendor is active priceGroup.ShowPrices(vendor.activeSelf); } } } } } }
public void SetInv() { print("SetInv() =========="); if (Inventory != null) { ClearInv(); keys = Inventory.Keys.ToArray(); values = Inventory.Values.ToArray(); for (int i = 0; i < keys.Length; i++) { int stack = 0; stack = values[i]; for (int j = 0; j < stack; j++) { GameObject instance = Instantiate((GameObject)Resources.Load("Items/" + keys[i])); StackItem stackItem = instance.GetComponentInChildren <StackItem>(); stackGroup.AddItem(instance.GetComponent <StackItem>(), 1); } print(i + " : " + keys[i] + " , " + values[i] + " ," + stack); } } }
/// <summary> /// Raises the item click event. /// </summary> /// <param name="item">Item.</param> public void OnItemClick(GameObject item) { if (item != null) { StackItem stackItem = item.GetComponent <StackItem>(); if (stackItem != null) { // Try to lace item into free space of specified stack group if (targetStackGroup.AddItem(stackItem, stackItem.GetStack()) <= 0) { // If group have no free space for item // Get similar items in that group List <StackItem> similarItems = targetStackGroup.GetSimilarStackItems(stackItem); if (similarItems.Count > 0) { // Try to replace with first similar item targetStackGroup.ReplaceItems(similarItems[0], stackItem, myStackGroup); } } } } }