local UIStratagemInfo = UIViewClass() local resonance_info = require 'Proto/resonance_info_pb' function UIStratagemInfo:OnOpened(context) self:RegistSystemEvent(EventID.UI_Stratagem_Active, self.OnStratagemActive) self:RegistSystemEvent(EventID.BagItem_Update, self.RefreshCost) self:RegistSystemEvent(EventID.UI_ResonanceChange_Refresh, self.RefreshResonanceLv) self:RefreshResonanceLv() end function UIStratagemInfo:RefreshResonanceLv() if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.Resonance) then UIUtils.SetActive(self.btn_Resonance, true) else UIUtils.SetActive(self.btn_Resonance, false) end UIUtils.SetLabel(self.txt_ResonanceLv, string.FormatByIdsId(Const_IDS["IDS_Resonance_Level"], MDL.FormationResonance.GetSubResonanceLv(resonance_info.Stratagem_Resonance))) end function UIStratagemInfo:OnStratagemActive() self:InitTalentInfo(self.showData) end function UIStratagemInfo:ShowSkillInfo(data) UIUtils.SetImageByAssetBundle(self.sprite_Skill, data.SkillIcon) UIUtils.SetLabelText(self.txt_SkillName, Const_IDS[data.StratagemName]) UIUtils.SetLabelText(self.txt_SkillDesc, Const_IDS[data.SkillDesc]) UIUtils.SetLabelText(self.txt_PassiveSkill, Const_IDS[data.SkillType]) UnityEngine.UI.LayoutRebuilder.ForceRebuildLayoutImmediate(self.scroll_StratagemInfoContent) end function UIStratagemInfo:ChangeStratagem(data) self:InitTalentInfo(data) UIUtils.SetLabelText(self.txt_TreasureDesc, Const_IDS[data.StratagemDes]) self.lab_StratagemName.text = UTL.Color.FormatQualityText(UIUtils.GetLocalizedTxt(Const_IDS[data.StratagemName]), data.StratagemQuality) self.txt_TreasureTalent.text = data.StratagemTalent self:InitAttr(data.ID) self:ShowSkillInfo(data) local itemId = data.Item_Table[1].ItemID local num = data.Item_Table[1].ItemNum UTL.Item.SetItemCell(self.item, itemId, self:GetItemStr(itemId, num)) self.btn_Active:SetRedPoint(not self.itemNotEnough) self.showData = data end function UIStratagemInfo:InitAttr(id) local attrDict = CTL.Stratagem.GetAttr(id) local index = 1 for k, v in pairs(attrDict) do if self.group_AttrList[i] == nil then self:InstantiateCollection(self.group_AttrList, self.group_AttrList[index].gameObject) end UIUtils.SetActive(self.group_AttrList[index].gameObject, true) UTL.Attr.SetAttrItemByCompName(self.group_AttrList[index], k, v, true) index = index + 1 end end function UIStratagemInfo:InitTalentInfo(data) local stratagemInfo = MDL.Stratagem.GetStratagemInfo(data.ID) if stratagemInfo then local talentList = MDL.Stratagem.GetTalentSortedList(data.ID) if #talentList > 0 then UIUtils.SetActive(self.group_ganwu, true) for i = 1, #talentList do local talent = talentList[i] local node = self.group_StratagemComprehension[i] if node == nil then node = self:InstantiateCollection(self.group_StratagemComprehension, self.group_StratagemComprehension[1].gameObject) end UIUtils.SetActive(node.gameObject, true) UIUtils.SetLabelText(node.txt_ComprehensionName, Const_IDS[talent.Name]) UIUtils.SetLabel(node.txt_ComprehensionEffect, UTL.String.FormatCombineTextByID(talent.Desc)) node.txt_ComprehensionLv.text = "Lv." .. talent.PointLevel end for i = #talentList + 1, #self.group_StratagemComprehension do UIUtils.SetActive(self.group_StratagemComprehension[i], false) end else UIUtils.SetActive(self.group_ganwu, false) end UIUtils.SetActive(self.group_Active, false) self.panel_StratagemInfo:SetSizeDelta(655, 800) self.txt_gs.text = stratagemInfo.StratagemGS self.txt_Advanced.text = "Lv."..(MDL.Stratagem.GetLearnNextId(data.ID) or stratagemInfo.Learn.CurrLvID) else UIUtils.SetActive(self.group_ganwu, false) UIUtils.SetActive(self.group_Active, true) self.panel_StratagemInfo:SetSizeDelta(655, 600) self.txt_gs.text = data.StratagemSkillGS + UTL.Attr.CalculateFight(data.Attr_Table) * 6 end end function UIStratagemInfo:GetItemStr(id, needCount) local haveCount = MDL.Bag.GetItemCount(id) if needCount <= haveCount then self.itemNotEnough = false return UTL.Color.FormatQualityText(haveCount, 1) .. "/" .. needCount else self.itemNotEnough = id return UTL.Color.FormatRedColor(haveCount) .. "/" .. needCount end end function UIStratagemInfo:OnButtonClicked(comp) if comp == self.item.event_Click then UTL.ItemTips.ShowCommonTipsById(self.showData.Item_Table[1].ItemID) elseif comp == self.btn_Active then if self.itemNotEnough then local itemData = DataSheetManager.ItemData:GetDataByID(self.itemNotEnough) CTL.Tips.AddTipsMsgAndPlaySound(Const_IDS.IDS_Guild_CommonFail1, UIUtils.GetLocalizedTxt(Const_IDS[itemData.Name])) else MDL.Stratagem.StratagemActivateReq(self.showData.ID) end elseif comp == self.btn_Resonance then UIManager.OpenView(Const_UI_Lua.UIEnum.UIResonanceInfo, {subResonanceID = resonance_info.Stratagem_Resonance, isShowGoto = false}) end end function UIStratagemInfo:RefreshCost() local data = self.showData local stratagemInfo = MDL.Stratagem.GetStratagemInfo(data.ID) if not stratagemInfo then local itemId = data.Item_Table[1].ItemID local num = data.Item_Table[1].ItemNum UTL.Item.SetItemCell(self.item, itemId, self:GetItemStr(itemId, num)) self.btn_Active:SetRedPoint(not self.itemNotEnough) end end return UIStratagemInfo