KLTransferRingItem.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. ---@class KLTransferRingItem:UIKmlLuaPanelBase
  2. ---@field view KLTransferRingItemView
  3. ---@field baseUI KLTransferRingPanel
  4. ---@field ringId number
  5. local KLTransferRingItem = class(UIKmlLuaPanelBase)
  6. local this = KLTransferRingItem
  7. ---创建时调用一次
  8. function this:Init()
  9. self.lastClick = 0
  10. end
  11. ---创建或者刷新界面数据时调用
  12. function this:Refresh()
  13. end
  14. ---@param dt RingData
  15. function this:UpdateUI(dt, isSelect)
  16. self.ringId = dt.itemId
  17. GUI:Item_setItemId(self.view.Item, dt.itemId)
  18. ---@type cfg_item_column
  19. local itemTbl = SL:GetConfig("cfg_item", dt.itemId)
  20. GUI:Text_setString(self.view.TxtName, itemTbl.name)
  21. if dt.time == -1 then
  22. GUI:SetActive(self.view.TxtTime, true)
  23. GUI:SetActive(self.view.TimeDown, false)
  24. GUI:Text_setString(self.view.TxtTime, "永久生效")
  25. else
  26. GUI:SetActive(self.view.TimeDown, true)
  27. GUI:SetActive(self.view.TxtTime, false)
  28. local svTime = SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME)
  29. local countdown = dt.time - svTime / 1000
  30. countdown = math.floor(countdown)
  31. GUI:SetControl_time(self.view.TimeDown, countdown)
  32. end
  33. if isSelect then
  34. self:RingItemOnClick()
  35. else
  36. self:SetIsSelect(false)
  37. end
  38. end
  39. ---注册UI事件和服务器消息
  40. function this:RegistEvents()
  41. GUI:AddOnClickEvent(self.view.Bg, self, self.RingItemOnClick)
  42. GUI:AddOnClickEvent(self.view.Item, self, self.OnItemClick)
  43. SL:RegisterLUAEvent(TRANSFER_RING_SELECT_ITEM, self.OnCheckItemSelect, self)
  44. end
  45. function this:OnItemClick()
  46. return SL:OpenTips(nil, self.ringId)
  47. end
  48. ---@param cfgId number
  49. function this:OnCheckItemSelect(_, cfgId)
  50. if not cfgId or cfgId ~= self.ringId then return end
  51. self:RingItemOnClick()
  52. end
  53. function this:RingItemOnClick()
  54. if Time.frameCount - self.lastClick < 3 then
  55. return
  56. end
  57. self.lastClick = Time.frameCount
  58. return self.baseUI:RingItemOnClick(self, self.ringId)
  59. end
  60. function this:SetIsSelect(isSelect)
  61. local spName = isSelect and "tab_title_selected" or "tab_title_unselect"
  62. GUI:Image_loadTexture(self.view.SpState, spName, "Atlas/AppearGroup.spriteatlas")
  63. end
  64. function this:Close()
  65. end
  66. return this