local operation_activity_info_pb = require 'Proto.operation_activity_info_pb' local UIGoldenHeroFame = UIViewClass() function UIGoldenHeroFame:OnCreated(context) self.itemList = {self.item1, self.item2, self.item3} end function UIGoldenHeroFame:OnOpened(context) self.activityId = context.activityId self.heroType = context.heroType self.activityType = MDL.OperationActivity.ActivityType.GoldenHero self.modeData = DataSheetManager.GoldHeroActivityModeData:GetDataByHeroType(self.heroType) --标题 UIUtils.SetLabelText(self.UITemplateTitlePanel.lab_Title, Const_IDS[self.modeData.TaskName]) self:RegistSystemEvent(EventID.UI_GoldenHeroFame_RefreshMainPanel, self.RefreshView) -- 领完奖励刷新界面 self:RegistSystemEvent(EventID.UI_OperationActivity_CloseView, self.OnCloseActivitySelf) self.toggleTitles = {} for k,v in DataSheetManager.GoldHeroActivityTaskTab[self.heroType]:GetEnumerator() do table.insert(self.toggleTitles, Const_IDS[v.TabName]) end UTL.Toggle.InitToggleGroupByIDS(self.group_TaskTab, "txt", self.toggleTitles) self.stateID = 1 self.curSelectTabID = 1 self:RefreshView(true) self.group_TaskTab:SelectIndex(0) CTL.GoldenHeroMain.OpenCurrencyPanel(self.heroType, self.__viewClassPath, self.currency_Info, {activityType = self.activityType, activityId = self.activityId, title = "IDS_DrawCard_Title_QuickBuy"}) if self.heroModel then self.modelComponentDataHandle = UTL.UIRender.CreateModelComponentDatas(self.heroModel) end self:SetPortrait() CTL.GoldenHeroMain.SetIsOpenedActivity(self.activityId, true) end function UIGoldenHeroFame:OnClosed() if self.AnyPortraitObj then TK2API.DiscardInstance(self.AnyPortraitPath, self.AnyPortraitObj) self.AnyPortraitObj = nil else UTL.UIRender.DisposeModelComponentData(self.modelComponentDataHandle) end end function UIGoldenHeroFame:OnBackButtonPressed() self:OnButtonClicked(self.UITemplateTitlePanel.btn_close) end function UIGoldenHeroFame: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.UITemplateTitlePanel.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.GoldHeroTask}) elseif comp == self.btn_ShowReward then UIManager.OpenView(Const_UI_Lua.UIEnum.UIGoldenHeroFameReward, {activityId = self.activityId, heroType = self.heroType}) elseif comp == self.btn_Reward then MDL.GoldenHeroFame.ClaimGoldHeroStateRewardRequest(self.activityId, self.heroType, self.rewardID) elseif comp == self.btn_Receive_All then MDL.GoldenHeroFame.ClaimAllGoldHeroTaskDataRewardReq(self.activityId, self.heroType) else for k,v in ipairs(self.itemList) do if comp == v.event_Click then UTL.ItemTips.ShowCommonTipsById(self.rewardTaskLevelCfg.Item_Table[k].ItemID) end end end end function UIGoldenHeroFame:OnCellInit(scrollRect, index, cellTable, data) local triggerData = DataSheetManager.TriggerID:GetDataByID(data.Cfg.TriggerID).Unlock_Table[1] UIUtils.SetLabel(cellTable.txt_TaskName, MDL.GoldenHeroFame.GetDesByTriggerID(triggerData, self.heroType)) -- 成就名称 local targetCount = triggerData.UnlockConditionParamB if triggerData.UnlockCondition == LuaConst.TriggerType.GoldenHero_PassLevel then -- 金将体验关:通关金将活动关卡X(非历史) targetCount = 1 elseif triggerData.UnlockCondition == LuaConst.TriggerType.GoldenHero_PassEnding then -- 金将体验关:达成结局X(非历史) targetCount = 1 elseif triggerData.UnlockCondition == LuaConst.TriggerType.GoldenHero_ParticipationModelBoss -- 金将体验关:累计参与X模板的Y次协同讨伐(非历史) or triggerData.UnlockCondition == LuaConst.TriggerType.GoldenHero_FindModelBoss -- 金将体验关:累计发现X模板的Y次讨伐目标(非历史) or triggerData.UnlockCondition == LuaConst.TriggerType.GoldenHero_GetModelBossScore -- 金将体验关:协同讨伐中累计获得X模板的Y积分(非历史) or triggerData.UnlockCondition == LuaConst.TriggerType.GoldenHero_KillModelBoss -- 金将体验关:累计击杀讨伐目标X模板的Y次(非历史) or triggerData.UnlockCondition == LuaConst.TriggerType.GoldenHero_PassModelLevel then -- 金将体验关:累计通关金将活动X模板的关卡Y次(非历史) targetCount = triggerData.UnlockConditionParamB end local curCount = 0 if data.taskData.state ~= operation_activity_info_pb.StateDoing then curCount = string.format("%s/%s", targetCount, targetCount) else curCount = string.format("%s/%s", data.taskData.process, targetCount) end UIUtils.SetLabel(cellTable.txt_Progress, curCount) -- 成就进度 UTL.Item.SetItemCell(cellTable.item1, data.Cfg.Item_Table[1].ItemID, data.Cfg.Item_Table[1].ItemNum) UTL.Item.SetItemCell(cellTable.item2, data.Cfg.Item_Table[2].ItemID, data.Cfg.Item_Table[2].ItemNum) if triggerData.UnlockCondition == LuaConst.TriggerType.Login_Count and data.taskData.state == operation_activity_info_pb.StateDoing then cellTable.state_Btn:SetState(3) else cellTable.state_Btn:SetState(data.taskData.state - 1) end end function UIGoldenHeroFame:OnCellClicked(scrollRect, index, cellTable, target, data) if target == cellTable.item1.event_Click then UTL.ItemTips.ShowCommonTipsById(data.Cfg.Item_Table[1].ItemID) elseif target == cellTable.item2.event_Click then UTL.ItemTips.ShowCommonTipsById(data.Cfg.Item_Table[2].ItemID) elseif target == cellTable.btn_Go then --处理一个前往的逻辑 local triggerData = DataSheetManager.TriggerType:GetDataByID(DataSheetManager.TriggerID:GetDataByID(data.Cfg.TriggerID).Unlock_Table[1].UnlockCondition) local unlockId = DataSheetManager.ItemSource:GetDataByID(triggerData.ItemSourceID).UnlockID if unlockId > 0 and not MDL.Unlock.IsUnlock(unlockId) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_7DayActivity_Hint_6"]) return end if triggerData.ItemSourceID == MDL.ItemSources.SourceType.GoldenHeroStory or triggerData.ItemSourceID == MDL.ItemSources.SourceType.GoldenHeroBoss then if not MDL.GoldenHeroMain.IsActivityInFuncTime(self.activityId) then CTL.Tips.AddTipsMsg(Const_IDS["IDS_GoldHeroActivity_TimeHint3"]) return else CTL.ItemSources.ExecuteSourceFunctionById(triggerData.ItemSourceID, nil, {heroType = self.heroType, activityId = self.activityId}) end else CTL.ItemSources.ExecuteSourceFunctionById(triggerData.ItemSourceID, nil, {heroType = self.heroType, activityId = self.activityId}) end elseif target == cellTable.btn_Receive then MDL.GoldenHeroFame.ClaimGoldHeroTaskDataRewardRequest(self.activityId, self.heroType, data.Cfg.TaskID) end end function UIGoldenHeroFame:OnValueChanged(comp, index) if comp == self.group_TaskTab then self:ShowTaskList(index + 1) end end function UIGoldenHeroFame:RefreshView(isInit) local exp = 0 local isReward = false local stateID = self.stateID or 0 self.stateID, exp = MDL.GoldenHeroFame.GetCurrentFameLevelIDAndExp(self.activityId, self.heroType) if not isInit and stateID ~= self.stateID then self.effect_LevelUp:PlayUIEffect() end isReward, self.rewardID = MDL.GoldenHeroFame.HasReward(self.activityId, self.heroType) self.taskLevel = DataSheetManager.GoldHeroActivityTaskLevel[self.heroType]:GetDataByLevelID(self.stateID) local taskLevelCount = DataSheetManager.GoldHeroActivityTaskLevel[self.heroType]:GetDataCount() self.nextTaskLevel = DataSheetManager.GoldHeroActivityTaskLevel[self.heroType]:GetDataByLevelID(self.stateID + 1 <= taskLevelCount and self.stateID + 1 or self.stateID) self.rewardTaskLevelCfg = DataSheetManager.GoldHeroActivityTaskLevel[self.heroType]:GetDataByLevelID(self.rewardID <= taskLevelCount and self.rewardID or taskLevelCount) -- 武将立绘 UIUtils.SetImageByAssetBundle(self.img_Hero, self.modeData.MainPrefabHero) -- 关卡图片 UIUtils.SetLabel(self.txt_Fame, UIUtils.GetLocalizedTxt(Const_IDS.IDS_GoldHeroActivity_Task_Hint_4)..UIUtils.GetLocalizedTxt(Const_IDS[self.taskLevel.LevelName])) -- 声明等级名 UIUtils.SetLabel(self.txt_Exp, exp.."/"..self.nextTaskLevel.LevelExp) -- 升级进度 self.slider_Exp.value = exp/self.nextTaskLevel.LevelExp UIUtils.SetActive(self.btn_Reward, isReward) if self.rewardID > taskLevelCount then UIUtils.SetActive(self.group_Reward, false) else UIUtils.SetActive(self.group_Reward, true) for k,v in ipairs(self.itemList) do local itemData = self.rewardTaskLevelCfg.Item_Table[k] if itemData then UIUtils.SetActive(v.gameObject, true) UTL.Item.SetItemCell(v, itemData.ItemID, itemData.ItemNum) UIUtils.SetActive(v.effect_Receive.gameObject, isReward) if isReward then v.effect_Receive:PlayUIEffect() else v.effect_Receive:StopUIEffect() end end end end -- 任务页签 for k,v in ipairs(self.toggleTitles) do self.group_TaskTab:SetRedPoint(k - 1, MDL.GoldenHeroFame.GetTaskRewardRedPointByActivityID_TaskType(self.activityId, self.heroType, k)) end self.taskTypeDataList = MDL.GoldenHeroFame.GetTaskListByHeroType_TabID(self.activityId) self:ShowTaskList(self.curSelectTabID) UIUtils.SetActive(self.btn_Receive_All, MDL.GoldenHeroFame.GetTaskRewardRedPointByActivityID(self.activityId)) end function UIGoldenHeroFame:ShowTaskList(taskType) self.curSelectTabID = taskType self.loop_Task:ClearCells() for k,v in ipairs(self.taskTypeDataList[taskType]) do self.loop_Task:AddData(v,0) end end function UIGoldenHeroFame:OnCloseActivitySelf(viewClassPath, activityId) if viewClassPath == self.__viewClassPath then if self.activityId and activityId == self.activityId then self:CloseView(true) end end end function UIGoldenHeroFame:SetPortrait() local mainPrefabMode = self.modeData.MainPrefabMode local MainViewPrefabModeEnum = CTL.GoldenHeroMain.MainViewPrefabMode if mainPrefabMode == MainViewPrefabModeEnum.AnyPortrait then self.AnyPortraitPath = self.modeData.MainPrefabHero self.AnyPortraitObj = CTL.GoldenHeroMain.ShowAnyPortrait(self.modeData, self.group_2DDynamicBG.transform, self, true) else local bgTexturePath = ConstAssetPathConfig.DefaultImage local EmptyLightObjPath = ConstAssetPathConfig.EmptyLightObjPath local flagEffectPath = ConstAssetPathConfig.flagEffectPath local modeData = self.modeData local heroOffsetX = 0 local heroOffsetY = 0 local heroSize = 1 -- 根据heroType调整其立绘缩放与偏移 if self.heroType == MDL.GoldenHeroMain.HeroType.ZJ then heroSize = 0.51 heroOffsetX = 3.89 heroOffsetY = -0.21 elseif self.heroType == MDL.GoldenHeroMain.HeroType.GN then heroSize = modeData.HeroSize heroOffsetX = modeData.HeroOffsetX heroOffsetY = modeData.HeroOffsetY elseif self.heroType == MDL.GoldenHeroMain.HeroType.ZL then heroSize = 5 heroOffsetX = 3.44 heroOffsetY = -0.29 elseif self.heroType == MDL.GoldenHeroMain.HeroType.SJ then heroSize = 4.1 heroOffsetX = 2.87 heroOffsetY = -0.72 elseif self.heroType == MDL.GoldenHeroMain.HeroType.TSC then heroSize = 4.8 heroOffsetX = 0.09 heroOffsetY = -0.15 elseif self.heroType == MDL.GoldenHeroMain.HeroType.HYY then heroSize = 4.8 heroOffsetX = 0.56 heroOffsetY = -0.13 elseif self.heroType == MDL.GoldenHeroMain.HeroType.JX then heroSize = 5.5 heroOffsetX = 1.7 heroOffsetY = -0.13 elseif self.heroType == MDL.GoldenHeroMain.HeroType.LM then heroSize = 5 heroOffsetX = 2 heroOffsetY = -0.15 end UTL.UIRender.Create2DTextureBgScene(self.modelComponentDataHandle, bgTexturePath, nil, nil) UTL.UIRender.CreateNonPlayerModel(self.modelComponentDataHandle, modeData.MainPrefabHero, heroSize, 0, EmptyLightObjPath) UTL.UIRender.SetHeroParentPos(self.modelComponentDataHandle, heroOffsetX, heroOffsetY, 0) UTL.UIRender.SetCamerOrthographic(2.55) UTL.UIRender.CreateSceneEffect(self.modelComponentDataHandle, flagEffectPath, 3.07, 1.33, -2.77, 5) -- 背景图片和旗子应该隐藏防止遮挡后面的场景 UIUtils.SetActive(self.bg_Bottom, false) UIUtils.SetActive(self.effect_Flag, false) end end return UIGoldenHeroFame