예제 #1
0
    public void PickupOrDropItemFromTrader(TraderPopupMessage _input)
    {
        int charIdx = (int)_input.traderIdx;
        int resIdx  = (int)_input.resourceIdx;

        if (_input.pickupOrDrop == "pickup")
        {
            if (m_playerCarrying.Count < 4)
            {
                if (m_inventory[charIdx][resIdx].amount >= 1.0f)
                {
                    m_playerCarrying.Add(resIdx);
                    m_inventory[charIdx][resIdx].amount--;

                    m_traderPopup.GetComponent <AudioSource>().clip = m_traderPopup.m_pickupItem;
                    m_traderPopup.GetComponent <AudioSource>().Play();
                }
            }
        }
        else
        {
            if (m_playerCarrying.Count > 0)
            {
                for (int idxItem = 0; idxItem < m_playerCarrying.Count; idxItem++)
                {
                    if (m_playerCarrying[idxItem] == resIdx)
                    {
                        if (m_director.m_needs[charIdx].Count > 0 && m_director.m_needs[charIdx][0].idx == resIdx)
                        {
                            m_director.DropNeed(charIdx, idxItem);
                        }
                        m_inventory[charIdx][resIdx].amount++;
                        m_playerCarrying.RemoveAt(idxItem);
                        m_traderPopup.GetComponent <AudioSource>().clip = m_traderPopup.m_dropItem;
                        m_traderPopup.GetComponent <AudioSource>().Play();
                        return;
                    }
                }
            }
        }
    }
예제 #2
0
    public void OnPointerClick(PointerEventData eventData)
    {
        TraderPopupMessage message = new TraderPopupMessage();

        message.resourceIdx = m_resourceIdx;
        message.traderIdx   = m_traderPopup.m_currIdx;

        if (eventData.button == PointerEventData.InputButton.Left)
        {
            message.pickupOrDrop = "pickup";
        }
        else if (eventData.button == PointerEventData.InputButton.Right)
        {
            message.pickupOrDrop = "drop";
        }
        else
        {
            return;
        }

        m_brain.SendMessage("PickupOrDropItemFromTrader", message);
    }