UIGuildRecommendView.lua 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. local UIGuildRecommendView = require("UIGuild/UIGuildRecommendView_Generate")
  2. local State = {
  3. Default = 1, -- 显示推荐列表
  4. Search = 2, -- 显示查询列表
  5. }
  6. function UIGuildRecommendView:OnAwake(data)
  7. self.controller = require("UIGuild/UIGuildRecommendCtr")
  8. self.controller:Init(self)
  9. self.controller:SetData(data)
  10. end
  11. function UIGuildRecommendView:AddEventListener()
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_RECOMMEND_LIST_CHANGED, self, self.OnRecommendListChanged)
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_SEARCH_LIST_CHANGED, self, self.OnSearchListChanged)
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_SUBMIT_APPLY_CHANGED, self, self.OnGuildSubmitChanged)
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_ENTER_SUCCESS, self, self.OnGuildEnterSuccess)
  16. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_CREATE_SUCCESS, self, self.OnGuildCreateSuccess)
  17. end
  18. function UIGuildRecommendView:FillContent(data, uiBase)
  19. self.uiBase = uiBase
  20. local gameObject = self.uiBase:GetRoot()
  21. if gameObject ~= nil then
  22. self.gameObject = gameObject
  23. self.transform = gameObject.transform
  24. end
  25. self:InitGenerate(self.transform, data)
  26. self:Init()
  27. end
  28. function UIGuildRecommendView:Init()
  29. self.state = State.Default
  30. self.input.inputField.text = ''
  31. self.clearBtn:SetActive(false)
  32. self.btnCreate:SetActive(not self.controller:IsInGuild())
  33. self.guildList.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  34. return self:GetItemByRowColumn(gridView, itemIndex, row, column)
  35. end, nil)
  36. self:RefreshGuildList()
  37. local errorCode = self.controller:SendGetRecommendListReq()
  38. if errorCode ~= 0 then
  39. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  40. end
  41. end
  42. function UIGuildRecommendView:RemoveEventListener()
  43. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  44. self.input.inputField.onValidateInput = nil
  45. self.input.inputField.onValueChanged:RemoveAllListeners()
  46. self.input.inputField.onEndEdit:RemoveAllListeners()
  47. end
  48. function UIGuildRecommendView:AddUIEventListener()
  49. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  50. self.uiBase:AddButtonUniqueEventListener(self.clearBtn.button, self, self.OnClickClearBtn)
  51. self.uiBase:AddButtonUniqueEventListener(self.searchBtn.button, self, self.OnClickSearchBtn)
  52. self.uiBase:AddButtonUniqueEventListener(self.closeBtn.button, self, self.OnClickBackBtn)
  53. self.uiBase:AddButtonUniqueEventListener(self.btnCreate.button, self, self.OnClickCreateBtn)
  54. self.uiBase:AddButtonUniqueEventListener(self.btnRefresh.button, self, self.OnClickRefreshBtn)
  55. self.input.inputField.onValidateInput = self.input.inputField.OnValidateInput(self.OnValidateInput, self)
  56. self.input.inputField.onValueChanged:RemoveAllListeners()
  57. self.input.inputField.onValueChanged:AddListener(function(text)
  58. self:OnValueChangedInput(text)
  59. end)
  60. self.input.inputField.onEndEdit:RemoveAllListeners()
  61. self.input.inputField.onEndEdit:AddListener(function(text)
  62. self:OnEndEditInput(text)
  63. end)
  64. end
  65. function UIGuildRecommendView:OnHide()
  66. end
  67. function UIGuildRecommendView:OnShow(data)
  68. self.controller:SetData(data)
  69. end
  70. function UIGuildRecommendView:OnClose()
  71. end
  72. function UIGuildRecommendView:OnDispose()
  73. self.state = nil
  74. self.guildList.loopGridView:Dispose()
  75. self.controller:OnDispose()
  76. end
  77. function UIGuildRecommendView:OnRecommendListChanged()
  78. if self.state and self.state ~= State.Default then return end
  79. self:RefreshGuildList()
  80. end
  81. function UIGuildRecommendView:OnSearchListChanged()
  82. if self.state ~= State.Search then return end
  83. self:RefreshGuildList()
  84. end
  85. function UIGuildRecommendView:OnGuildSubmitChanged()
  86. self:RefreshGuildList()
  87. end
  88. function UIGuildRecommendView:OnCheckMoreInfoSuccess(guildMoreData)
  89. end
  90. function UIGuildRecommendView:OnGuildEnterSuccess()
  91. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  92. end
  93. function UIGuildRecommendView:OnGuildCreateSuccess()
  94. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  95. end
  96. function UIGuildRecommendView:OnClickClearBtn()
  97. self.input.inputField.text = ''
  98. self:OnEndEditInput()
  99. end
  100. function UIGuildRecommendView:OnClickSearchBtn()
  101. self.state = State.Search
  102. local text = self.input.inputField.text
  103. if not text or text == '' then
  104. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildInfo_002')
  105. return
  106. end
  107. local len = GetActualStringLength(text)
  108. local min = self.controller:GetNameLengthMin()
  109. local max = self.controller:GetNameLengthMax()
  110. if len < min or len > max then
  111. -- 肯定找不到公会,不需要发消息
  112. self.controller:ClearSearchList()
  113. self:RefreshGuildList()
  114. return
  115. end
  116. local errorCode = self.controller:SendSearchGuildReq(text)
  117. if errorCode ~= 0 then
  118. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  119. return
  120. end
  121. self:RefreshGuildList()
  122. end
  123. function UIGuildRecommendView:OnClickBackBtn()
  124. ManagerContainer.LuaUIMgr:OpenSourceUI(self)
  125. end
  126. function UIGuildRecommendView:OnClickCreateBtn()
  127. if self.controller:IsInGuild() then
  128. return
  129. end
  130. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGuildCreate)
  131. end
  132. function UIGuildRecommendView:OnClickRefreshBtn()
  133. self.input.inputField.text = ''
  134. if self.state == State.Search then
  135. self:OnEndEditInput(nil)
  136. end
  137. local errorCode = self.controller:SendGetRecommendListReq()
  138. if errorCode ~= 0 then
  139. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  140. end
  141. end
  142. function UIGuildRecommendView:OnValidateInput(text, charIndex, addedChar)
  143. local curLen = 0
  144. if addedChar >= 48 and addedChar <= 57 then -- 0-9
  145. curLen = 1
  146. elseif addedChar >= 65 and addedChar <= 90 then -- A-Z
  147. curLen = 1
  148. elseif addedChar >= 97 and addedChar <= 122 then -- a-z
  149. curLen = 1
  150. elseif addedChar >= 0x4E00 and addedChar <= 0x9FA5 then -- 中文字
  151. curLen = 1
  152. end
  153. if curLen <= 0 then return 0 end
  154. local len = GetActualStringLength(text) + curLen
  155. local max = self.controller:GetNameLengthMax()
  156. if len > max then return 0 end
  157. return addedChar
  158. end
  159. function UIGuildRecommendView:OnValueChangedInput(text)
  160. self.clearBtn:SetActive((text and text ~= ''))
  161. end
  162. function UIGuildRecommendView:OnEndEditInput(text)
  163. if self.state ~= State.Search then return end
  164. if text and text ~= '' then return end
  165. self.state = State.Default
  166. self:RefreshGuildList()
  167. end
  168. function UIGuildRecommendView:RefreshGuildList()
  169. self.controller:RefreshShowDatas(self.state)
  170. local guildDatas = self.controller:GetShowDatas()
  171. if not guildDatas then
  172. self.guildList:SetActive(false)
  173. self.emptyTips:SetActive(true)
  174. self.emptyTips.desTxt.text.text = string.formatbykey('GuildTips_038')
  175. return
  176. end
  177. local len = #guildDatas
  178. if len <= 0 then
  179. self.guildList:SetActive(false)
  180. self.emptyTips:SetActive(true)
  181. self.emptyTips.desTxt.text.text = ((self.state == State.Search) and string.formatbykey('GuildTips_003') or string.formatbykey('GuildTips_002'))
  182. return
  183. end
  184. self.guildList:SetActive(true)
  185. self.emptyTips:SetActive(false)
  186. self.guildList.loopGridView:RefreshListByIndex(len, 0)
  187. end
  188. function UIGuildRecommendView:GetItemByRowColumn(gridView, itemIndex, row, column)
  189. local guildData = self.controller:GetShowDataByItemIndex(itemIndex)
  190. if not guildData then return nil end
  191. local item = gridView:NewListViewItem('GuildRecommendItem')
  192. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'GuildRecommendItem', item.gameObject)
  193. if itemLua then
  194. local data = guildData:GetBriefData()
  195. itemLua.guildBadgeItem.badge.button.enabled = false
  196. itemLua.guildBadgeItem.badge.image.enabled = false
  197. itemLua.guildBadgeItem.badge.image.sprite = nil
  198. if data.badgeResPath and data.badgeResPath ~= nil then
  199. CommonUtil.LoadIcon(self, data.badgeResPath, function(sprite)
  200. itemLua.guildBadgeItem.badge.image.enabled = true
  201. itemLua.guildBadgeItem.badge.image.sprite = sprite
  202. end, itemLua, 'BadgeIcon')
  203. end
  204. itemLua.nameTxt.text.text = tostring(data.name)
  205. itemLua.lvTxt.text.text = tostring(data.level)
  206. itemLua.peopleTxt.text.text = tostring(guildData:GetGuildMemberNum()) .. '/' .. tostring(guildData:GetGuildMemberLimit())
  207. itemLua.activeTxt.text.text = tostring(data.active)
  208. itemLua.appliedTag:SetActive(guildData:GetIsSubmitApply())
  209. self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnClickGuildItem, data.id)
  210. end
  211. return item
  212. end
  213. function UIGuildRecommendView:OnClickGuildItem(btn, param)
  214. local id = param[0]
  215. if not id then return end
  216. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIGuildInfo, id)
  217. end
  218. return UIGuildRecommendView