local UIBagItemUsePanel = UIViewClass() local ChangeItemCountSpeed = 0.15 function UIBagItemUsePanel:OnCreated() self.useData = nil; self.keyBoardView = nil end function UIBagItemUsePanel:OnOpened(context) self._currentUseCount = 1 --按住的状态 self._pressPlus=false self._pressMinus=false self:StartRepeatFunc(self.OnUpdateFun, ChangeItemCountSpeed) 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.useData = context.data; --道具数据 local itemData = DataSheetManager.ItemData:GetDataByID(self.useData.CfgId) --道具名字 local colorText = UTL.Color.FormatQualityText(UTL.Item.GetItemDataSpliceByType(self.useData.CfgId).Name, itemData.Color) UIUtils.SetLabel(self.txt_Item, colorText) --道具数量 self.Count = MDL.Bag.GetItemCount(self.useData.CfgId) --对体力丹特殊处理 if self.useData.CfgId == 2001 then local singleEnergy = DataSheetManager.ConstData:GetDataByID("EnergyItemValue").IntValue local maxEnergy = DataSheetManager.ConstData:GetDataByID("ServerMaxEnergy").IntValue + DataSheetManager.ConstData:GetDataByID("MaxEnergy").IntValue local maxCount = math.floor((maxEnergy - MDL.Player.GetEnergyValue()) / singleEnergy) if self.Count > maxCount then self.Count = maxCount end end local _, usableData = DataSheetManager.UseableItem:TryGetDataByUseableID(self.useData.CfgId) local defaultNum = usableData and usableData.DefaultNum or 0 if defaultNum > 0 then self._currentUseCount = defaultNum else self._currentUseCount = self.Count end self:RefreshUseCount() --道具图标 UTL.Item.SetItemCell(self.Item, self.useData.CfgId, self.Count) self.UICommonPopView.refer_Bg.btn_Close.gameObject:SetActive(true) self.UICommonPopView.btn_1:SetText(Const_IDS.IDS_BUTTON_USE) UIUtils.SetLabelText(self.UICommonPopView.refer_Bg.txt_Title, Const_IDS.IDS_Item_fuc6) UIUtils.SetActive(self.txt_Desc, false) end --检测按钮按住 function UIBagItemUsePanel: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 UIBagItemUsePanel:OnClickUse() UIManager.CloseView(Const_UI_Lua.UIEnum.UIBagItemUsePanel) self._currentUseCount = tonumber(self.txt_Num.text) -- 此处需要发送道具使用请求 if self.useData.CfgId == 2001 and not CTL.Currency.IsEnergyPillUseLegal() then CTL.Tips.AddTipsMsg(Const_IDS["IDS_Energy_Max"]) return end if self.useData.Id then MDL.Bag.UseItemReq(tostring(self.useData.Id), self._currentUseCount, DataSheetManager.ItemData:GetDataByID(self.useData.CfgId).BagType) else MDL.Bag.UseItemByCfgIdReq(self.useData.CfgId, self._currentUseCount) end end function UIBagItemUsePanel:OnClickMax() self._currentUseCount = self.Count self:RefreshUseCount() end function UIBagItemUsePanel:OnClickMin() self._currentUseCount = 1 self:RefreshUseCount() end function UIBagItemUsePanel:OnClickPlus() if self._currentUseCount < self.Count then self._currentUseCount = self._currentUseCount + 1 end self:RefreshUseCount() end function UIBagItemUsePanel:OnClickMinus() if self._currentUseCount > 1 then self._currentUseCount = self._currentUseCount - 1 end self:RefreshUseCount() end function UIBagItemUsePanel:OnClickCancel() UIManager.CloseView(Const_UI_Lua.UIEnum.UIBagItemUsePanel) end function UIBagItemUsePanel: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 = 1 self._pressMinus = false self:StopRepeatFunc(self.OnUpdateFun) end self.txt_Num.text = self._currentUseCount self.event_Minus:SetGray(self._currentUseCount<=1, false); self.event_Min:SetGray(self._currentUseCount<=1, false); self.event_Max:SetGray(self._currentUseCount>=self.Count, false); self.event_Plus:SetGray(self._currentUseCount>=self.Count, false); end function UIBagItemUsePanel:OnClickClose() UIManager.CloseView(Const_UI_Lua.UIEnum.UIBagItemUsePanel) end function UIBagItemUsePanel:OnClickInfo() end function UIBagItemUsePanel:OnPressPlus() self._pressPlus = true self:StopRepeatFunc(self.OnUpdateFun) self:StartRepeatFunc(self.OnUpdateFun, ChangeItemCountSpeed) end function UIBagItemUsePanel:PlusItemCount() self._currentUseCount = self._currentUseCount + 1 self:RefreshUseCount() end function UIBagItemUsePanel:OnPressPlusStop() self._pressPlus = false self:StopRepeatFunc(self.OnUpdateFun) end function UIBagItemUsePanel:OnPressMinus() self._pressMinus = true self:StopRepeatFunc(self.OnUpdateFun) self:StartRepeatFunc(self.OnUpdateFun, ChangeItemCountSpeed) end function UIBagItemUsePanel:MinusItemCount() self._currentUseCount = self._currentUseCount - 1 self:RefreshUseCount() end function UIBagItemUsePanel:OnPressMinusStop() self._pressMinus = false self:StopRepeatFunc(self.OnUpdateFun) end function UIBagItemUsePanel:OnButtonClicked(comp) if comp == self.UICommonPopView.btn_1 then self:OnClickUse() elseif comp == self.event_Max then self:OnClickMax() elseif comp == self.event_Min then self:OnClickMin() elseif comp == self.UICommonPopView.btn_2 or comp == self.UICommonPopView.refer_Bg.btn_Close then self:OnClickCancel() elseif comp == self.UICommonPopView.refer_Bg.img_Info then self:OnClickInfo() elseif comp == self.event_Count then if not self.keyBoardView then local eventClickPos = self:GetCountTextPos(self.event_Count.transform.position); self.keyBoardView = self.subView:OpenView(GetViewClass(Const_UI_Lua.UIEnum.UIKeypad), {parentView = self, x = 40, y = 200, minNum = 1, maxNum = self.Count}, nil, nil); end end end function UIBagItemUsePanel:ExcuteKeyBoardBack(count, param) self._currentUseCount = count; self:RefreshUseCount(); end function UIBagItemUsePanel:CloseKeyBoardView() self.keyBoardView:CloseView() self.keyBoardView = nil end function UIBagItemUsePanel:GetCountTextPos(countTextPos) return self.gameObject.transform:InverseTransformVector(countTextPos); end function UIBagItemUsePanel: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 UIBagItemUsePanel:OnPointerUp(comp, eventData) if comp == self.event_Plus then self:OnPressPlusStop() elseif comp == self.event_Minus then self:OnPressMinusStop() end end return UIBagItemUsePanel