---@class KLSalesTipsPanel:UIKmlLuaPanelBase ---@field view KLSalesTipsPanelView local KLSalesTipsPanel = class(UIKmlLuaPanelBase) local this = KLSalesTipsPanel ---创建时调用一次 function this:Init() self.init = false end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.btn_close, self, self.ClosePanel) GUI:Slider_addOnEvent(self.view.price_slider, self, self.PriceChange) GUI:AddOnClickEvent(self.view.number_add, self, function() self:NumChange(1) end) GUI:AddOnClickEvent(self.view.number_minus, self, function() self:NumChange(-1) end) GUI:Input_SetOnEndEdit(self.view.txt_number, self, self.InputValueChange) GUI:Input_SetOnEndEdit(self.view.txt_price_unit, self, self.InputPriceValue) GUI:AddOnClickEvent(self.view.btn, self, self.BtnClick) end function this:NumChange(index) local value = tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_number))) + index if self.maxNum < value then value = self.maxNum end if value < 1 then value = 1 end if self.tbl.money == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit))) * value) .. "天") else GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit))) * value)) end GUI:Text_setString(self.view.txt_number, tostring(value)) if self.args.cfgId == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_number, tostring(value) .. "天") end end function this:InputValueChange() if not GUI:GetUI("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel") then return end local value = tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_number))) if self.maxNum < value then value = self.maxNum end if value < 1 then value = 1 end local price_total = tostring(tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit))) * value) if self.args.cfgId == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_number, tostring(value) .. "天") else GUI:Text_setString(self.view.txt_number, tostring(value)) end if self.tbl.money == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_price_total, price_total .. "天") else GUI:Text_setString(self.view.txt_price_total, price_total) end end function this:ClosePanel() GUI:UIPanel_Close("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel") GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTips/KLUIEquipTipsPanel") GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTips/KLUIItemTipsPanel") GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTipsComparsion/KLUIEquipTipsComparsionPanel") GUI:UIPanel_Close("dev/outui/Archangel/Panel/KLArchangelGrailTips/KLArchangelGrailTipsPanel") end ---创建或者刷新界面数据时调用 function this:Refresh() local itemTbl = SL:GetConfig("cfg_item", self.args.cfgId, "id") if itemTbl.type == E_ItemType.Equip then GUI:setPositionX(self.view.sales_panel, 0) else GUI:setPositionX(self.view.sales_panel, 45) end if self.args.IsNeedOffsetXPos then GUI:setPositionX(self.view.sales_panel,self.args.IsNeedOffsetXPos ) end ---@type cfg_stall_column self.tbl = SL:GetConfig("cfg_stall", self.args.cfgId, "id") --local src = self:GetCoinIcon(tonumber(tbl.money)) GUI:Image_loadTexture(self.view.img_coin_unit, tostring(self.tbl.money), "Atlas/UIBagPanel.spriteatlas") --GUI:Image_loadTexture(self.view.img_coin_unit, src, "Atlas/UIBagPanel.spriteatlas") --GUI:Image_loadTexture(self.view.img_coin_total, src, "Atlas/UIBagPanel.spriteatlas") GUI:Image_loadTexture(self.view.img_coin_total, tostring(self.tbl.money), "Atlas/UIBagPanel.spriteatlas") self.maxPrice = self.tbl.topPrice > 0 and self.tbl.topPrice or 99999 self.minPrice = self.tbl.lPrice > 0 and self.tbl.lPrice or 1 GUI:Slider_setMaxPercent(self.view.price_slider, self.maxPrice) GUI:Slider_setMinPercent(self.view.price_slider, self.minPrice) GUI:Slider_setPercent(self.view.price_slider, self.tbl.mPrice) local overlying = itemTbl.overlying --local bagCount = SL:GetBagItemCount(self.args.cfgId) local bagCount = self:GetItemCount(self.args.cfgId) if self.args.cfgId == EMonthType.MonthCardTime then self.maxNum = InfoManager.monthCardInfo:GetMonthCardDayTime() elseif self:GetCoin(self.args.cfgId) then self.maxNum = bagCount else self.maxNum = overlying > bagCount and bagCount or overlying end local value = self.tbl.mPrice local num = 1 if self.args.cfgId == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_number, tostring(num) .. "天") else GUI:Text_setString(self.view.txt_number, tostring(num)) end if self.tbl.money == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_price_unit, tostring(value) .. "天") GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value) .. "天") else GUI:Text_setString(self.view.txt_price_unit, tostring(value)) GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value)) end -- 直接刷新会偶现数值没有被刷新的问题 SL:ScheduleOnce(0.2, function() self.init = true end) end function this:PriceChange() if not self.init then return end if not GUI:GetUI("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel") then return end local value = GUI:Slider_getPercent(self.view.price_slider) value = math.floor(tonumber(value)) local num = GUI:Text_getString(self.view.txt_number) if self.tbl.money == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_price_unit, tostring(value) .. "天") GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value) .. "天") else GUI:Text_setString(self.view.txt_price_unit, tostring(value)) GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value)) end --local num = GUI:Text_getString(self.view.txt_number) --GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value)) if self.args.cfgId == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_number, tostring(self:ReduceDay(num)) .. "天") end end function this:ReduceDay(value) ---去掉字符串末尾@天 local tbl = string.split(value, "天") return tbl[1] end function this:InputPriceValue() if not self.init then return end if not GUI:GetUI("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel") then return end local value = self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit)) local num = self:ReduceDay(GUI:Text_getString(self.view.txt_number)) value = tonumber(value) if self.maxPrice < value then value = self.maxPrice end if value < self.minPrice then value = self.minPrice end if self.tbl.money == EMonthType.MonthCardTime then GUI:Text_setString(self.view.txt_price_unit, tostring(value) .. "天") GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value) .. "天") else GUI:Text_setString(self.view.txt_price_unit, tostring(value)) GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value)) end GUI:Slider_setPercent(self.view.price_slider, value) end function this:TipPrivilegePick() --交易行寄售需要特权才能上架 SL:CommonTipsMessage({ stringTblID = 491, showTips = "", ui = self, sureBtnText = "确定", cancelBtnText = "取消", callback = this.OpenFirsh }) end function this:OpenFirsh() this:ClosePanel() GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeMain/KLTradeMainPanel") GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel",nil,nil,{2}) end function this:BtnClick() --if not InfoManager.monthCardInfo:IsHaveMonthCardRights("stall") then -- SL:TipMessage({ SL:GetConfig('cfg_string', 278).text, 1, NoticeType.NoticeMid })--"开通月卡后可使用交易行功能", -- return --end --钻石特权卡解锁交易行上架功能 if not PrivilegeCardManager.isSalesAdd() then self:TipPrivilegePick() return end local num = GUI:Text_getString(self.view.txt_number) local price = GUI:Slider_getPercent(self.view.price_slider) price = math.floor(tonumber(price)) local data = { itemcfgid = tostring(self.args.cfgId), bagindex = tostring(self.args.index and self.args.index or 0), count = tostring(self:ReduceDay(num)), both = tostring(1), listingprice = tostring(price), totalprice = tostring(tonumber(price) * tonumber(self:ReduceDay(num)))} if self.args.cfgId == EMonthType.MonthCardTime then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_UP_SHELF_MONTHCARD, data) else data.id = tostring(self.args.id) SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_TRADE_LISTING_GOODS, data) end self:ClosePanel() end function this:GetCoinIcon(coinType) if coinType == 10010001 then return "img_bag_01" elseif coinType == 10020001 then return "img_bag_02" elseif coinType == 10030001 then return "img_bag_03" elseif coinType == 10040001 then return "img_bag_04" end end function this:GetCoin(coinType) if coinType == 10010001 or coinType == 10020001 or coinType == 10030001 or coinType == 10040001 then return true end return false end function this:Close() end function this:GetItemCount(cfgId) if table.contains(MUEResourceType,cfgId) then return SL:GetBagItemCount(self.args.cfgId) end local bagCount = 0 for page, v in pairs(SL:GetMetaValue("BAG_DATA")) do for i, item in pairs(v) do if item.bind == false then if item.cfgId == cfgId then bagCount = bagCount + item.count end end end end return bagCount end return this