UIHundredDojoGuildRankView.lua 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. local UIHundredDojoGuildRankView = require("UIHundredDojo/UIHundredDojoGuildRankView_Generate")
  2. function UIHundredDojoGuildRankView:OnAwake(data)
  3. self.controller = require("UIHundredDojo/UIHundredDojoGuildRankCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIHundredDojoGuildRankView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_CP_RANK_LIST_CHANGED, self, self.OnGuildCPRankListChanged)
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_ENTER_SUCCESS, self, self.OnGuildEnterSuccess)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_CREATE_SUCCESS, self, self.OnGuildCreateSuccess)
  11. end
  12. function UIHundredDojoGuildRankView:FillContent(data, uiBase)
  13. self.uiBase = uiBase
  14. local gameObject = self.uiBase:GetRoot()
  15. if gameObject ~= nil then
  16. self.gameObject = gameObject
  17. self.transform = gameObject.transform
  18. end
  19. self:InitGenerate(self.transform, data)
  20. self:Init()
  21. end
  22. function UIHundredDojoGuildRankView:Init()
  23. self.scrollView.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  24. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  25. end, nil)
  26. self.scrollView.loopGridView.ScrollRect.enabled = false
  27. self:RefreshListView()
  28. self:RefreshSelfView()
  29. local errorCode = self.controller:SendGuildWarCPRankReq()
  30. if errorCode ~= 0 then
  31. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  32. end
  33. end
  34. function UIHundredDojoGuildRankView:RemoveEventListener()
  35. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  36. end
  37. function UIHundredDojoGuildRankView:AddUIEventListener()
  38. self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickCloseBtn)
  39. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  40. end
  41. function UIHundredDojoGuildRankView:OnHide()
  42. end
  43. function UIHundredDojoGuildRankView:OnShow(data)
  44. self.controller:SetData(data)
  45. end
  46. function UIHundredDojoGuildRankView:OnClose()
  47. end
  48. function UIHundredDojoGuildRankView:OnDispose()
  49. self.scrollView.loopGridView:Dispose()
  50. self.controller:OnDispose()
  51. end
  52. function UIHundredDojoGuildRankView:OnPageInEnd()
  53. UIHundredDojoGuildRankView.super.OnPageInEnd(self)
  54. self.scrollView.loopGridView.ScrollRect.enabled = true
  55. end
  56. function UIHundredDojoGuildRankView:OnGuildCPRankListChanged(data)
  57. self.controller:SetRankDatas(data)
  58. self:RefreshListView()
  59. self:RefreshSelfView()
  60. end
  61. function UIHundredDojoGuildRankView:OnGuildEnterSuccess()
  62. local errorCode = self.controller:SendGuildWarCPRankReq()
  63. if errorCode ~= 0 then
  64. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  65. end
  66. end
  67. function UIHundredDojoGuildRankView:OnGuildCreateSuccess()
  68. local errorCode = self.controller:SendGuildWarCPRankReq()
  69. if errorCode ~= 0 then
  70. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  71. end
  72. end
  73. function UIHundredDojoGuildRankView:OnClickCloseBtn()
  74. self:UIClose()
  75. end
  76. function UIHundredDojoGuildRankView:OnClickGuildItem(btn, param)
  77. local id = param[0]
  78. if not id then return end
  79. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGuildInfo, id)
  80. end
  81. function UIHundredDojoGuildRankView:GetItemByRowColumn(gridView, itemIndex, row, column)
  82. local rankData = self.controller:GetRankDataByItemIdx(itemIndex)
  83. if not rankData then return nil end
  84. local item = gridView:NewListViewItem('HundredDojoGuildRankItem')
  85. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'HundredDojoGuildRankItem', item.gameObject)
  86. local brief = rankData.brief
  87. local guildCP = rankData.cp_num or 0
  88. local guildRank = rankData.rank or 0
  89. if brief then
  90. local badgeResPath = nil
  91. if brief.guild_badge then
  92. local badgeCfgData = ManagerContainer.CfgMgr:GetGuildBadgeCfgById(brief.guild_badge)
  93. if badgeCfgData then
  94. badgeResPath = badgeCfgData.Pic
  95. end
  96. end
  97. self:RefreshGuildInfoItem(itemLua, brief.guild_id, brief.guild_name, brief.guild_level, badgeResPath, guildCP, true)
  98. else
  99. self:RefreshGuildInfoItem(itemLua)
  100. end
  101. self:RefreshGuildRankInfoItem(itemLua, guildRank)
  102. return item
  103. end
  104. function UIHundredDojoGuildRankView:RefreshGuildInfoItem(itemLua, guildId, guildName, guildLv, badgeResPath, guildCP, isClick)
  105. if not itemLua then return end
  106. itemLua.badge.image.enabled = false
  107. itemLua.badge.image.sprite = nil
  108. if not guildId then
  109. itemLua.nameTxt.text.text = ''
  110. itemLua.lvTxt.text.text = ''
  111. itemLua.guildCPTxt.text.text = ''
  112. itemLua.button.onClick:RemoveAllListeners()
  113. return
  114. end
  115. CommonUtil.LoadIcon(self, badgeResPath, function(sprite)
  116. if sprite then
  117. itemLua.badge.image.enabled = true
  118. itemLua.badge.image.sprite = sprite
  119. end
  120. end, itemLua, 'BadgeIcon')
  121. itemLua.nameTxt.text.text = tostring(guildName)
  122. itemLua.lvTxt.text.text = string.formatbykey('Lv') .. tostring(guildLv)
  123. itemLua.guildCPTxt.text.text = tostring(guildCP)
  124. if isClick then
  125. self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnClickGuildItem, guildId)
  126. end
  127. end
  128. function UIHundredDojoGuildRankView:RefreshGuildRankInfoItem(itemLua, rank)
  129. if not itemLua then return end
  130. if not rank or rank <= 0 then
  131. itemLua.rank1:SetActive(false)
  132. itemLua.rank2:SetActive(false)
  133. itemLua.rank3:SetActive(false)
  134. itemLua.rank4:SetActive(false)
  135. itemLua.rankTxt.text.text = string.formatbykey('NoRank')
  136. itemLua.rankTxt:SetActive(true)
  137. return
  138. end
  139. itemLua.rank1:SetActive(rank == 1)
  140. itemLua.rank2:SetActive(rank == 2)
  141. itemLua.rank3:SetActive(rank == 3)
  142. itemLua.rank4:SetActive(rank == 4)
  143. if rank > 4 then
  144. itemLua.rankTxt.text.text = tostring(rank)
  145. itemLua.rankTxt:SetActive(true)
  146. else
  147. itemLua.rankTxt:SetActive(false)
  148. end
  149. end
  150. function UIHundredDojoGuildRankView:RefreshListView()
  151. local length = self.controller:GetRankListLength()
  152. if length <= 0 then
  153. self.noGuildList:SetActive(true)
  154. self.scrollView:SetActive(false)
  155. return
  156. end
  157. self.noGuildList:SetActive(false)
  158. self.scrollView:SetActive(true)
  159. self.scrollView.loopGridView:RefreshListByIndex(length, 0)
  160. end
  161. function UIHundredDojoGuildRankView:RefreshSelfView()
  162. if not self.controller:HasGuild() then
  163. self.noGuild:SetActive(true)
  164. self.selfRank:SetActive(false)
  165. return
  166. end
  167. local guildData = self.controller:GetCurGuildData()
  168. if not guildData then
  169. self.noGuild:SetActive(true)
  170. self.selfRank:SetActive(false)
  171. return
  172. end
  173. self.noGuild:SetActive(false)
  174. self.selfRank:SetActive(true)
  175. local brief = guildData:GetBriefData()
  176. local guildCP, guildRank = self.controller:GetSelfGuildCPAndRank()
  177. if brief then
  178. self:RefreshGuildInfoItem(self.selfRank, brief.id, brief.name, brief.level, brief.badgeResPath, guildCP, false)
  179. else
  180. self:RefreshGuildInfoItem(self.selfRank)
  181. end
  182. self:RefreshGuildRankInfoItem(self.selfRank, guildRank)
  183. end
  184. return UIHundredDojoGuildRankView