local UICycleRecharge = UIViewClass() local SliderSensitivityParam = FP.tonumberV1(DataSheetManager.ConstData:GetDataByID("SliderSensitivityParam").FloatValue) function UICycleRecharge:OnOpened(context) self:RegistSystemEvent(EventID.UI_CycleRecharge_RefreshInfo, self.RefreshRechargeUI) self.dragDict = {} self:RefreshRechargeUI() end function UICycleRecharge:RefreshRechargeUI() local activityId = CTL.CycleRecharge.GetRechargeActivityId() if activityId <= 0 then self:CloseView() return end local dataLength = MDL.OperationActivity.CycleRecharge:GetDataLengthByActivityID(activityId) --档位列表 self.loop_Info:ClearCells() local firstNotReached, firstCanReceive, anyHasReceived local myPoint = MDL.CycleRecharge.GetRechargePoint() for index, v in MDL.OperationActivity.CycleRecharge:GetEnumeratorByActivityID(activityId) do local receiveState --对应uistate, if myPoint < v.Integral then if not firstNotReached then firstNotReached = index end receiveState = 0 --未到达前往充值 elseif not MDL.CycleRecharge.IsRewardReceive(v.ID) then receiveState = 1 --可领取 if not firstCanReceive then firstCanReceive = index end else receiveState = 2 --已领取 anyHasReceived = true end self.loop_Info:AddData({ chargeData = v, receiveState = receiveState }, 0) end --滑动 local moveIndex = dataLength - 1 --默认置底 if firstCanReceive then moveIndex = firstCanReceive - 1 --优先滑到第一个可领取的 elseif firstNotReached then moveIndex = firstNotReached - 1 --滑到第一个未到达的(效果是如果都未达到,则置顶;都已领取,没有未到达,则置底) end self.loop_Info:MoveIndex(moveIndex) ---本期充值积分 UIUtils.SetLabel(self.txt_GoldNum, myPoint) --活动倒计时 local timeToEnd = CTL.CycleRecharge.GetTimeToEnd() if timeToEnd then self.group_Time:SetCustomString(UIUtils.GetLocalizedTxt(Const_IDS.IDS_HeroFund_Timer), 1, 1) self.group_Time:ResetAndBeginTimer(false, timeToEnd) else logging.error(LTAG.ERROR, "[CycleRecharge]取不到活动倒计时!当前活动id:", activityId) end end function UICycleRecharge:OnBackButtonPressed() self:OnButtonClicked(self.btn_Close) end function UICycleRecharge:OnButtonClicked(comp) if comp == self.btn_Close then self:CloseView() end end function UICycleRecharge:OnCellInit(scrollRect, index, cellTable, data) if scrollRect == self.loop_Info then local chargeData = data.chargeData UIUtils.SetLabel(cellTable.txt_TaskNum, chargeData.Integral) cellTable.state_Num:SetState(data.receiveState > 0 and 1 or 0) --奖励显示 for i, v in ipairs(chargeData.Reward_Table) do local itemCell = cellTable.content[i] if not itemCell then itemCell = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.content, self.cell_item.gameObject) end UTL.Item.SetItemCell(itemCell.item, v.RewardID, v.RewardNum) UIUtils.SetActive(itemCell.gameObject, true); end --领取按钮状态 cellTable.state_Got:SetState(data.receiveState) --注册滑动事件 self:DragClosed(self.loop_Info, cellTable.drag_Obj, index ,cellTable) end end function UICycleRecharge:OnCellClicked(scrollRect, index, cellTable, target, data) if scrollRect == self.loop_Info then local chargeData = data.chargeData if target == cellTable.btn_Recharge then --跳转充值界面 CTL.ItemSources.ExecuteSourceFunctionById(MDL.ItemSources.SourceType.Recharge) elseif target == cellTable.btn_Get then --领取奖励 MDL.CycleRecharge.ClaimRechargeRewardReq(chargeData.ActivityID, chargeData.ID) else for i, v in ipairs(cellTable.content) do if target == v.item.event_Click then UTL.ItemTips.ShowCommonTipsById(chargeData.Reward_Table[i].RewardID) break end end end end end --滑动事件处理,支持点击奖励图标也能上下滑动 function UICycleRecharge:DragClosed(scrollRect, drag_Obj, index ,cellTable) scrollRect:RegistTriggerEvent(drag_Obj, UIEventTriggerType.BeginDrag, index) scrollRect:RegistTriggerEvent(drag_Obj, UIEventTriggerType.Drag, index) scrollRect:RegistTriggerEvent(drag_Obj, UIEventTriggerType.EndDrag, index) self.dragDict[drag_Obj.gameObject] = cellTable.scroll_View.gameObject end function UICycleRecharge:Cell_OnBeginDrag(scrollRect, index, comp, eventData) if math.abs(eventData.delta.x) > SliderSensitivityParam then self.curDragObj = self.dragDict[comp.gameObject] else if scrollRect == self.loop_Info then self.curDragObj = self.loop_Info.gameObject end end UIUtils.ExecuteBeginDrag(self.curDragObj, eventData) end function UICycleRecharge:Cell_OnDrag(scrollRect, index, comp, eventData) UIUtils.ExecuteDrag(self.curDragObj, eventData) end function UICycleRecharge:Cell_OnEndDrag(scrollRect, index, comp, eventData) UIUtils.ExecuteEndDrag(self.curDragObj, eventData) end return UICycleRecharge