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(); } } }
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; } }
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; }