-- 经验找回 local UIWelfareRetrieve = UIViewClass() local MainLineActivityID = 20 -------------------- function UIWelfareRetrieve:OnCreated() self.CurActiveValueStr = "" self.RecoveryList = {} -- 设置一次免费找回比例ids,防止多次拼接 local freeRatio1 = DataSheetManager.ConstData:GetDataByID("RewardRecoveryFreeRatio1").IntValue local freeRatio2 = DataSheetManager.ConstData:GetDataByID("RewardRecoveryFreeRatio2").IntValue self.FreeRetrieveStr = string.FormatByIdsId(Const_IDS.IDS_RewardRecovery_Resources, freeRatio1 + freeRatio2) self.FreeRetrieveInfoStr = string.FormatByIdsId(Const_IDS.IDS_RewardRecovery_Normal, freeRatio1, freeRatio2) -- 设置一次付费找回比例ids,防止多次拼接 local moneyRatio = DataSheetManager.ConstData:GetDataByID("RewardRecoveryMoneyRatio").IntValue self.CostRetrieveStr = string.FormatByIdsId(Const_IDS.IDS_RewardRecovery_Resources, moneyRatio) self.CostRetrieveInfoStr = string.FormatByIdsId(Const_IDS.IDS_RewardRecovery_Pay, moneyRatio) self.freeDegree = DataSheetManager.ConstData:GetDataByID("RewardRecoveryFreeDegree").IntValue end function UIWelfareRetrieve:OnOpened(context) self:RegistSystemEvent(EventID.UI_RewardRecovery_RefreshRecovery, self.RefreshRecoveryLoop) UIUtils.SetLabel(self.txt_FreeRetrieve, self.FreeRetrieveInfoStr) UIUtils.SetLabel(self.txt_ChargeRetrieve, self.CostRetrieveInfoStr) UTL.Item.SetLocalizationImage(self.Loc_Title, self.img_Title, "jlzh_msz_jlzh02.png") self:RefreshRecoveryLoop() end function UIWelfareRetrieve:OnButtonClicked(comp) if comp == self.btn_TotalFree then MDL.RewardsRetrieve.AllResourceRecoveryRequest(false) elseif comp == self.btn_TotalPay then MDL.RewardsRetrieve.AllResourceRecoveryRequest(true) elseif comp == self.btn_Info then UIManager.OpenView(Const_UI_Lua.UIEnum.UICommonNoteView, {id = LuaConst.NoteID.RewardsRetrieve }) end end function UIWelfareRetrieve:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.Loop_Recoverys then if not data.activityData then return end -- 直接判空即可,在数据处理的地方已经加了提示 -- 如果是主线剧情,则显示为体力找回 if data.activityData.ID == MainLineActivityID then UIUtils.SetLabelText(cellTable.txt_FunctionName, Const_IDS.IDS_RewardRecovery_PhysicalRecovery) else UIUtils.SetLabelText(cellTable.txt_FunctionName, Const_IDS[data.activityData.Activity]) end UIUtils.SetLabel(cellTable.lab_Available, data.info.CostNeedCurrency) -- 设置找回奖励状态 local resourceItems = {} if data.info.ResourceState == MDL.RewardsRetrieve.ResourceState.NotRecoveryYet then -- 还未找回 cellTable.obj_State:SetState(0) UIUtils.SetLabel(cellTable.txt_FreeRetrieve, self.FreeRetrieveStr) UIUtils.SetLabel(cellTable.txt_CostRetrieve, self.CostRetrieveStr) resourceItems = CTL.RewardsRetrieve.CalculateReward(data.info.ResourceItemsPart1, data.info.ResourceItemsPart2, data.info.ResourceItemsPart3) elseif data.info.ResourceState == MDL.RewardsRetrieve.ResourceState.Recovering then -- 找回到了第一阶段 cellTable.obj_State:SetState(1) UIUtils.SetLabel(cellTable.txt_CellRetrieveTip, self.CurActiveValueStr) resourceItems = CTL.RewardsRetrieve.CalculateReward(data.info.ResourceItemsPart2) elseif data.info.ResourceState == MDL.RewardsRetrieve.ResourceState.RecoveryComplete then -- 全部找回完毕 cellTable.obj_State:SetState(2) resourceItems = CTL.RewardsRetrieve.CalculateReward(data.info.ResourceItemsPart1, data.info.ResourceItemsPart2, data.info.ResourceItemsPart3) end -- 设置找回奖励 for i, rewardData in ipairs(resourceItems) do local contentItem = cellTable.group_Reward[i] if not contentItem then contentItem = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.group_Reward, self.itemTemplate_Reward.gameObject) end UTL.Item.SetItemCell(contentItem, rewardData.itemId, rewardData.itemCount) UIUtils.SetActive(contentItem.gameObject, true) end for i = #resourceItems + 1, #cellTable.group_Reward do UIUtils.SetActive(cellTable.group_Reward[i].gameObject, false) end end end function UIWelfareRetrieve:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.Loop_Recoverys then if target == cellTable.btn_Free then MDL.RewardsRetrieve.SpecifyResourceRecoveryRequest(data.info.ActivityDataID, false) elseif target == cellTable.btn_Pay then MDL.RewardsRetrieve.SpecifyResourceRecoveryRequest(data.info.ActivityDataID, true) else for i = 1, #cellTable.group_Reward do if target == cellTable.group_Reward[i].event_Click then local resourceItems = {} if data.info.ResourceState == MDL.RewardsRetrieve.ResourceState.Recovering then resourceItems = CTL.RewardsRetrieve.CalculateReward(data.info.ResourceItemsPart2) else resourceItems = CTL.RewardsRetrieve.CalculateReward(data.info.ResourceItemsPart1, data.info.ResourceItemsPart2, data.info.ResourceItemsPart3) end local rewardData = resourceItems[i] if rewardData then UTL.ItemTips.ShowCommonTipsById(rewardData.itemId) end break end end end end end -------------------- function UIWelfareRetrieve:RefreshRecoveryLoop() -- 设置一键找回状态 if MDL.RewardsRetrieve.AllFinishRecoveryReward() then self.obj_StateRetrieve:SetState(1) UIUtils.SetLabelText(self.txt_Tip, Const_IDS.IDS_RewardRecovery_GotAll) else self:GetCurActiveValueStr() if MDL.RewardsRetrieve.HaveCanRecoveryReward() then self.obj_StateRetrieve:SetState(0) UIUtils.SetLabelText(self.txt_Tip, Const_IDS.IDS_RewardRecovery_RecoveAll) UIUtils.SetLabel(self.lab_Available, MDL.RewardsRetrieve.GetRecoveryAllCost()) else UIUtils.SetLabel(self.txt_Tip, self.CurActiveValueStr) self.obj_StateRetrieve:SetState(1) end end -- 设置找回列表 local index = 1 for i, v in MDL.RewardsRetrieve.GetRewardRecoveryInfoIterator() do self.RecoveryList[index] = v index = index + 1 end for i = #self.RecoveryList, index, -1 do table.remove(self.RecoveryList, i) end self.Loop_Recoverys:ReloadAll(self.RecoveryList) end function UIWelfareRetrieve:GetCurActiveValueStr() local curActiveValue = MDL.Activities.GetCurActiveValue() local curActiveValueStr = curActiveValue < self.freeDegree and UTL.Color.FormatRedColor(curActiveValue) or UTL.Color.FormatGreenColor(self.freeDegree) self.CurActiveValueStr = string.FormatByIdsId(Const_IDS.IDS_RewardRecovery_ActivityDegree, curActiveValueStr, self.freeDegree) end return UIWelfareRetrieve