예제 #1
0
    protected void RefreshButton(ShopItemListItem itm, CharacterAccessories accessory, string compoundName)
    {
        if (accessory.cost > PlayerData.instance.coins)
        {
            itm.buyButton.interactable = false;
            itm.pricetext.color        = Color.red;
        }
        else
        {
            itm.pricetext.color = Color.black;
        }

        if (accessory.premiumCost > PlayerData.instance.premium)
        {
            itm.buyButton.interactable = false;
            itm.premiumText.color      = Color.red;
        }
        else
        {
            itm.premiumText.color = Color.black;
        }

        if (PlayerData.instance.characterAccessories.Contains(compoundName))
        {
            itm.buyButton.interactable = false;
            itm.buyButton.image.sprite = itm.disabledButtonSprite;
            itm.buyButton.transform.GetChild(0).GetComponent <UnityEngine.UI.Text>().text = "Owned";
        }
    }
예제 #2
0
    public override void Populate()
    {
        m_RefreshCallback = null;

        foreach (Transform t in listRoot)
        {
            Destroy(t.gameObject);
        }

        foreach (KeyValuePair <string, Character> pair in CharacterDatabase.dictionary)
        {
            Character c = pair.Value;
            if (c != null && c.accessories != null && c.accessories.Length > 0)
            {
                GameObject header = Instantiate(headerPrefab);
                header.transform.SetParent(listRoot, false);
                ShopItemListItem itmHeader = header.GetComponent <ShopItemListItem>();
                itmHeader.nameText.text = c.characterName;

                for (int i = 0; i < c.accessories.Length; ++i)
                {
                    CharacterAccessories accessory = c.accessories[i];
                    GameObject           newEntry  = Instantiate(prefabItem);
                    newEntry.transform.SetParent(listRoot, false);

                    ShopItemListItem itm = newEntry.GetComponent <ShopItemListItem>();

                    string compoundName = c.characterName + ":" + accessory.accessoryName;

                    itm.nameText.text          = accessory.accessoryName;
                    itm.pricetext.text         = accessory.cost.ToString();
                    itm.icon.sprite            = accessory.accessoryIcon;
                    itm.buyButton.image.sprite = itm.buyButtonSprite;

                    if (accessory.premiumCost > 0)
                    {
                        itm.premiumText.transform.parent.gameObject.SetActive(true);
                        itm.premiumText.text = accessory.premiumCost.ToString();
                    }
                    else
                    {
                        itm.premiumText.transform.parent.gameObject.SetActive(false);
                    }

                    itm.buyButton.onClick.AddListener(delegate() { Buy(compoundName, accessory.cost, accessory.premiumCost); });

                    m_RefreshCallback += delegate() { RefreshButton(itm, accessory, compoundName); };
                    RefreshButton(itm, accessory, compoundName);
                }
            }
        }
    }
    void LoadedAccessory(AsyncOperationHandle <GameObject> op, int characterIndex, int accessoryIndex)
    {
        Character c = m_CharacterList[characterIndex];

        if (op.Result == null || !(op.Result is GameObject))
        {
            Debug.LogWarning(string.Format("Unable to load shop accessory list {0}.", prefabItem.Asset.name));
        }
        else
        {
            CharacterAccessories accessory = c.accessories[accessoryIndex];

            GameObject newEntry = op.Result;
            newEntry.transform.SetParent(listRoot, false);

            ShopItemListItem itm = newEntry.GetComponent <ShopItemListItem>();

            string compoundName = c.characterName + ":" + accessory.accessoryName;

            itm.nameText.text          = accessory.accessoryName;
            itm.pricetext.text         = accessory.cost.ToString();
            itm.icon.sprite            = accessory.accessoryIcon;
            itm.buyButton.image.sprite = itm.buyButtonSprite;

            if (accessory.premiumCost > 0)
            {
                itm.premiumText.transform.parent.gameObject.SetActive(true);
                itm.premiumText.text = accessory.premiumCost.ToString();
            }
            else
            {
                itm.premiumText.transform.parent.gameObject.SetActive(false);
            }

            itm.buyButton.onClick.AddListener(delegate()
            {
                Buy(compoundName, accessory.cost, accessory.premiumCost);
            });

            m_RefreshCallback += delegate() { RefreshButton(itm, accessory, compoundName); };
            RefreshButton(itm, accessory, compoundName);
        }

        accessoryIndex++;

        if (accessoryIndex == c.accessories.Length)
        {    //we finish the current character accessory, load the next character
            characterIndex++;
            if (characterIndex < m_CharacterList.Count)
            {
                headerPrefab.InstantiateAsync().Completed += (innerOp) =>
                {
                    LoadedCharacter(innerOp, characterIndex);
                };
            }
        }
        else
        {
            prefabItem.InstantiateAsync().Completed += (innerOp) =>
            {
                LoadedAccessory(innerOp, characterIndex, accessoryIndex);
            };
        }
    }