源战役客户端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

154 rader
4.1 KiB

4 veckor sedan
  1. MailItem = MailItem or BaseClass(BaseItem)
  2. function MailItem:__init()
  3. self.base_file = "sociality"
  4. self.layout_file = "MailItem"
  5. self.is_delay_callback = true
  6. self.model = MailModel:getInstance()
  7. self.data = nil
  8. self.event_id_list = {}
  9. self.need_refreshData = false
  10. self.need_refreshClick = false
  11. -- self.use_local_view = true
  12. self:Load()
  13. end
  14. function MailItem:Load_callback()
  15. self:LoadSuccess()
  16. self:InitEvent()
  17. if self.need_refreshData then
  18. self:SetData(self.data)
  19. end
  20. if self.need_refreshClick then
  21. self:OnClickHandler(self.click_id)
  22. end
  23. end
  24. function MailItem:LoadSuccess()
  25. self.nodes = {
  26. "mailTitle:tmp",
  27. "mailTime:tmp",
  28. "attachmentIcon:img",
  29. "mailHead:img",
  30. "selectBg:obj",
  31. "redDot:obj",
  32. "importantFlag:obj",
  33. }
  34. self:GetChildren(self.nodes)
  35. end
  36. function MailItem:InitEvent()
  37. local function onBtnClickHandler(target)
  38. if self.data then
  39. if target == self.gameObject then--点击邮件Item
  40. self.model:Fire(MailEvent.CLICK_MAIL_ITEM, self.data.mail_id)
  41. end
  42. end
  43. end
  44. AddClickEvent(self.gameObject, onBtnClickHandler)
  45. --绑定点击item的方法
  46. local click_fun = function(mail_id)
  47. self:OnClickHandler(mail_id)
  48. end
  49. table.insert(self.event_id_list, self.model:Bind(MailEvent.CLICK_MAIL_ITEM, click_fun))
  50. --绑定更新item显示的方法
  51. local update_fun = function(new_data)
  52. if self.data and self.data.mail_id == new_data.mail_id then
  53. self:SetData(new_data)
  54. self.model:Fire(MailEvent.GET_MAIL_INFORM)
  55. end
  56. end
  57. table.insert(self.event_id_list, self.model:Bind(MailEvent.UPDATE_MAIL_ITEM, update_fun))
  58. end
  59. function MailItem:OnClickHandler(click_id)
  60. self.click_id = click_id
  61. if self.is_loaded then
  62. if self.data then
  63. if self.data.mail_id == self.click_id then
  64. self:SetSelect(true)
  65. self.model.now_select_mail = self.data
  66. self.model:Fire(MailEvent.GET_MAIL_DETAIL, self.data.mail_id) --通过邮件ID请求邮件详细信息
  67. else
  68. self:SetSelect(false)
  69. end
  70. end
  71. else
  72. self.need_refreshClick = true
  73. end
  74. end
  75. function MailItem:SetSelect(bool)
  76. if self.selectBg_obj then
  77. self.selectBg_obj:SetActive(bool)
  78. end
  79. end
  80. function MailItem:SetData(data)
  81. self.data = data
  82. if not self.data then return end
  83. if self.is_loaded then
  84. local title_str = self.data.title
  85. if utf8len(title_str) > 9 then
  86. title_str = SubStringUTF8(title_str, 1, 8) .. "..."
  87. end
  88. self.importantFlag_obj:SetActive(self.data.important == 1)
  89. self.mailTitle_tmp.text = title_str
  90. self.mailTime_tmp.text = TimeUtil:timeConversion(self.data.time, "mm-dd hh:MM:ss")
  91. --邮件类型图标
  92. local mail_type = self.model:GetMailType(self.data.mail_id)
  93. if mail_type == 5 then
  94. lua_resM:setImageSprite(self,self.mailHead_img,"sociality_asset","sociality_mail_head_2")
  95. else
  96. lua_resM:setImageSprite(self,self.mailHead_img,"sociality_asset","sociality_mail_head_1")
  97. end
  98. --已读、未读、已领取、未领取
  99. if self.data.state == 3 then --附件已领取
  100. lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_reward_open_pointfilter")
  101. else
  102. if self.data.is_attach == 0 and self.data.state ~= 3 then --无附件
  103. if self.data.state == 1 then --已读
  104. lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_read_pointfilter")
  105. else
  106. lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_unread_pointfilter")
  107. end
  108. elseif self.data.is_attach == 1 then --有附件
  109. lua_resM:setImageSprite(self,self.attachmentIcon_img,"sociality_asset","sociality_mail_reward_unopen_pointfilter")
  110. end
  111. end
  112. if self.data.state == 2 or (self.data.is_attach == 1 and self.data ~= 3) then
  113. self.redDot_obj:SetActive(true)
  114. else
  115. self.redDot_obj:SetActive(false)
  116. end
  117. self.gameObject:SetActive(true)
  118. else
  119. self.need_refreshData = true
  120. end
  121. end
  122. --清除item数据
  123. function MailItem:Hide()
  124. if self.is_loaded then
  125. self.selectBg_obj:SetActive(false)
  126. self.data = nil
  127. -- self:SetVisible(false)
  128. end
  129. end
  130. function MailItem:__delete()
  131. for i, v in ipairs(self.event_id_list) do
  132. self.model:UnBind(v)
  133. end
  134. self.event_id_list = {}
  135. end