local UISweepView = UIViewClass() local TenTimes = 10 local SliderSensitivityParam = FP.tonumberV1(DataSheetManager.ConstData:GetDataByID("SliderSensitivityParam").FloatValue) local FastBattleItemID = DataSheetManager.ConstData:GetDataByID("FastBattleItemID").IntValue function UISweepView:OnOpened(context) self:RegistSystemEvent(EventID.UI_SweepFuben_Refresh,self.OnSweepFubenRefresh) self:RegistSystemEvent(EventID.UI_SweepItem_Refresh,self.OnSweepItemRefresh) UIUtils.SetLabelText(self.UICommonPopUp.txt_Title, Const_IDS.IDS_Sweep_Title) self.maskRect.gameObject:SetActive(false) self.fuBenId = context.fuBenId self:InitView(context) self.context = context self.dragDict = {} self:SetPushStyle(LuaConst.PushStyleEnum.HIDE) end function UISweepView:InitView(context) if context.sweepType == MDL.Sweep.SweepType.Common then self.typestate:SetState(1) local data = DataSheetManager.BarrierChosenData:GetDataByID(context.fuBenId) UIUtils.SetLabel(self.txt_Stage, CTL.LevelSelect.GetLevelWholeNameById(self.fuBenId)) self.txt_Cost.text = data.Energy self.costEnergy = data.Energy self.btn_SkipTen.gameObject:SetActive(true) self.btn_SkipOne.gameObject:SetActive(true) self.btn_UseItem.gameObject:SetActive(false) self.btn_SkipAuto.gameObject:SetActive(false) elseif context.sweepType == MDL.Sweep.SweepType.Item then self.typestate:SetState(0) local itemData= DataSheetManager.ItemData:GetDataByID(context.itemId) UTL.Item.SetItemCell(self.Item, context.itemId) local count = MDL.Currency.GetSoftTokenCountById(context.itemId) UIUtils.SetLabel(self.txt_ItemNeed, UTL.Color.FormatRedColor(count).."/"..context.needCount) UIUtils.SetLabel(self.txt_ItemName, UTL.Color.FormatQualityText(UTL.Item.GetItemDataSpliceByType(context.itemId).Name, itemData.Color)) local data = DataSheetManager.BarrierChosenData:GetDataByID(context.fuBenId) self.txt_Cost.text = data.Energy self.costEnergy = data.Energy self.equipIndex = context.equipIndex --设置属性 local heroId = MDL.HeroSelect.curSelectHeroID local advancedStep = MDL.Advanced.GetHeroAdvancedInfo(heroId) local materialAttr = MDL.Advanced.GetMaterialAttrTableById(heroId, advancedStep, self.equipIndex) for i, v in ipairs(self.group_ItemAttrInfo) do if materialAttr[i] then UIUtils.SetActive(v, true) local attrName = DataSheetManager.AttrData:GetDataByID(materialAttr[i].AttrType).Name UIUtils.SetLabel(v, UIUtils.GetLocalizedTxt(Const_IDS[attrName]).."+"..materialAttr[i].AttrNum) else UIUtils.SetActive(v, false) end end if context.sweepCount == 0 then MDL.Sweep.SweepSingleItemReq(context.fuBenId, context.itemId, context.needCount - count, 0, context.isUseFastBattleItem) else MDL.Sweep.SweepSingleItemReq(context.fuBenId, context.itemId, context.needCount - count, TenTimes) end self.btn_SkipTen.gameObject:SetActive(true) self.btn_SkipOne.gameObject:SetActive(false) self.btn_UseItem.gameObject:SetActive(false) self.btn_SkipAuto.gameObject:SetActive(true) UIUtils.SetActive(self.btn_FastBattleTokenSweep, context.isUseFastBattleItem == true) end end function UISweepView:OnSweepFubenRefresh(list) self.group_Empty.gameObject:SetActive(false) self.curList = list self.showIndex = 1 self.maskRect.gameObject:SetActive(true) self.btn_SkipTen:SetGray(true) self.btn_SkipOne:SetGray(true) self.btn_SkipAuto:SetGray(true) self.btn_FastBattleTokenSweep:SetGray(true) if #list == 1 and self.view_StageSelect.Count == 0 then self:MoveShow() return end self.view_StageSelect:ClearCells() self:StartRepeatFunc(self.OnUpdateFun, 0.6) end function UISweepView:OnUpdateFun(deltaTime, timeSinceUpdate) self:MoveShow() end function UISweepView:MoveShow() local data = self.curList[self.showIndex] if data then self.view_StageSelect:AddData({data ,self.showIndex},0) self.showIndex = self.showIndex + 1 end if self.curList[self.showIndex] == nil then if self.noEnergy then if self.context.isUseFastBattleItem then self.view_StageSelect:AddData(nil,3) else self.view_StageSelect:AddData(nil,1) end self.noEnergy = false else self.view_StageSelect:AddData(nil,2) end self.maskRect.gameObject:SetActive(false) self.btn_SkipTen:SetGray(false) self.btn_SkipOne:SetGray(false) self.btn_SkipAuto:SetGray(false) self.btn_FastBattleTokenSweep:SetGray(false) if self.context.sweepType == MDL.Sweep.SweepType.Item then local count = MDL.Currency.GetSoftTokenCountById(self.context.itemId) if count >= self.context.needCount then self.txt_ItemNeed.text = UTL.Color.FormatGreenColor(count).."/"..self.context.needCount self.btn_UseItem.gameObject:SetActive(true) self.btn_SkipTen.gameObject:SetActive(false) self.btn_SkipOne.gameObject:SetActive(false) self.btn_SkipAuto.gameObject:SetActive(false) UIUtils.SetActive(self.btn_FastBattleTokenSweep, false) else self.txt_ItemNeed.text = UTL.Color.FormatRedColor(count).."/"..self.context.needCount self.btn_UseItem.gameObject:SetActive(false) self.btn_SkipTen.gameObject:SetActive(true) self.btn_SkipOne.gameObject:SetActive(false) if self.context.isUseFastBattleItem then UIUtils.SetActive(self.btn_FastBattleTokenSweep, true) UIUtils.SetActive(self.btn_SkipAuto, false) else UIUtils.SetActive(self.btn_FastBattleTokenSweep, false) UIUtils.SetActive(self.btn_SkipAuto, true) end end end self:StopRepeatFunc(self.OnUpdateFun) end if self.showIndex > 2 then self.view_StageSelect:MoveEnd() end end function UISweepView:SkipSweep() self:StopRepeatFunc(self.OnUpdateFun) for i = self.showIndex, #self.curList do self.view_StageSelect:AddData({self.curList[self.showIndex] ,self.showIndex}, 0) self.showIndex = self.showIndex + 1 end self:MoveShow() end function UISweepView:OnSweepItemRefresh(list,stopType) if stopType == 1 then self.noEnergy = true end self:OnSweepFubenRefresh(list) end function UISweepView:OnClickSweep(count) local currencyCount = MDL.Player.GetEnergyValue() if self.costEnergy * count > currencyCount then count = math.floor(currencyCount/self.costEnergy) self.noEnergy = true else self.noEnergy = false end if count > 0 then if self.context.sweepType == MDL.Sweep.SweepType.Common then MDL.Sweep.SweepFubenReq(self.fuBenId, count, count > 1) else MDL.Sweep.SweepSingleItemReq(self.context.fuBenId, self.context.itemId, self.context.needCount - count, TenTimes) end else UTL.ItemTips.OpenAboutEnergyPillView() end end function UISweepView:OnBackButtonPressed() self:OnButtonClicked(self.UICommonPopUp.btn_Close) end function UISweepView:OnButtonClicked(comp) if comp == self.btn_SkipTen then self:OnClickSweep(TenTimes) elseif comp == self.btn_SkipOne then self:OnClickSweep(1) elseif comp == self.UICommonPopUp.btn_Close then self:CloseView() elseif comp == self.btn_SkipAuto then if self.costEnergy > MDL.Player.GetEnergyValue() then UTL.ItemTips.OpenAboutEnergyPillView() return end local count = MDL.Currency.GetSoftTokenCountById(self.context.itemId) if self.context.needCount - count > 0 then MDL.Sweep.SweepSingleItemReq(self.context.fuBenId, self.context.itemId, self.context.needCount - count) end elseif comp == self.btn_UseItem then MDL.Advanced.MaterialEquipRequest(MDL.HeroSelect.curSelectHeroID, self.equipIndex - 1) self:CloseView() elseif comp == self.maskRect then self:SkipSweep() elseif comp == self.btn_FastBattleTokenSweep then self:ClickSweepByFastBattle() end end function UISweepView:ClickSweepByFastBattle() local remainCount = UTL.Item.GetItemStockCount(FastBattleItemID) if remainCount > 0 then local count = MDL.Currency.GetSoftTokenCountById(self.context.itemId) MDL.Sweep.SweepSingleItemReq(self.context.fuBenId, self.context.itemId, self.context.needCount - count, 0, true) else CTL.Tips.AddTipsMsg(Const_IDS.IDS_FastBattle_NotEnough) end end function UISweepView:OnCellInit(scrollRect, index, cellTable, data) if data then local rewardDatas = data[1].RewardItem for i, rewardData in ipairs(rewardDatas) do local contentItem = cellTable.Content[i] if not contentItem then contentItem = self:InstantiateCellCollection(cellTable.cell.gameObject, cellTable.Content, self.itemTemplate_Reward.gameObject) end UTL.Item.SetItemCell(contentItem.item, rewardData.ItemId, rewardData.ItemCount) if self.context.itemId and self.context.itemId == rewardData.ItemId then contentItem.effect_RequireItem:PlayUIEffect() else contentItem.effect_RequireItem:StopUIEffect() end UIUtils.SetActive(contentItem.gameObject, true) end for i = #rewardDatas + 1, #cellTable.Content do UIUtils.SetActive(cellTable.Content[i].gameObject, false) end cellTable.txt_Times.text = string.format(UIUtils.GetLocalizedTxt(Const_IDS.IDS_Sweep_Times), data[2]) self.view_StageSelect:RegistTriggerEvent(cellTable.drag_Obj, UIEventTriggerType.BeginDrag,index) self.view_StageSelect:RegistTriggerEvent(cellTable.drag_Obj, UIEventTriggerType.Drag,index) self.view_StageSelect:RegistTriggerEvent(cellTable.drag_Obj, UIEventTriggerType.EndDrag,index) self.dragDict[cellTable.drag_Obj.gameObject] = cellTable.ScrollView.gameObject CTL.Sound.PlayGameSound("UI_wipe") else if self.noEnergy then CTL.Sound.PlayGameSound("UI_invalid") else CTL.Sound.PlayGameSound("UI_wipe_success") end end end function UISweepView:Cell_OnBeginDrag(scrollRect, index, comp, eventData) if math.abs(eventData.delta.x) > SliderSensitivityParam then self.curDragObj = self.dragDict[comp.gameObject] else self.curDragObj = self.view_StageSelect.gameObject end UIUtils.ExecuteBeginDrag(self.curDragObj, eventData) end function UISweepView:Cell_OnDrag(scrollRect, index, comp, eventData) UIUtils.ExecuteDrag(self.curDragObj, eventData) end function UISweepView:Cell_OnEndDrag(scrollRect, index, comp, eventData) UIUtils.ExecuteEndDrag(self.curDragObj, eventData) end function UISweepView:OnCellClicked(scrollRect, index, cellTable, target, data) if data then for i,v in ipairs(cellTable.Content) do if v.item.event_Click == target then UTL.ItemTips.ShowCommonTipsById(data[1].RewardItem[i].ItemId) break end end end end return UISweepView