NewBattleChatPart.lua 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. local NewBattleChatPart = class("NewBattleChatPart")
  2. local UIChatRoot = require("UIChat/UIChatRoot")
  3. local uIChatRootWorld
  4. local chatDisplayDurationTime
  5. local chatHideTimer
  6. local pageToggleData = {}
  7. function NewBattleChatPart:ctor()
  8. self.curChatType = nil
  9. self.uiview = nil
  10. self.ismainBattle = nil
  11. end
  12. function NewBattleChatPart:HandleChatToggleBtns(type)
  13. if type == 1 then
  14. self.viewLua.togworld.toggle.isOn = true
  15. self.viewLua.togsystem.toggle.isOn = false
  16. self.viewLua.togwarlog.toggle.isOn = false
  17. elseif type == 2 then
  18. self.viewLua.togworld.toggle.isOn = false
  19. self.viewLua.togsystem.toggle.isOn = true
  20. self.viewLua.togwarlog.toggle.isOn = false
  21. elseif type == 3 then
  22. self.viewLua.togworld.toggle.isOn = false
  23. self.viewLua.togsystem.toggle.isOn = false
  24. self.viewLua.togwarlog.toggle.isOn = true
  25. end
  26. end
  27. function NewBattleChatPart:GetChatChannelType()
  28. return ManagerContainer.DataMgr.ChatData:GetChatChannelType()
  29. end
  30. function NewBattleChatPart:SetChatChannelType(type)
  31. ManagerContainer.DataMgr.ChatData:SetChatChannelType(type)
  32. end
  33. function NewBattleChatPart:InitGo(host,uiGo,ismainBattle,btnchat)
  34. self.uiview = host
  35. self.uiData = host.uiData
  36. self.uiBase = host.uiBase
  37. self.viewLua = CommonUtil.BindGridViewItem2Lua(self.uiview, "NewBattleChat", uiGo)
  38. self.viewLua.transform:SetAsFirstSibling()
  39. self.uieventhandler = self.viewLua.transform:GetComponent(Enum.TypeInfo.UIEventHandler)
  40. if uIChatRootWorld == nil then
  41. uIChatRootWorld = UIChatRoot:new()
  42. end
  43. local curChatType = self:GetChatChannelType()
  44. uIChatRootWorld:Init(self, curChatType, self.viewLua.chatView, nil, self.RefreshChatBg,true)
  45. self:SetChatChannelType(curChatType)
  46. if not ismainBattle then
  47. self.ismainBattle = ismainBattle
  48. self.viewLua.togwarlog:SetActive(false)
  49. end
  50. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPrivateChatBtn)
  51. end
  52. function NewBattleChatPart:RefreshChatBg()
  53. if not self.uiview or not self.uiview.uiBase or not self.uiBase then
  54. return
  55. end
  56. if not chatDisplayDurationTime then
  57. chatDisplayDurationTime = GlobalConfig.Instance:GetConfigIntValue(229)*1000
  58. end
  59. if nil ~= self.viewLua.chltogBg then
  60. DG.Tweening.DOTween.Kill(self.viewLua.chltogBg.canvasGroup)
  61. self.viewLua.chltogBg.canvasGroup:DOFade(1, 0)
  62. end
  63. --self.chltogBg:SetActive(true)
  64. if chatHideTimer then
  65. ManagerContainer.LuaTimerMgr:RemoveTimer(chatHideTimer)
  66. end
  67. chatHideTimer = ManagerContainer.LuaTimerMgr:AddTimer(chatDisplayDurationTime, 1, self, self.HideChatBg, nil)
  68. end
  69. function NewBattleChatPart:HideChatBg()
  70. if not self.uiview or not self.uiBase then
  71. return
  72. end
  73. self.viewLua.chltogBg.canvasGroup:DOFade(0, 0.5)
  74. end
  75. function NewBattleChatPart:AddUIEventListener()
  76. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.viewLua.chltogBg.toggleGroup, Enum.ChatChannel.World, self.OnValueChangedToggle)
  77. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiview.uiData.name, UIEventNames.WORLD_CHAT_UI_CLOSE, self, self.WorldChatUIClosed)
  78. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiview.uiData.name, UIEventNames.EID_Add_New_BattleLog, self,self.OnAddNewBattleLog)
  79. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiview.uiData.name, UIEventNames.EID_CLEAR_New_BattleLog, self,self.ClearBattleLog)
  80. if self.uieventhandler then
  81. self.uieventhandler:RemoveListener();
  82. self.uiBase:AddUIEventHandlerClickListener(self.uieventhandler, function (go)
  83. if not go or go.transform:IsChildOf(self.viewLua.transform) then
  84. return
  85. end
  86. if self.viewLua.funcbg then
  87. self.viewLua.funcbg:SetActive(false)
  88. end
  89. end)
  90. end
  91. self.uiview.uiBase:AddButtonEventListener(self.viewLua.btnChat.button, self, self.OpenWorldChat)
  92. self.viewLua.chatView.uIEventTriggerListener.onClick = function()
  93. self:RefreshChatBg()
  94. end
  95. self.viewLua.chatView.uIEventTriggerListener.onPointerUp = function()
  96. self:RefreshChatBg()
  97. end
  98. self.viewLua.battleLogView.uIEventTriggerListener.onClick = function()
  99. self:RefreshChatBg()
  100. end
  101. self.viewLua.battleLogView.uIEventTriggerListener.onPointerUp = function()
  102. self:RefreshChatBg()
  103. end
  104. uIChatRootWorld:AddUIEventListener()
  105. end
  106. function NewBattleChatPart:ClearBattleLog()
  107. if not self.uiview or not self.uiBase then
  108. return
  109. end
  110. self.logList = nil
  111. if self.bInitBattleLog then
  112. self.viewLua.battleLogView.loopVerticalScrollRect:ClearCells()
  113. end
  114. end
  115. function NewBattleChatPart:OnAddNewBattleLog()
  116. if not self.uiview or not self.uiBase then
  117. return
  118. end
  119. self.logList = LuaBattleBridge.GetBattleLog()
  120. if self.viewLua.battleLogView.loopVerticalScrollRect.ItemTypeStart >= 185 then
  121. self.viewLua.battleLogView.loopVerticalScrollRect:RefreshCellsData()
  122. else
  123. self.viewLua.battleLogView.loopVerticalScrollRect.totalCount = self.logList.Count
  124. local nEndItem = self.viewLua.battleLogView.loopVerticalScrollRect.ItemTypeEnd
  125. if self.logList.Count <= nEndItem + 2 then
  126. self.viewLua.battleLogView.loopVerticalScrollRect:MoveTo(self.logList.Count-1)
  127. end
  128. end
  129. end
  130. function NewBattleChatPart:OpenWorldChat()
  131. if not self.uiview or not self.uiBase then
  132. return
  133. end
  134. self.viewLua.chatView:SetActive(false)
  135. if ManagerContainer.LuaBattleMgr:GetBossFightState() then
  136. self.viewLua.battleLogView:SetActive(false)
  137. end
  138. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChat)
  139. end
  140. function NewBattleChatPart:WorldChatUIClosed()
  141. if not self.uiview or not self.uiBase then
  142. return
  143. end
  144. self.viewLua.chatView:SetActive(true)
  145. if uIChatRootWorld then
  146. local curChatType = self:GetChatChannelType()
  147. self:SetToggleGroupStatus(curChatType)
  148. self:OnValueChangedToggle(curChatType, true)
  149. end
  150. self.viewLua.battleLogView:SetActive(false)
  151. end
  152. function NewBattleChatPart:SetToggleGroupStatus(chatType)
  153. local toggleGroup = self.viewLua.chltogBg.toggleGroup
  154. self.viewLua.togworld.toggle.isOn = (chatType == 1)
  155. self.viewLua.togguild.toggle.isOn = (chatType == 2)
  156. self.viewLua.togsystem.toggle.isOn = (chatType == 3)
  157. self.viewLua.togwarlog.toggle.isOn = (chatType == 4)
  158. pageToggleData.toggleDefaultIndex = chatType
  159. end
  160. function NewBattleChatPart:OnValueChangedToggle(idx, dontDisplay)
  161. if not self.uiview or not self.uiBase then
  162. return
  163. end
  164. local forceRefresh = true
  165. self.viewLua.btnChat:SetActive(pageToggleData.toggleDefaultIndex ~= Enum.ChatChannel.BattleRecord)
  166. if pageToggleData.toggleDefaultIndex == Enum.ChatChannel.World then
  167. self.viewLua.chatView:SetActive(true)
  168. self.viewLua.battleLogView:SetActive(false)
  169. uIChatRootWorld:SetChannelType(Enum.ChatChannel.World, forceRefresh)
  170. elseif pageToggleData.toggleDefaultIndex == Enum.ChatChannel.Guild then
  171. local errorCode = ManagerContainer.DataMgr.GuildDataMgr:GetGuildDataStateErrorCode()
  172. if errorCode then
  173. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  174. self:SetToggleGroupStatus(self:GetChatChannelType())
  175. return
  176. end
  177. self.viewLua.chatView:SetActive(true)
  178. self.viewLua.battleLogView:SetActive(false)
  179. uIChatRootWorld:SetChannelType(Enum.ChatChannel.Guild, forceRefresh)
  180. elseif pageToggleData.toggleDefaultIndex == Enum.ChatChannel.System then
  181. self.viewLua.chatView:SetActive(true)
  182. self.viewLua.battleLogView:SetActive(false)
  183. uIChatRootWorld:SetChannelType(Enum.ChatChannel.System, forceRefresh)
  184. elseif pageToggleData.toggleDefaultIndex == Enum.ChatChannel.BattleRecord then
  185. self.viewLua.chatView:SetActive(false)
  186. self.viewLua.battleLogView:SetActive(true)
  187. self:ShowBattleLog()
  188. end
  189. self:SetChatChannelType(pageToggleData.toggleDefaultIndex)
  190. if not dontDisplay then
  191. self:RefreshChatBg()
  192. end
  193. --end
  194. end
  195. function NewBattleChatPart:ShowBattleLog()
  196. if not self.uiview or not self.uiBase then
  197. return
  198. end
  199. if self.bInitBattleLog then
  200. return
  201. end
  202. self.bInitBattleLog = true
  203. self.viewLua.battleLogView.loopVerticalScrollRect:SetUpdateCellCallback(nil,nil)
  204. self.viewLua.battleLogView.loopVerticalScrollRect:ClearCells()
  205. self.logList = LuaBattleBridge.GetBattleLog()
  206. if self.logList ~= nil then
  207. CommonUtil.LoopGridViewEleCreateWithList(self,
  208. self.viewLua.battleLogView.loopVerticalScrollRect,
  209. self.viewLua.battleLogView.content.verticalLayoutGroup,self.logList,0,self,self.OnSetBattleLogData,false,nil,0)
  210. self.viewLua.battleLogView.loopVerticalScrollRect:MoveTo(self.logList.Count-1);
  211. end
  212. end
  213. function NewBattleChatPart:OnSetBattleLogData(itemLua,idx)
  214. if not self.uiview or not self.uiview.uiBase or not self.uiBase then
  215. return
  216. end
  217. if idx < self.logList.Count and idx>=0 then
  218. itemLua.text.text.text = self.logList[idx]
  219. end
  220. end
  221. function NewBattleChatPart:SetCanvasOrder(order)
  222. if not self.uiview or not self.uiview.uiBase or not self.uiBase then
  223. return
  224. end
  225. self.viewLua.canvas.sortingOrder = order
  226. end
  227. function NewBattleChatPart:Show()
  228. uIChatRootWorld:Init(self, curChatType, self.viewLua.chatView, nil, self.RefreshChatBg,true)
  229. self.viewLua:SetActive(true)
  230. end
  231. function NewBattleChatPart:Dispose()
  232. pageToggleData.toggleList = nil;
  233. if chatHideTimer then
  234. ManagerContainer.LuaTimerMgr:RemoveTimer(chatHideTimer)
  235. end
  236. chatHideTimer = nil
  237. self.uieventhandler:RemoveListener();
  238. self.uieventhandler = nil
  239. self.viewLua.chatView.uIEventTriggerListener.onClick = nil
  240. self.viewLua.chatView.uIEventTriggerListener.onPointerUp = nil
  241. self.viewLua.battleLogView.uIEventTriggerListener.onClick = nil
  242. self.viewLua.battleLogView.uIEventTriggerListener.onPointerUp = nil
  243. ManagerContainer.DataMgr.ChatData:SetChatChannelType(Enum.ChatDataType.World)
  244. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIChat)
  245. ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIPrivateChatBtn)
  246. end
  247. return NewBattleChatPart