KLUIMasterTalentExchangeExpPanel.lua 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. ---@class KLUIMasterTalentExchangeExpPanel:UIKmlLuaPanelBase
  2. ---@field view KLUIMasterTalentExchangeExpPanelView
  3. ---@field DataList table<number,{costID:number,costCount:number,exchangeID:number,exchangeCount:number}>
  4. local KLUIMasterTalentExchangeExpPanel = class(UIKmlLuaPanelBase)
  5. local this =KLUIMasterTalentExchangeExpPanel
  6. ---创建时调用一次
  7. function this:Init()
  8. GUI:SetImageNativeSize(self.view.title)
  9. self.DataList = {}
  10. self.exchangeCount = 0
  11. self.maxNum = 0
  12. GUI:DataListInitData(self.view.DataList,function()
  13. return self:DatalistItemCountFunc()
  14. end,function(realIndex)
  15. return self:DatalistItemGetFunc(realIndex)
  16. end,function(realIndex, kmlcontrol)
  17. return self:DatalistItemInitFunc(realIndex, kmlcontrol)
  18. end, function(realIndex, kmlcontrol)
  19. return self:DatalistItemUpdateFunc(realIndex, kmlcontrol)
  20. end)
  21. if self.args and self.args.type then
  22. if self.args.type == EMasterTalentType.CAREER then
  23. self:GetCfgData(4003)
  24. elseif self.args.type == EMasterTalentType.SKILL then
  25. self:GetCfgData(4008)
  26. end
  27. end
  28. if self.args and self.args.maxNum then
  29. self.maxNum = self.args.maxNum
  30. end
  31. if self.args and self.args.count then
  32. self.exchangeCount = self.maxNum - self.args.count
  33. end
  34. self:SetCountText()
  35. end
  36. function this:SetCountText()
  37. GUI:Text_setString(self.view.Text,"今日剩余兑换次数:<color=#1add1f>"..self.exchangeCount.."</color>/"..self.maxNum)
  38. end
  39. ---获取兑换经验的数据
  40. function this:GetCfgData(id)
  41. ---@type cfg_global_column
  42. local cfg = SL:GetConfig("cfg_global",id)
  43. local strList = string.split(cfg.value,'|')
  44. for i, v in ipairs(strList) do
  45. local infoArr = string.split(v,'#')
  46. local data =
  47. {
  48. costID = infoArr[1],
  49. costCount = infoArr[2],
  50. exchangeID = infoArr[3],
  51. exchangeCount = infoArr[4],
  52. }
  53. table.insert(self.DataList,data)
  54. end
  55. GUI:DataListUpdateData(self.view.DataList)
  56. end
  57. --------------------------------兑换经验-------------------------------------------------------
  58. function this:DatalistItemCountFunc()
  59. return #self.DataList
  60. end
  61. function this:DatalistItemGetFunc(realIndex)
  62. end
  63. function this:DatalistItemInitFunc(realIndex, kmlcontrol)
  64. end
  65. function this:DatalistItemUpdateFunc(realIndex, kmlcontrol)
  66. local data = self.DataList[realIndex + 1]
  67. local _consumeItem = GUI:GetChildControl(self.view.DataList,realIndex,'ConsumeItem')
  68. local _consumeText = GUI:GetChildControl(self.view.DataList,realIndex,'ConsumeText')
  69. local _exchangeItem = GUI:GetChildControl(self.view.DataList,realIndex,'ExchangeItem')
  70. local _exchangeText = GUI:GetChildControl(self.view.DataList,realIndex,'ExchangeText')
  71. local _exchangeButton = GUI:GetChildControl(self.view.DataList,realIndex,'ExchangeButton')
  72. GUI:Item_setItemId(_consumeItem,data.costID)
  73. GUI:Item_setItemId(_exchangeItem,data.exchangeID)
  74. GUI:Text_setString(_consumeText,data.costCount)
  75. GUI:Text_setString(_exchangeText,data.exchangeCount)
  76. GUI:AddOnClickEvent(_exchangeButton,self,self.OnClickExchange,
  77. {
  78. costID = tonumber(data.costID),
  79. exchangeID = tonumber(data.exchangeID),
  80. costCount = tonumber(data.costCount),
  81. exchangeCount = tonumber(data.exchangeCount),
  82. })
  83. GUI:AddOnClickEvent(_consumeItem, self, function()
  84. SL:OpenTips(nil, tonumber(data.costID))
  85. end)
  86. GUI:AddOnClickEvent(_exchangeItem, self, function()
  87. SL:OpenTips(nil, tonumber(data.exchangeID))
  88. end)
  89. end
  90. ---@param control UIKmlLuaControl
  91. ---@param eventData {costID:number,costCount:number,exchangeID:number,exchangeCount:number}
  92. function this:OnClickExchange(control, eventData)
  93. if self.exchangeCount <= 0 then
  94. SL:TipMessage( SL:GetConfig('cfg_string',273).text, 1, NoticeType.NoticeMid )--"兑换次数不足",
  95. return
  96. end
  97. if SL:GetBagItemCount(eventData.costID) < eventData.costCount then
  98. SL:TipMessage( SL:GetConfig('cfg_string',269).text,1, NoticeType.NoticeMid )--"货币不足",
  99. return
  100. end
  101. local costList = {}
  102. local exchangeList = {}
  103. table.insert(costList,{costItemCfgId = eventData.costID,costItemCount = eventData.costCount})
  104. table.insert(exchangeList,{itemCfgId = eventData.exchangeID,itemCount = eventData.exchangeCount})
  105. SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_EXCHANGE_MASTER_EXP,{type = self.args.type,cost = costList,award = exchangeList})
  106. end
  107. ------------------------------------------------------------------------------------------------
  108. ---注册UI事件和服务器消息
  109. function this:RegistEvents()
  110. GUI:AddOnClickEvent(self.view.CloseButton,self,self.OnClickCloseButton)
  111. GUI:AddOnClickEvent(self.view.MaskCloseButton,self,self.OnClickCloseButton)
  112. SL:RegisterLUAEvent(LUA_EVENT_MONEYCHANGE, self.CoinInfo_Change,self)
  113. SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_EXCHANGE_MASTER_EXP,self.RES_EXCHANGE_MASTER_EXP,self)
  114. end
  115. function this:RES_EXCHANGE_MASTER_EXP(_,message)
  116. if message then
  117. self.exchangeCount = self.maxNum - message["exchangedExpTimes"]
  118. self:SetCountText()
  119. end
  120. end
  121. ---创建或者刷新界面数据时调用
  122. function this:Refresh()
  123. end
  124. function this:CoinInfo_Change(_,message)
  125. GUI:DataListUpdateData(self.view.DataList)
  126. end
  127. function this:OnClickCloseButton()
  128. GUI:UIPanel_Close("dev/outui/MasterTalent/Panel/KLUIMasterTalentExchangeExp/KLUIMasterTalentExchangeExpPanel")
  129. end
  130. function this:Close()
  131. end
  132. return this