示例#1
0
    public void OnClickEvolution(GUIInventorySlot invSlot, GUIInventorySlot.GUIPriceGemButton priceGemButton, YGUISystem.GUIPriceButton button, ItemObject selectedItem)
    {
        if (selectedItem.Item.Evolution < selectedItem.Item.RefItem.maxEvolution)
        {
            if (button.TryToPay())
            {
                invSlot.IconAnimator.SetTrigger("Levelup");
                StartSpinButton(priceGemButton.m_priceButton.GUIImageButton);
                ++selectedItem.Item.Evolution;
                selectedItem.Item.Level = 1;

                switch(selectedItem.Item.RefItem.type)
                {
                case ItemData.Type.Follower:
                    ItemFollowerData itemFollowerData = selectedItem.Item as ItemFollowerData;
                    itemFollowerData.m_follower.EvolutionUp();
                    itemFollowerData.NoApplyOptions(itemFollowerData.m_follower);
                    itemFollowerData.Use(itemFollowerData.m_follower);

                    Const.GetWindowGui(Const.WindowGUIType.EvolutionItemGUI).GetComponent<EvolutionItemGUI>().SetItem(itemFollowerData.m_follower);
                    Const.GetWindowGui(Const.WindowGUIType.EvolutionItemGUI).SetActive(true);
                    break;
                case ItemData.Type.Stat:
                    break;
                case ItemData.Type.Weapon:
                    m_champ.WeaponHolder.EvolutionUp(selectedItem.Item.RefItem.id);
                    selectedItem.Item.NoApplyOptions(m_champ);
                    selectedItem.Item.Use(m_champ);
                    break;
                }

                if (selectedItem.Item.Evolution == selectedItem.Item.RefItem.maxEvolution)
                {
                    priceGemButton.SetPrices(Const.ButtonRole.Nothing, null);
                }

                invSlot.ItemDesc = selectedItem.Item.Description();
                SetButtonRole(Const.ButtonRole.Levelup, invSlot, priceGemButton, selectedItem);

                GPlusPlatform.Instance.AnalyticsTrackEvent("Weapon", "Evolution", selectedItem.Item.RefItem.name + "_Evolution:" + selectedItem.Item.Evolution, 0);
            }
            else
            {
                if (priceGemButton.m_gemButton == button)
                    PopupShop();
            }
        }
    }
    // TODO: use the invUpdate delegate idea to refactor the inventory with GUI synchronisation system
    public GUIInventorySlot(GUIInventorySlot exchangeSlot_, Item.ItemType type_, int index_, Vector2 pos,
                            Func <ItemStack, bool> quickMoveItem_ = null, Action invUpdate_ = null, Func <bool> shouldShow = null)
        : base(new Vector2(), SIZE, Game.guiResourceLoader.GetResource(SLOT_TEXTURE) as Texture, shouldShow)
    {
        SetPosition(pos);

        exchangeSlot  = exchangeSlot_;
        quickMoveItem = quickMoveItem_;
        invUpdate     = invUpdate_;
        index         = index_;
        type          = type_;

        labelChild = new GUILabel();
        labelChild.SetZAsRelative(true);
        labelChild.SetZIndex(LABEL_Z);

        hoverLabel = new GUILabel();
        hoverLabel.Hide();
        hoverLabel.SetZAsRelative(true);
        hoverLabel.SetZIndex(HOVER_LABEL_Z);
        AddChild(hoverLabel);

        AssignItemStack(null);
    }
示例#3
0
    void SetButtonRole(Const.ButtonRole role, GUIInventorySlot invSlot, GUIInventorySlot.GUIPriceGemButton priceGemButton, ItemObject item)
    {
        priceGemButton.RemoveAllListeners();

        switch(role)
        {
        case Const.ButtonRole.Levelup:
            {

                priceGemButton.EnableChecker = ()=>{
                    return item.Item.RefItem.levelup != null && item.Item.Lock == false && item.Item.Level < item.Item.RefItem.maxLevel;
                };

            invSlot.SetListener(() => OnClickLevelupToMax(invSlot, priceGemButton, false, item), () => OnClickLevelupToMax(invSlot, priceGemButton, true, item) );
                priceGemButton.SetPrices(role, item.Item.RefItem);

            priceGemButton.AddListener(() => OnClickLevelup(invSlot, priceGemButton, false, item, true), () => OnClickLevelup(invSlot, priceGemButton, true, item, true) );
            priceGemButton.SetLable(RefData.Instance.RefTexts(MultiLang.ID.LevelUp));
            }
            break;

        case Const.ButtonRole.Unlock:
            {
            priceGemButton.EnableChecker = ()=>{

                return item.Item.RefItem.unlock != null && item.Item.Lock == true;
            };

                priceGemButton.SetPrices(role, item.Item.RefItem);

                priceGemButton.AddListener(() => OnClickUnlock(invSlot, priceGemButton, priceGemButton.m_priceButton, item), () => OnClickUnlock(invSlot, priceGemButton, priceGemButton.m_gemButton, item) );
                priceGemButton.SetLable(RefData.Instance.RefTexts(MultiLang.ID.Unlock));

            }
            break;

        case Const.ButtonRole.Evolution:
            {
            priceGemButton.EnableChecker = ()=>{
                return item.Item.RefItem.evolution != null && item.Item.Level == item.Item.RefItem.maxLevel && item.Item.Evolution < item.Item.RefItem.maxEvolution;
            };

            priceGemButton.SetPrices(role, item.Item.RefItem);

            priceGemButton.AddListener(() => OnClickEvolution(invSlot, priceGemButton, priceGemButton.m_priceButton, item), () => OnClickEvolution(invSlot, priceGemButton, priceGemButton.m_gemButton, item) );
            priceGemButton.SetLable(RefData.Instance.RefTexts(MultiLang.ID.Evolution));
            }
            break;

        default:
            {
            }
            break;
        }
    }
示例#4
0
 IEnumerator DelayClickLevelUp(GUIInventorySlot invSlot, GUIInventorySlot.GUIPriceGemButton priceGemButton, bool gem, ItemObject selectedItem)
 {
     while(OnClickLevelup(invSlot, priceGemButton, gem, selectedItem, false) == true)
         yield return new WaitForSeconds (0.2f);
 }
示例#5
0
    public void OnClickUnlock(GUIInventorySlot invSlot, GUIInventorySlot.GUIPriceGemButton priceGemButton, YGUISystem.GUIPriceButton button, ItemObject selectedItem)
    {
        if (selectedItem.Item.Lock == true)
        {
            if (button.TryToPay() == true)
            {
                invSlot.IconAnimator.SetTrigger("Levelup");

                selectedItem.Item.Lock = false;
                selectedItem.Item.Level = 1;

                invSlot.ItemDesc = selectedItem.Item.Description();

                SetButtonRole(Const.ButtonRole.Levelup, invSlot, priceGemButton, selectedItem);
                switch(selectedItem.Item.RefItem.type)
                {
                case ItemData.Type.Follower:
                    selectedItem.Item.Equip(m_champ);
                    break;
                case ItemData.Type.Stat:
                    selectedItem.Item.Equip(m_champ);
                    break;
                case ItemData.Type.Weapon:
                    selectedItem.Item.Equip(m_champ);
                    break;
                }
            }
            else
            {
                if (priceGemButton.m_gemButton == button)
                    PopupShop();
            }
        }
    }
示例#6
0
 public void OnClickLevelupToMax(GUIInventorySlot invSlot, GUIInventorySlot.GUIPriceGemButton priceGemButton, bool gem, ItemObject selectedItem)
 {
     invSlot.MaxGemButton.Button.gameObject.SetActive(false);
     invSlot.MaxPriceButton.Button.gameObject.SetActive(false);
     StartCoroutine(DelayClickLevelUp(invSlot, priceGemButton, gem, selectedItem));
 }
示例#7
0
    public bool OnClickLevelup(GUIInventorySlot invSlot, GUIInventorySlot.GUIPriceGemButton priceGemButton, bool gem, ItemObject selectedItem, bool visableMaxButton)
    {
        if (m_champ == null)
            return false;

        if (selectedItem.Item.Level == selectedItem.Item.RefItem.maxLevel)
            return false;

        YGUISystem.GUIPriceButton button = gem == true ? priceGemButton.m_gemButton : priceGemButton.m_priceButton;

        if (button.TryToPay())
        {
            invSlot.IconAnimator.SetTrigger("Levelup");
            StartSpinButton(priceGemButton.m_priceButton.GUIImageButton);
            ++selectedItem.Item.Level;

            if (selectedItem.Item.RefItem.type == ItemData.Type.Weapon)
            {
                m_champ.WeaponHolder.LevelUp(selectedItem.Item.RefItem.id);
                selectedItem.Item.Use(m_champ);
            }
            else if (selectedItem.Item.RefItem.type == ItemData.Type.Follower)
            {
                ItemFollowerData itemFollowerData = selectedItem.Item as ItemFollowerData;
                itemFollowerData.m_follower.LevelUp();
                itemFollowerData.Use(itemFollowerData.m_follower);
            }
            else if (selectedItem.Item.RefItem.type == ItemData.Type.Stat
                     || selectedItem.Item.RefItem.type == ItemData.Type.WeaponParts)
            {
                selectedItem.Item.Use(m_champ);
            }

            if (selectedItem.Item.Level == selectedItem.Item.RefItem.maxLevel)
            {
                priceGemButton.SetPrices(Const.ButtonRole.Nothing, null);
                SetButtonRole(Const.ButtonRole.Evolution, invSlot, priceGemButton, selectedItem);
            }

            invSlot.ItemDesc = selectedItem.Item.Description();

            if (visableMaxButton == true)
            {
                invSlot.MaxGemButton.Lable.Text.text = RefData.Instance.RefTexts(MultiLang.ID.KeepLevelup);
                invSlot.MaxPriceButton.Lable.Text.text = RefData.Instance.RefTexts(MultiLang.ID.KeepLevelup);
                if (gem == true)
                    invSlot.MaxGemButton.Button.gameObject.SetActive(Const.CheckAvailableItem(selectedItem.Item.RefItem.levelup.else_conds, Const.GetItemLevelupWorth(selectedItem.Item.Level, selectedItem.Item.RefItem.levelup)));
                else
                    invSlot.MaxPriceButton.Button.gameObject.SetActive(Const.CheckAvailableItem(selectedItem.Item.RefItem.levelup.conds, Const.GetItemLevelupWorth(selectedItem.Item.Level, selectedItem.Item.RefItem.levelup)));
            }

            GPlusPlatform.Instance.AnalyticsTrackEvent("Weapon", "Levelup", selectedItem.Item.RefItem.name + "_Lv:" + selectedItem.Item.Level, 0);
            return true;
        }
        else
        {
            if (priceGemButton.m_gemButton == button)
                PopupShop();
        }

        if (gem == true)
            invSlot.MaxGemButton.Button.gameObject.SetActive(false);
        else
            invSlot.MaxPriceButton.Button.gameObject.SetActive(false);

        return false;
    }