KLSalesTipsPanel.lua 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. ---@class KLSalesTipsPanel:UIKmlLuaPanelBase
  2. ---@field view KLSalesTipsPanelView
  3. local KLSalesTipsPanel = class(UIKmlLuaPanelBase)
  4. local this = KLSalesTipsPanel
  5. ---创建时调用一次
  6. function this:Init()
  7. self.init = false
  8. end
  9. ---注册UI事件和服务器消息
  10. function this:RegistEvents()
  11. GUI:AddOnClickEvent(self.view.btn_close, self, self.ClosePanel)
  12. GUI:Slider_addOnEvent(self.view.price_slider, self, self.PriceChange)
  13. GUI:AddOnClickEvent(self.view.number_add, self, function()
  14. self:NumChange(1)
  15. end)
  16. GUI:AddOnClickEvent(self.view.number_minus, self, function()
  17. self:NumChange(-1)
  18. end)
  19. GUI:Input_SetOnEndEdit(self.view.txt_number, self, self.InputValueChange)
  20. GUI:Input_SetOnEndEdit(self.view.txt_price_unit, self, self.InputPriceValue)
  21. GUI:AddOnClickEvent(self.view.btn, self, self.BtnClick)
  22. end
  23. function this:NumChange(index)
  24. local value = tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_number))) + index
  25. if self.maxNum < value then
  26. value = self.maxNum
  27. end
  28. if value < 1 then
  29. value = 1
  30. end
  31. if self.tbl.money == EMonthType.MonthCardTime then
  32. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit))) * value) .. "天")
  33. else
  34. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit))) * value))
  35. end
  36. GUI:Text_setString(self.view.txt_number, tostring(value))
  37. if self.args.cfgId == EMonthType.MonthCardTime then
  38. GUI:Text_setString(self.view.txt_number, tostring(value) .. "天")
  39. end
  40. end
  41. function this:InputValueChange()
  42. if not GUI:GetUI("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel") then
  43. return
  44. end
  45. local value = tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_number)))
  46. if self.maxNum < value then
  47. value = self.maxNum
  48. end
  49. if value < 1 then
  50. value = 1
  51. end
  52. local price_total = tostring(tonumber(self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit))) * value)
  53. if self.args.cfgId == EMonthType.MonthCardTime then
  54. GUI:Text_setString(self.view.txt_number, tostring(value) .. "天")
  55. else
  56. GUI:Text_setString(self.view.txt_number, tostring(value))
  57. end
  58. if self.tbl.money == EMonthType.MonthCardTime then
  59. GUI:Text_setString(self.view.txt_price_total, price_total .. "天")
  60. else
  61. GUI:Text_setString(self.view.txt_price_total, price_total)
  62. end
  63. end
  64. function this:ClosePanel()
  65. GUI:UIPanel_Close("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel")
  66. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTips/KLUIEquipTipsPanel")
  67. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLIUItemTips/KLUIItemTipsPanel")
  68. GUI:UIPanel_Close("dev/ui/Tips/Panel/KLUIEquipTipsComparsion/KLUIEquipTipsComparsionPanel")
  69. GUI:UIPanel_Close("dev/outui/Archangel/Panel/KLArchangelGrailTips/KLArchangelGrailTipsPanel")
  70. end
  71. ---创建或者刷新界面数据时调用
  72. function this:Refresh()
  73. local itemTbl = SL:GetConfig("cfg_item", self.args.cfgId, "id")
  74. if itemTbl.type == E_ItemType.Equip then
  75. GUI:setPositionX(self.view.sales_panel, 0)
  76. else
  77. GUI:setPositionX(self.view.sales_panel, 45)
  78. end
  79. if self.args.IsNeedOffsetXPos then
  80. GUI:setPositionX(self.view.sales_panel,self.args.IsNeedOffsetXPos )
  81. end
  82. ---@type cfg_stall_column
  83. self.tbl = SL:GetConfig("cfg_stall", self.args.cfgId, "id")
  84. --local src = self:GetCoinIcon(tonumber(tbl.money))
  85. GUI:Image_loadTexture(self.view.img_coin_unit, tostring(self.tbl.money), "Atlas/UIBagPanel.spriteatlas")
  86. --GUI:Image_loadTexture(self.view.img_coin_unit, src, "Atlas/UIBagPanel.spriteatlas")
  87. --GUI:Image_loadTexture(self.view.img_coin_total, src, "Atlas/UIBagPanel.spriteatlas")
  88. GUI:Image_loadTexture(self.view.img_coin_total, tostring(self.tbl.money), "Atlas/UIBagPanel.spriteatlas")
  89. self.maxPrice = self.tbl.topPrice > 0 and self.tbl.topPrice or 99999
  90. self.minPrice = self.tbl.lPrice > 0 and self.tbl.lPrice or 1
  91. GUI:Slider_setMaxPercent(self.view.price_slider, self.maxPrice)
  92. GUI:Slider_setMinPercent(self.view.price_slider, self.minPrice)
  93. GUI:Slider_setPercent(self.view.price_slider, self.tbl.mPrice)
  94. local overlying = itemTbl.overlying
  95. --local bagCount = SL:GetBagItemCount(self.args.cfgId)
  96. local bagCount = self:GetItemCount(self.args.cfgId)
  97. if self.args.cfgId == EMonthType.MonthCardTime then
  98. self.maxNum = InfoManager.monthCardInfo:GetMonthCardDayTime()
  99. elseif self:GetCoin(self.args.cfgId) then
  100. self.maxNum = bagCount
  101. else
  102. self.maxNum = overlying > bagCount and bagCount or overlying
  103. end
  104. local value = self.tbl.mPrice
  105. local num = 1
  106. if self.args.cfgId == EMonthType.MonthCardTime then
  107. GUI:Text_setString(self.view.txt_number, tostring(num) .. "天")
  108. else
  109. GUI:Text_setString(self.view.txt_number, tostring(num))
  110. end
  111. if self.tbl.money == EMonthType.MonthCardTime then
  112. GUI:Text_setString(self.view.txt_price_unit, tostring(value) .. "天")
  113. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value) .. "天")
  114. else
  115. GUI:Text_setString(self.view.txt_price_unit, tostring(value))
  116. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value))
  117. end
  118. -- 直接刷新会偶现数值没有被刷新的问题
  119. SL:ScheduleOnce(0.2, function()
  120. self.init = true
  121. end)
  122. end
  123. function this:PriceChange()
  124. if not self.init then
  125. return
  126. end
  127. if not GUI:GetUI("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel") then
  128. return
  129. end
  130. local value = GUI:Slider_getPercent(self.view.price_slider)
  131. value = math.floor(tonumber(value))
  132. local num = GUI:Text_getString(self.view.txt_number)
  133. if self.tbl.money == EMonthType.MonthCardTime then
  134. GUI:Text_setString(self.view.txt_price_unit, tostring(value) .. "天")
  135. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value) .. "天")
  136. else
  137. GUI:Text_setString(self.view.txt_price_unit, tostring(value))
  138. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value))
  139. end
  140. --local num = GUI:Text_getString(self.view.txt_number)
  141. --GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value))
  142. if self.args.cfgId == EMonthType.MonthCardTime then
  143. GUI:Text_setString(self.view.txt_number, tostring(self:ReduceDay(num)) .. "天")
  144. end
  145. end
  146. function this:ReduceDay(value)
  147. ---去掉字符串末尾@天
  148. local tbl = string.split(value, "天")
  149. return tbl[1]
  150. end
  151. function this:InputPriceValue()
  152. if not self.init then
  153. return
  154. end
  155. if not GUI:GetUI("dev/outui/Trade/Panel/KLSalesTips/KLSalesTipsPanel") then
  156. return
  157. end
  158. local value = self:ReduceDay(GUI:Text_getString(self.view.txt_price_unit))
  159. local num = self:ReduceDay(GUI:Text_getString(self.view.txt_number))
  160. value = tonumber(value)
  161. if self.maxPrice < value then
  162. value = self.maxPrice
  163. end
  164. if value < self.minPrice then
  165. value = self.minPrice
  166. end
  167. if self.tbl.money == EMonthType.MonthCardTime then
  168. GUI:Text_setString(self.view.txt_price_unit, tostring(value) .. "天")
  169. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value) .. "天")
  170. else
  171. GUI:Text_setString(self.view.txt_price_unit, tostring(value))
  172. GUI:Text_setString(self.view.txt_price_total, tostring(tonumber(self:ReduceDay(num)) * value))
  173. end
  174. GUI:Slider_setPercent(self.view.price_slider, value)
  175. end
  176. function this:TipPrivilegePick()
  177. --交易行寄售需要特权才能上架
  178. SL:CommonTipsMessage({ stringTblID = 491, showTips = "", ui = self, sureBtnText = "确定", cancelBtnText = "取消",
  179. callback = this.OpenFirsh })
  180. end
  181. function this:OpenFirsh()
  182. this:ClosePanel()
  183. GUI:UIPanel_Close("dev/outui/Trade/Panel/KLTradeMain/KLTradeMainPanel")
  184. GUI:UIPanel_Open("dev/outui/ShopMain/Panel/KLShopMain/KLShopMainPanel",nil,nil,{2})
  185. end
  186. function this:BtnClick()
  187. --if not InfoManager.monthCardInfo:IsHaveMonthCardRights("stall") then
  188. -- SL:TipMessage({ SL:GetConfig('cfg_string', 278).text, 1, NoticeType.NoticeMid })--"开通月卡后可使用交易行功能",
  189. -- return
  190. --end
  191. --钻石特权卡解锁交易行上架功能
  192. if not PrivilegeCardManager.isSalesAdd() then
  193. self:TipPrivilegePick()
  194. return
  195. end
  196. local num = GUI:Text_getString(self.view.txt_number)
  197. local price = GUI:Slider_getPercent(self.view.price_slider)
  198. price = math.floor(tonumber(price))
  199. local data = { itemcfgid = tostring(self.args.cfgId),
  200. bagindex = tostring(self.args.index and self.args.index or 0),
  201. count = tostring(self:ReduceDay(num)),
  202. both = tostring(1),
  203. listingprice = tostring(price),
  204. totalprice = tostring(tonumber(price) * tonumber(self:ReduceDay(num)))}
  205. if self.args.cfgId == EMonthType.MonthCardTime then
  206. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_UP_SHELF_MONTHCARD, data)
  207. else
  208. data.id = tostring(self.args.id)
  209. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_TRADE_LISTING_GOODS, data)
  210. end
  211. self:ClosePanel()
  212. end
  213. function this:GetCoinIcon(coinType)
  214. if coinType == 10010001 then
  215. return "img_bag_01"
  216. elseif coinType == 10020001 then
  217. return "img_bag_02"
  218. elseif coinType == 10030001 then
  219. return "img_bag_03"
  220. elseif coinType == 10040001 then
  221. return "img_bag_04"
  222. end
  223. end
  224. function this:GetCoin(coinType)
  225. if coinType == 10010001 or coinType == 10020001 or coinType == 10030001 or coinType == 10040001 then
  226. return true
  227. end
  228. return false
  229. end
  230. function this:Close()
  231. end
  232. function this:GetItemCount(cfgId)
  233. if table.contains(MUEResourceType,cfgId) then
  234. return SL:GetBagItemCount(self.args.cfgId)
  235. end
  236. local bagCount = 0
  237. for page, v in pairs(SL:GetMetaValue("BAG_DATA")) do
  238. for i, item in pairs(v) do
  239. if item.bind == false then
  240. if item.cfgId == cfgId then
  241. bagCount = bagCount + item.count
  242. end
  243. end
  244. end
  245. end
  246. return bagCount
  247. end
  248. return this