Пример #1
0
    // I don't like this much because i am copying and pasting code...

    // TODO Process Quest Untriggers.

    public void OnPointerClick(PointerEventData eventData)
    {
        int value = Convert.ToInt32(transform.parent.GetComponentInChildren <Text> ().text);

        GameObject          player = transform.parent.GetComponent <PlayerReferenceAndItemContainer> ().Player;
        GameObject          item   = transform.parent.GetComponent <PlayerReferenceAndItemContainer> ().Item;
        SlotObjectContainer slotObjectContainer = transform.parent.GetComponent <PlayerReferenceAndItemContainer> ().SlotObjectContainer;

        Component   comp    = item.GetComponent(typeof(IObjectData));
        IObjectData objData = comp as IObjectData;

        objData.decreaseCount(value);

        if (objData.count() == 0)
        {
            GameObject dropItem = Instantiate(item);
            dropItem.transform.position = player.transform.position;
            dropItem.transform.SetParent(null);
            dropItem.SetActive(true);

            Component   component  = dropItem.GetComponent(typeof(IObjectData));
            IObjectData objectData = component as IObjectData;
            objectData.setCount(value);

            Destroy(slotObjectContainer.gameObject);
            Destroy(item);
        }
        else
        {
            GameObject  dropItem    = Instantiate(item);
            Component   dropComp    = dropItem.GetComponent(typeof(IObjectData));
            IObjectData dropObjData = dropComp as IObjectData;
            if (dropObjData.count() == 1)
            {
                slotObjectContainer.gameObject.GetComponent <Text> ().text = dropObjData.objectName();
            }
            else
            {
                slotObjectContainer.gameObject.GetComponent <Text> ().text = dropObjData.objectName() + " x" + dropObjData.count();
            }
            dropObjData.setCount(value);
            dropItem.transform.position = player.transform.position;
            dropItem.transform.SetParent(null);
            dropItem.SetActive(true);
        }
        UIPlayerInventoryClickHandler.selectCountButtonCreated = false;
        Destroy(transform.parent.gameObject);
    }
Пример #2
0
    public void PopulateContainerWithUIData(GameObject UIData)
    {
        // And also delete empty slots. TODO A different solution.

        inventory.Clear();

        // Get the "Content"
        GameObject Content = UIData.transform.GetChild(0).transform.GetChild(0).gameObject;

        for (int i = 0; i < Content.transform.childCount; ++i)
        {
            SlotObjectContainer slotObjectContainer =
                Content.transform.GetChild(i).GetComponentInChildren <SlotObjectContainer>();

            if (slotObjectContainer != null)
            {
                inventory.Add(Content.transform.GetChild(i).GetComponentInChildren <SlotObjectContainer> ().obj);
            }
        }
    }