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