local UIBatchItemFusion = UIViewClass() local ChangeItemCountSpeed = 0.15 function UIBatchItemFusion:OnOpened(context) self:RegistTriggerEvent(self.event_Plus, UIEventTriggerType.PointerDown) self:RegistTriggerEvent(self.event_Plus, UIEventTriggerType.PointerUp) self:RegistTriggerEvent(self.event_Minus, UIEventTriggerType.PointerDown) self:RegistTriggerEvent(self.event_Minus, UIEventTriggerType.PointerUp) self._currentUseCount = 0 self.Count = nil local composeData = CTL.ItemUse.GetItemComposeData(context.id) self.composeId = composeData.ID for i, v in ipairs(composeData.Item_Table) do self.loop_Materials:AddData(v, 0) end UTL.Item.SetItemCell(self.img_TargetItem, composeData.ID) self.composeItemId = composeData.ID self._currentUseCount = self.Count self:RefreshUseCount() UIUtils.SetActive(self.img_TargetItem.group_Count,true) self.item_Name.text = UTL.Item.GetItemColorName(composeData.ID) UIUtils.SetLabelText(self.refer_Bg.txt_Title, Const_IDS.IDS_Bag_Item_Button_Compose) self.keyBoardView = nil end function UIBatchItemFusion:ExcuteKeyBoardBack(count, param) self._currentUseCount = count self:RefreshUseCount() end function UIBatchItemFusion:CloseKeyBoardView() self.keyBoardView:CloseView() self.keyBoardView = nil end function UIBatchItemFusion:OnUpdateFun(deltaTime, timeSineUpdate) if not self._pressPlus and not self._pressMinus then return end if self._pressPlus then self:PlusItemCount() end if self._pressMinus then self:MinusItemCount() end end function UIBatchItemFusion:OnBackButtonPressed() self:OnButtonClicked(self.refer_Bg.btn_Close) end function UIBatchItemFusion:OnButtonClicked(comp) if comp == self.event_Count then if not self.keyBoardView then self.keyBoardView = self.subView:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIKeypad), { parentView = self, x = 130, y = 260, minNum = 1, maxNum = self.Count }); end elseif comp == self.refer_Bg.btn_Close or comp == self.event_Cancel then self:CloseView() elseif comp == self.event_Max then self:OnClickMax() elseif comp == self.event_Confirm then if self._currentUseCount == 0 then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Jade_Upgrade_3"]) CTL.Sound.PlayGameSound("UI_invalid") return end local itemCfgData = DataSheetManager.ItemData:GetDataByID(self.composeId); MDL.Bag.ItemComposeReq(self.composeId, self._currentUseCount) self:CloseView() elseif comp == self.img_TargetItem.event_Click then UTL.ItemTips.ShowCommonTipsById(self.composeItemId) end end function UIBatchItemFusion:GetCountTextPos(countTextPos) return self.gameObject.transform:InverseTransformVector(countTextPos); end function UIBatchItemFusion:OnPointerDown(comp, eventData) if comp == self.event_Plus then self:OnClickPlus() self:OnPressPlus() elseif comp == self.event_Minus then self:OnClickMinus() self:OnPressMinus() end end function UIBatchItemFusion:OnPointerUp(comp, eventData) if comp == self.event_Plus then self:OnPressPlusStop() elseif comp == self.event_Minus then self:OnPressMinusStop() end end function UIBatchItemFusion:OnPressPlus() self._pressPlus = true self:StartRepeatFunc(self.OnUpdateFun, ChangeItemCountSpeed) end function UIBatchItemFusion:PlusItemCount() self._currentUseCount = self._currentUseCount + 1 self:RefreshUseCount() end function UIBatchItemFusion:OnPressPlusStop() self._pressPlus = false self:StopRepeatFunc(self.OnUpdateFun) end function UIBatchItemFusion:OnPressMinus() self._pressMinus = true self:StartRepeatFunc(self.OnUpdateFun, ChangeItemCountSpeed) end function UIBatchItemFusion:MinusItemCount() if self._currentUseCount > 1 then self._currentUseCount = self._currentUseCount - 1 end self:RefreshUseCount() end function UIBatchItemFusion:OnPressMinusStop() self._pressMinus = false self:StopRepeatFunc(self.OnUpdateFun) end function UIBatchItemFusion:OnClickMinus() if self._currentUseCount > 1 then self._currentUseCount = self._currentUseCount - 1 end self:RefreshUseCount() end function UIBatchItemFusion:OnClickPlus() if self._currentUseCount < self.Count then self._currentUseCount = self._currentUseCount + 1 end self:RefreshUseCount() end function UIBatchItemFusion:OnClickMax() self._currentUseCount = self.Count self:RefreshUseCount() end function UIBatchItemFusion:OnClickMin() self._currentUseCount = 1 self:RefreshUseCount() end function UIBatchItemFusion:RefreshUseCount() if self._currentUseCount > self.Count then self._currentUseCount = self.Count self._pressPlus = false self:StopRepeatFunc(self.OnUpdateFun) end if self._currentUseCount < 1 then self._currentUseCount = 0 self._pressMinus = false self:StopRepeatFunc(self.OnUpdateFun) end self.event_Minus:SetGray(self._currentUseCount <= 1, false); self.event_Max:SetGray(self._currentUseCount >= self.Count, false); self.event_Plus:SetGray(self._currentUseCount >= self.Count, false); self.loop_Materials:RefreshCells(false) if self.Count == 0 then self.txt_Num.text = 1 self.img_TargetItem.lab_Count.text = 1 else self.txt_Num.text = self._currentUseCount self.img_TargetItem.lab_Count.text = self._currentUseCount end end function UIBatchItemFusion:OnCellInit(scrollRect, index, cellTable, data) local returnCount = MDL.Bag.GetItemCount(data.ItemID) local batchCount = math.floor(returnCount / data.ItemNum) if self.Count == nil or self.Count > batchCount then self.Count = batchCount end if batchCount == 0 then batchCount = UTL.Color.FormatRedColor(batchCount) end local count = self._currentUseCount > 1 and self._currentUseCount or 1 UTL.Item.SetItemCell(cellTable.item, data.ItemID, returnCount .. "/" .. count * data.ItemNum) end function UIBatchItemFusion:OnCellClicked(scrollRect, index, cellTable, target, data) UTL.ItemTips.ShowCommonTipsById(data.ItemID) end return UIBatchItemFusion