123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- ---@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
|