Ejemplo n.º 1
0
    // private Dictionary<Button, UnityAction> callbacks = new Dictionary<Button, UnityAction>();

    public override void OnOpen(params object[] args)
    {
        int numArgs = args.Length;

        if (numArgs == 1 || numArgs % 2 == 0)
        {
            throw new ArgumentException("Invalid number of arguments");
        }

        GetComponent <RectTransform>().localPosition = (Vector3)args[0];

        RectTransform listTransform = list.GetComponent <RectTransform>();

        Button newListItem         = listTransform.GetChild(0).GetComponent <Button>();
        int    numExistedListItems = listTransform.childCount;

        // callbacks.Clear();

        int index = 0;

        for (int i = 1; i < args.Length; i += 2)
        {
            string      label    = (string)args[i];
            UnityAction callback = (UnityAction)args[i + 1];

            index = i / 2;

            Button listItem;

            if (index < numExistedListItems)
            {
                listItem = listTransform.GetChild(index).GetComponent <Button>();
            }
            else
            {
                listItem = Instantiate(newListItem, listTransform);
            }

            listItem.gameObject.SetActive(true);

            Transform listItemTransform = listItem.transform;
            listItemTransform.GetChild(0).GetComponent <Text>().text = label;

            listItem.onClick.RemoveAllListeners();
            listItem.onClick.AddListener(callback);
            listItem.onClick.AddListener(Close);

            // callbacks.Add(listItem, callback);
        }

        for (int i = index; i < numExistedListItems; i++)
        {
            listTransform.GetChild(i).gameObject.SetActive(false);
        }

        list.Refresh();
        boxCollider.Refresh();
    }
Ejemplo n.º 2
0
    private void UpdateHand(List <Card> hand)
    {
        Transform listTransform = cardList.transform;

        uiCards.Clear();

        int numCards            = hand.Count;
        int numExistedListItems = listTransform.childCount;

        for (int i = 0; i < Math.Max(numExistedListItems, numCards); i++)
        {
            if (i < numCards)
            {
                Card card = hand[i];

                UICard uiCard;

                if (i < numExistedListItems)
                {
                    uiCard = listTransform.GetChild(i).GetComponent <UICard>();
                }
                else
                {
                    uiCard = Instantiate(ResourceUtility.GetPrefab <UICard>("Card"), listTransform);
                }

                uiCards.Add(card, uiCard);

                UpdateCard(uiCard, card);
            }
            else
            {
                listTransform.GetChild(i).gameObject.SetActive(false);
            }
        }

        cardList.Refresh();
    }