Exemplo n.º 1
0
    // 아이템을 살 때는 빈 곳 부터 채우기
    // 아이템 살 때 발생하는 이벤트
    // 아이템을 살 때, 동시에 캐릭터 스텟을 가져와ㅅ 캐릭터 스텟을 올려준다.
    public void OnDropItemBuyEvent(Item draggedItem)
    {
        if (PlayerItems.Count == 6)
        {
            Debug.Log("Full Inventory");
            return;
        }

        if (Managers.Game.Player.GetComponent <CharacterStat>().Gold < draggedItem.GetComponent <ItemStat>().Price)
        {
            Debug.Log("lack of Money");
            return;
        }

        Managers.Game.Player.GetComponent <CharacterStat>().Gold -= draggedItem.GetComponent <ItemStat>().Price;
        Item newItem = Managers.Resource.Instantiate($"Prefabs/Item/{draggedItem.name}").GetComponent <Item>();

        foreach (Transform child in transform.GetComponentInChildren <Transform>())
        {
            if (child.childCount == 0)
            {
                newItem.transform.SetParent(child);
                break;
            }

            else
            {
                continue;
            }
        }

        RectTransform rectTransform = newItem.GetComponent <RectTransform>();

        rectTransform.localPosition = Vector2.zero;
        rectTransform.localScale    = Vector3.one;

        PlayerItems.Add(newItem);

        // 아이템 장착 후 캐릭터 스텟 수정
        {
            if (Managers.Game.Player == null)
            {
                return;
            }

            CharacterStat characterStat = Managers.Game.Player.GetComponent <PlayerController>().Stat;
            // newItem은 아직 Start가 실행되지 않기 때문에, draggedItem으로 접근해야한다.
            ItemStat itemStat = draggedItem.ItemStat;

            characterStat.ItemEquipment(itemStat);
        }
    }