local UIStratagemPanel = UIViewClass() function UIStratagemPanel:OnOpened(context) UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS.IDS_Stratagem_FunctionName) self:InitFirstAndLastData() CTL.Stratagem.Init2DShowScene(self.ShowModel,"sl_bg_03.png") self:ShowById(context.id) if context.selectIndex then self.toggles:SelectIndex(context.selectIndex) end self:RegistSystemEvent(CTL.RedPoint.RedPointKey.Stratagem, self.RefreshToggleRp) self:RegistSystemEvent(EventID.UI_Stratagem_Active, self.RefreshToggleRp) self:RegistSystemEvent(EventID.UI_Stratagem_LearnRefresh, self.RefreshToggleRp) self:RegistSystemEvent(EventID.UI_Stratagem_TalentRefresh, self.RefreshToggleRp) end function UIStratagemPanel:ShowById(id) local data = DataSheetManager.StratagemData:GetDataByID(id) CTL.Stratagem.RefreshModelShow(data,self.ShowModel,data.PosX,data.PosY,data.Scale) self.curShowData = data self:RefreshBtns() self:RefreshToggles() self:RefreshToggleRp() self:InitSlotTag() end function UIStratagemPanel:RefreshBtns() UIUtils.SetActive(self.btn_Before, true) UIUtils.SetActive(self.btn_Next, true) end function UIStratagemPanel:RefreshToggles() local stratagemInfo = MDL.Stratagem.GetStratagemInfo(self.curShowData.ID) if stratagemInfo then UTL.Toggle.InitToggleGroupByIDS(self.toggles, "text", { Const_IDS.IDS_Fomation_Detail, Const_IDS.IDS_Stratagem_LearnBtn, Const_IDS.IDS_Stratagem_TalentBtn }) else UTL.Toggle.InitToggleGroupByIDS(self.toggles, "text", { Const_IDS.IDS_Fomation_Detail, Const_IDS.IDS_Stratagem_TalentBtn}) end if self.curToggleIndex == nil or self.curToggleIndex >= self.toggles.ActiveCount then self.toggles:SelectIndex(0) else if self.curToggleIndex == 0 then self:ShowInfoView() elseif self.curToggleIndex == 1 then local stratagemInfo = MDL.Stratagem.GetStratagemInfo(self.curShowData.ID) if stratagemInfo then self:ShowDiskView() else self:ShowTalentView() end elseif self.curToggleIndex == 2 then self:ShowTalentView() end end end function UIStratagemPanel:InitSlotTag() local slot = MDL.Stratagem.GetSlotId(self.curShowData.ID) if slot then if slot == 1 then UTL.Item.SetLocalizationImage(self.loc_BattleTitle, self.img_BattleTitle, "tlrk_msz_zz.png") UIUtils.SetLabelText(self.txt_BattleTitle, Const_IDS.IDS_Stratagem_MainSlot) self.state_BattleTitle:SetState(0) else UTL.Item.SetLocalizationImage(self.loc_BattleTitle, self.img_BattleTitle, "tlrk_msz_fz.png") UIUtils.SetLabelText(self.txt_BattleTitle, Const_IDS.IDS_Stratagem_SupportSlot) self.state_BattleTitle:SetState(1) end UIUtils.SetActive(self.group_Battle, true) else UIUtils.SetActive(self.group_Battle, false) end end function UIStratagemPanel:InitFirstAndLastData() local first = nil local last = nil local list = MDL.Stratagem.GetSortList() for _, data in ipairs(list) do if not first then first = data end last = data end self.lastData = last self.firstData = first end function UIStratagemPanel:OnClosed() self.context = { id = self.curShowData.ID } CTL.Stratagem.DisposeAll(self.ShowModel) end function UIStratagemPanel:OnValueChanged(comp, index) if comp == self.toggles then self.curToggleIndex = index if index == 0 then self:ShowInfoView() elseif index == 1 then local stratagemInfo = MDL.Stratagem.GetStratagemInfo(self.curShowData.ID) if stratagemInfo then self:ShowDiskView() else self:ShowTalentView() end elseif index == 2 then self:ShowTalentView() end end end function UIStratagemPanel:CloseSubView() if self.curView then self.curView:CloseView() self.curView = nil end UIUtils.SetActive(self.anyPortraitParent, true) end function UIStratagemPanel:ShowDiskView() self:CloseSubView() CTL.Stratagem.SetActiveModelShow(true) if not self.subView:IsViewOpened(Const_UI_Lua.UIEnum.UIStratagemDisk) then self.curView = self.subView:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIStratagemDisk)) end self.curView:ChangeStratagem(self.curShowData) end function UIStratagemPanel:ShowTalentView() self:CloseSubView() CTL.Stratagem.SetActiveModelShow(false) UIUtils.SetActive(self.anyPortraitParent, false) if not self.subView:IsViewOpened(Const_UI_Lua.UIEnum.UIStratagemTalent) then self.curView = self.subView:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIStratagemTalent)) end self.curView:ChangeStratagem(self.curShowData) end function UIStratagemPanel:ShowInfoView() self:CloseSubView() CTL.Stratagem.SetActiveModelShow(true) if not self.subView:IsViewOpened(Const_UI_Lua.UIEnum.UIStratagemInfo) then self.curView = self.subView:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIStratagemInfo)) end self.curView:ChangeStratagem(self.curShowData) end function UIStratagemPanel:OnButtonClicked(comp) if comp == self.UITemplateTitlePanel.btn_close then self:CloseView(true) elseif comp == self.UITemplateTitlePanel.btn_Home then CTL.HomeMain.CloseViewBackHomeMain() elseif comp == self.btn_Before then self:ShowBefore() elseif comp == self.btn_Next then self:ShowNext() elseif comp == self.btn_Change then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIStratagemEquip) elseif comp == self.UITemplateTitlePanel.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.Stratagem }) end end function UIStratagemPanel:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UIStratagemPanel:ShowNext() local flag = false local nextData = self.firstData local list = MDL.Stratagem.GetSortList() for i, data in ipairs(list) do if flag then nextData = data break elseif data.ID == self.curShowData.ID then flag = true end end self:ShowById(nextData.ID) end function UIStratagemPanel:ShowBefore() local list = MDL.Stratagem.GetSortList() local beforeData = self.lastData for i, data in ipairs(list) do if data.ID == self.curShowData.ID then break end beforeData = data end self:ShowById(beforeData.ID) end function UIStratagemPanel:RefreshToggleRp() if self.toggles.ActiveCount > 2 then self.toggles:SetRedPoint(1, MDL.Stratagem.IsCanLearnLv(self.curShowData)) local arrow = self.toggles:GetToggleComponent(3, "redPoint") if arrow then if MDL.Stratagem.IsCanTalentLv(self.curShowData) then UIUtils.SetActive(arrow, true) arrow:PlayAnim() else arrow:StopAnim(true) UIUtils.SetActive(arrow, false) end end else self.toggles:SetRedPoint(1, false) end end return UIStratagemPanel