UINotifyTipsView.lua 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. local UINotifyTipsView = require("UINotifyTips/UINotifyTipsView_Generate")
  2. local NotifyItemCtr = require("Common/NotifyItemCtr")
  3. function UINotifyTipsView:OnAwake(data)
  4. self.controller = require("UINotifyTips/UINotifyTipsCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UINotifyTipsView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Show_Notices,self,self.OnShowNotices);
  10. end
  11. function UINotifyTipsView:FillContent(data, uiBase)
  12. self.uiBase = uiBase
  13. local gameObject = self.uiBase:GetRoot()
  14. if gameObject ~= nil then
  15. self.gameObject = gameObject
  16. self.transform = gameObject.transform
  17. end
  18. self:InitGenerate(self.transform, data)
  19. self:Init()
  20. end
  21. function UINotifyTipsView:Init()
  22. self.notices = {}
  23. self.lastShowNotifyData = nil
  24. self.lastShowItem = nil
  25. if not ManagerContainer.LuaGameMgr.serverData.id then
  26. LogError('[xyh]..公告面板没有serverid')
  27. return
  28. end
  29. --LogError('serverId:'..tostring(ManagerContainer.LuaGameMgr.serverData.id))
  30. --local url = PlatformPack.NOTIFY_URL .. "?serverid=" .. ManagerContainer.LuaGameMgr.serverData.id
  31. --url = url .. '&timesamp=' .. tostring(os.time())
  32. --local platform = ManagerContainer.LuaGameMgr.platform
  33. --if platform and platform ~= '' then
  34. -- url = url .. '&platform=' .. tostring(platform)
  35. --end
  36. --local subplatform = ManagerContainer.LuaGameMgr.channelName
  37. --if subplatform and subplatform ~= '' then
  38. -- url = url .. '&sub_platform=' .. tostring(subplatform)
  39. --end
  40. local url = PlatformPack.NOTIFY_URL .. "Notice"
  41. --local serverId = ManagerContainer.LuaGameMgr.serverData.id
  42. -- if serverId and serverId > 0 then
  43. -- url = url.. "_"..serverId
  44. -- end
  45. url = url.."_List.json"
  46. --LogError("******noticesJsonNew************"..url)
  47. --url = "http://192.168.21.6:8060/res/AndroidRes/Notice.json"
  48. local OnRequestHttpCb = function(noticeInfo)
  49. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Show_Notices,noticeInfo)
  50. end
  51. ManagerContainer.LuaGameMgr:RequestHttpServer(url,OnRequestHttpCb)
  52. end
  53. function UINotifyTipsView:OnShowNotices(noticeInfo)
  54. local noticesJson
  55. -- local noticesJsonNew
  56. -- noticesJsonNew = self:ParseNotice(noticeInfo)
  57. -- LogError("******noticesJsonNew************"..JSON:decode(noticeInfo))
  58. -- LogError("******noticesJsonNew************"..noticeInfo.title)
  59. self.notices={}
  60. local ok, errors = RO_XPCALL(function() noticesJson = JSON:decode(noticeInfo) end, debug.traceback)
  61. if ok then
  62. for k,p in pairs(noticesJson) do
  63. self:AddNotices(p)
  64. end
  65. --self:AddNotices(noticesJson)
  66. else
  67. local notice = {}
  68. notice.NoticeTitle = "";
  69. notice.LimitedTimeLabel = "";
  70. notice.NoticeBeginTime = "";
  71. notice.NoticeEndTime = "";
  72. notice.NoticeTxt = string.formatbykey("NoticeAnomaly");
  73. notice._showing = true
  74. self.notices[#self.notices+1] = notice
  75. LogError("[Notice].."..errors)
  76. end
  77. self:SetListData()
  78. end
  79. function UINotifyTipsView:AddNotices(noticesJson)
  80. local notice = self:ParseNotice(noticesJson)
  81. if notice ~= nil then
  82. if notice.top == 1 then
  83. table.insert(self.notices, 1, notice)
  84. else
  85. self.notices[#self.notices + 1] = notice
  86. end
  87. end
  88. end
  89. function UINotifyTipsView:SetListData()
  90. self.scrollViewNotify.loopVerticalScrollRect:ClearCells()
  91. if self.notices ~= nil and #self.notices > 0 then
  92. self.notices[1]._showing = true
  93. CommonUtil.LoopGridViewEleCreateNew(self,
  94. self.scrollViewNotify.loopVerticalScrollRect,
  95. self.scrollViewNotify.content.verticalLayoutGroup,
  96. self.notices,
  97. 0,
  98. self, self.SetNoticeItem);
  99. self.scrollViewNotify.loopVerticalScrollRect.velocity = Vector2.zero;
  100. local _position = self.scrollViewNotify.content.transform.localPosition;
  101. _position.y = 0;
  102. self.scrollViewNotify.content.transform.localPosition = _position;
  103. end
  104. end
  105. function UINotifyTipsView:SetNoticeItem(itemLua, idx, itemData)
  106. if itemData._showing then
  107. self.lastShowItem = itemLua
  108. self.lastShowNotifyData = itemData
  109. end
  110. NotifyItemCtr:SetData(self, itemLua, itemData, self.OnOpenNoticeCallback,self.OnHideNoticeCallback);
  111. end
  112. function UINotifyTipsView:OnOpenNoticeCallback(_item,itemData)
  113. local hideTitle = ""
  114. if self.lastShowNotifyData ~= nil then
  115. self.lastShowNotifyData._showing = false;
  116. hideTitle = self.lastShowNotifyData.NoticeTitle
  117. end
  118. self.lastShowNotifyData = itemData
  119. local oldItem = self.lastShowItem
  120. self.lastShowItem = _item
  121. return oldItem,hideTitle;
  122. end
  123. function UINotifyTipsView:OnHideNoticeCallback(itemData)
  124. self.lastShowItem = nil
  125. end
  126. function UINotifyTipsView:ParseNotice(noticeJson)
  127. if noticeJson == nil then
  128. return nil
  129. end
  130. local notice = {};
  131. notice.NoticeTitle = noticeJson.title;
  132. notice.LimitedTimeLabel = noticeJson.timeLabel;
  133. notice.NoticeBeginTime = noticeJson.beginTime;
  134. notice.NoticeEndTime = noticeJson.endTime;
  135. notice.NoticeTxt = noticeJson.text;
  136. notice.top = noticeJson.top
  137. if noticeJson.top == 1 then
  138. notice._showing = true
  139. end
  140. return notice
  141. end
  142. function UINotifyTipsView:RemoveEventListener()
  143. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  144. end
  145. function UINotifyTipsView:AddUIEventListener()
  146. self.uiBase:AddButtonEventListener(self.BtnClose.button, self, self.OnCloseBtnClick)
  147. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnCloseBtnClick);
  148. end
  149. function UINotifyTipsView:OnHide()
  150. end
  151. function UINotifyTipsView:OnShow(data)
  152. self.controller:SetData(data)
  153. self:Init()
  154. end
  155. function UINotifyTipsView:OnClose()
  156. end
  157. function UINotifyTipsView:OnDispose()
  158. self.scrollViewNotify.loopVerticalScrollRect:ClearCells()
  159. end
  160. --关闭按钮
  161. function UINotifyTipsView:OnCloseBtnClick()
  162. self:UIClose()
  163. end
  164. return UINotifyTipsView