/// <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);
                     }
                 }
             }
         }
     }
 }
예제 #3
0
 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);
         }
     }
 }
예제 #4
0
 /// <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);
                 }
             }
         }
     }
 }