FriendRecruitView.lua 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. local FriendRecruitView = class("FriendRecruitView")
  2. local MultiTypeAssetLoadSystem = require("MultiTypeAssetLoadSystem")
  3. local UIRecruitTipsView = require("UIFriend/UIRecruitTipsView")
  4. local TeacherLogUIView = require("UIFriend/TeacherLogUIView")
  5. local LoadStatusLoopListCtr = require('Common/LoadStatusLoopListCtr')
  6. local UIRecruitTipsPath = "UIFriend/UIRecruitTips"
  7. local TeacherLogUIPath = "UIFriend/TeacherLogUI"
  8. local PageType = {
  9. Task = 1,
  10. Students = 2,
  11. }
  12. local pageToggleData = {}
  13. local lvLimit = 30
  14. local studentLimit = 40
  15. function FriendRecruitView:ctor()
  16. self.controller = require("UIFriend/FriendRecruitCtr"):new()
  17. end
  18. function FriendRecruitView:Init(root, parent)
  19. pageToggleData = {}
  20. self.root = root
  21. self.parent = parent
  22. self.loadSystem1 = MultiTypeAssetLoadSystem:new()
  23. self.loadSystem1:SetCompleteCB(self, self.PreloadedAssets1)
  24. self.loadSystem2 = MultiTypeAssetLoadSystem:new()
  25. self.loadSystem2:SetCompleteCB(self, self.PreloadedAssets2)
  26. lvLimit = GlobalConfig.Instance:GetConfigIntValue(241)
  27. studentLimit = GlobalConfig.Instance:GetConfigIntValue(242)
  28. self:InitGrid()
  29. CommonUtil.CreateToggleMouduleOnlyBtns(self.root, pageToggleData, self.parent.center.toggleGroup, PageType.Task, self.OnToggleValueChanged, self)
  30. end
  31. function FriendRecruitView:InitGrid()
  32. self.parent.center.taskScrollview.loopListView:InitListView(0, function(gridView, itemIndex, row, column)
  33. return self:GetTaskItemByRowColumn(gridView, itemIndex, row, column)
  34. end, nil)
  35. --self.parent.center.studentScrollview.loopListView:InitGridView(0, function(gridView, itemIndex, row, column)
  36. -- return self:GetStudentItemByRowColumn(gridView, itemIndex, row, column)
  37. --end, nil)
  38. if self.loadStatusLoopListCtr then
  39. self.loadStatusLoopListCtr:Dispose()
  40. self.loadStatusLoopListCtr = nil
  41. end
  42. local totalListCount = self.controller:GetStudentListTotalCount()
  43. self.loadStatusLoopListCtr = LoadStatusLoopListCtr:new(self.root, self.parent.center.studentScrollview.loopListView, 0, totalListCount,
  44. false, 'LoadingItem', Enum.ListLoadingStatus.None,
  45. true, 'LoadingItem', Enum.ListLoadingStatus.WaitLoad,
  46. self.GetItemByIndex,nil, self.OnBeginLoad, self)
  47. self.parent.center.studentScrollview.loopListView.ScrollRect.enabled = false
  48. local errorCode = self.controller:QueryNextStudentBriefInfo()
  49. if errorCode ~= 0 then
  50. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  51. end
  52. end
  53. function FriendRecruitView:Refresh()
  54. local masterUid = self.controller:GetMasterUId()
  55. self.parent.top.noTeacher:SetActive(masterUid == 0)
  56. self.parent.top.hasTeacher:SetActive(masterUid > 0)
  57. if masterUid > 0 then
  58. self.parent.top.info:SetActive(false)
  59. else
  60. self:RefreshNoTeacherUI()
  61. end
  62. self:RefreshCurrency()
  63. self:RefreshRecruitCode()
  64. self:RefreshStudentCount()
  65. self:RefreshRemainClapCount()
  66. end
  67. function FriendRecruitView:RefreshCurrency()
  68. local owned = CommonUtil.GetOwnResCountByItemId(Enum.ItemType.RecruitStone)
  69. self.parent.center.currency.number.text.text = owned > 0 and owned or "--"
  70. end
  71. function FriendRecruitView:RefreshRecruitCode()
  72. self.root.myRecruitCode.code.text.text = self.controller:GetRecruitCode()
  73. end
  74. function FriendRecruitView:RefreshStudentCount()
  75. local studentCount = self.controller:GetStudentCount()
  76. self.parent.center.studentCount.text.text = studentCount == 0 and "--" or studentCount
  77. self.parent.center.dscMax.uILocalizeScript:SetContentAndValues("StudentLimit", {studentLimit})
  78. end
  79. function FriendRecruitView:RefreshRemainClapCount()
  80. self.parent.clapCount.text.text = self.controller:GetRemainClapCount()
  81. end
  82. function FriendRecruitView:RefreshNoTeacherUI()
  83. self.parent.top.dsc.uILocalizeScript:SetContentAndValues("DscNoTeacher", {lvLimit})
  84. end
  85. function FriendRecruitView:OnToggleValueChanged(index)
  86. self.parent.taskBg:SetActive(pageToggleData.toggleDefaultIndex == PageType.Task)
  87. self.parent.studentBg:SetActive(pageToggleData.toggleDefaultIndex == PageType.Students)
  88. self.parent.center.studentScrollview.loopListView.ScrollRect.enabled = pageToggleData.toggleDefaultIndex == PageType.Students
  89. if pageToggleData.toggleDefaultIndex == PageType.Task then
  90. self:RefreshTaskList()
  91. elseif pageToggleData.toggleDefaultIndex == PageType.Students then
  92. self:RefreshStudentList()
  93. end
  94. end
  95. function FriendRecruitView:RefreshTaskList(resetPos)
  96. self.controller:GetAllTaskCfgDatas()
  97. local length = self.controller:GetShowDatasLength()
  98. local loopListView = self.parent.center.taskScrollview.loopListView
  99. if resetPos then
  100. loopListView:SetListItemCount(length, true)
  101. else
  102. loopListView:SetListItemCount(length)
  103. end
  104. end
  105. function FriendRecruitView:GetTaskItemByRowColumn(gridView, itemIndex, row, column)
  106. local logicData = self.controller:GetShowDataByIdx(itemIndex)
  107. if not logicData then return nil end
  108. local item = gridView:NewListViewItem('RecruitTaskItem')
  109. local itemLua = CommonUtil.BindGridViewItem2Lua(self.root, 'RecruitTaskItem', item.gameObject)
  110. if itemLua then
  111. CommonUtil.UpdateItemPrefab(self.root, itemLua, logicData, Enum.ItemIEnterType.Bag, self, self.ShowItemTips)
  112. self.root.uiBase:AddButtonUniqueEventListener(itemLua.btnGet.button,self,self.OnTaskGetClick, logicData.cfgId)
  113. end
  114. return item
  115. end
  116. function FriendRecruitView:OnTaskGetClick(button, params)
  117. local cfgId = params[0]
  118. self.controller:SendTaskReward(cfgId)
  119. end
  120. --function FriendRecruitView:RefreshStudentList(resetPos)
  121. -- local showDatas = self.controller:GetAllStudentDatas()
  122. -- local length = #showDatas
  123. --
  124. -- local loopListView = self.parent.center.studentScrollview.loopListView
  125. -- if resetPos then
  126. -- loopListView:RefreshListByIndex(length, 0)
  127. -- else
  128. -- loopListView:RefreshListByIndex(length)
  129. -- end
  130. --end
  131. function FriendRecruitView:OnStudentScrollRefresh()
  132. --local loopListView = self.parent.center.studentScrollview.loopListView
  133. --loopListView:RefreshAllShownItem()
  134. self:RefreshStudentList()
  135. end
  136. function FriendRecruitView:GetStudentItemByRowColumn(gridView, itemIndex, row, column)
  137. local logicData = self.controller:GetShowDataByIdx(itemIndex)
  138. if not logicData then return nil end
  139. local item = gridView:NewListViewItem('StudentItemList')
  140. local itemLua = CommonUtil.BindGridViewItem2Lua(self.root, 'StudentItemList', item.gameObject)
  141. if itemLua then
  142. CommonUtil.UpdateItemPrefab(self.root, itemLua, logicData, nil, self, self.OnClapClick)
  143. --self.root.uiBase:AddButtonUniqueEventListener(itemLua.btnGet.button,self,self.OnTaskGetClick, logicData.cfgId)
  144. if itemIndex + 1 == self.controller:GetShowDatasLength() then
  145. self.controller:QueryNextStudentBriefInfo()
  146. end
  147. end
  148. return item
  149. end
  150. function FriendRecruitView:RefreshMasterInfo(briefInfo)
  151. local playerHead = CommonUtil.GetPlayerHeadIcon(briefInfo);
  152. local jobData = ManagerContainer.CfgMgr:GetJobDataById(briefInfo.config_id)
  153. local _fakerData = {Level = briefInfo.level, ProfessionIcon = jobData.JobIcon, HeadIcon = playerHead, IsHero = true};
  154. CommonUtil.SetPlayerHeadAndFrame(self.root, self.parent.top.info.headItem, _fakerData,false, briefInfo.head_frame_id);
  155. self.parent.top.info.nickname.text.text = CommonUtil.GetVaildNickName(briefInfo.nick_name)
  156. self.parent.top.fighterPower.text.text = briefInfo.fight_power
  157. self.parent.top.time.text.text = CommonUtil.GetOnlineStatus(briefInfo.online_state, briefInfo.online_time)
  158. self.root.top.info:SetActive(true)
  159. end
  160. function FriendRecruitView:AddEventListener()
  161. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.root.uiData.name,UIEventNames.FRIEND_INVITATION_QUERY_MASTER_INFO,self,self.OnQueryMasterRefresh)
  162. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.root.uiData.name,UIEventNames.FRIEND_INVITATION_QUERY_STUDENT_LIST_INFO,self,self.OnStudentScrollRefresh)
  163. end
  164. function FriendRecruitView:AddUIEventListener()
  165. self.root.uiBase:AddButtonEventListener(self.root.myRecruitCode.btnCopy.button,self,self.OnCodeCopyClick)
  166. self.root.uiBase:AddButtonEventListener(self.parent.top.submitBtn.button,self,self.OnQueryMasterClick)
  167. self.root.uiBase:AddButtonEventListener(self.parent.btnOnekeyClap.button,self,self.OnOneKeyClapClick)
  168. self.root.uiBase:AddButtonEventListener(self.parent.btnLog.button,self,self.OnLogClick)
  169. end
  170. function FriendRecruitView:OnCodeCopyClick()
  171. UnityEngine.GUIUtility.systemCopyBuffer = tostring(self.controller:GetRecruitCode())
  172. end
  173. function FriendRecruitView:OnQueryMasterClick()
  174. local code = self.parent.top.inputField.inputField.text.text
  175. if code == "" then
  176. return
  177. end
  178. self.controller:SendInvitationNumberUserInfoReq(code)
  179. end
  180. function FriendRecruitView:OnQueryMasterRefresh(briefInfo, studentCount)
  181. if not self.uIRecruitTipsView then
  182. if self.loadSystem1 then
  183. self.loadSystem:RemoveLoadAllAsset()
  184. self.loadSystem:AddLoadAsset(Enum.ResourceType.GameObject, Constants.UIPath, UIRecruitTipsPath)
  185. self.loadSystem:Begin()
  186. self.masterBriefInfo = briefInfo
  187. self.studentCount = studentCount
  188. end
  189. else
  190. self.uIRecruitTipsView:Show(briefInfo, studentCount)
  191. end
  192. end
  193. function FriendRecruitView:PreloadedAssets1()
  194. local go = ManagerContainer.ResMgr:GetGoFromPool(Constants.UIPath, UIRecruitTipsPath)
  195. if go then
  196. if self.uIRecruitTipsView == nil then
  197. self.uIRecruitTipsView = UIRecruitTipsView:new()
  198. end
  199. self.uIRecruitTipsView:InitGo(self.root,go)
  200. --self.uIRecruitTipsView:Hide()
  201. self.uIRecruitTips:Show(self.masterBriefInfo, self.studentCount)
  202. self.masterBriefInfo = nil
  203. self.studentCount = nil
  204. end
  205. end
  206. function FriendRecruitView:OnLogClick()
  207. if not self.teacherLogUIView then
  208. if self.loadSystem2 then
  209. self.loadSystem2:RemoveLoadAllAsset()
  210. self.loadSystem2:AddLoadAsset(Enum.ResourceType.GameObject, Constants.UIPath, TeacherLogUIPath)
  211. self.loadSystem2:Begin()
  212. end
  213. else
  214. self.teacherLogUIView:Show()
  215. end
  216. end
  217. function FriendRecruitView:PreloadedAssets2()
  218. local go = ManagerContainer.ResMgr:GetGoFromPool(Constants.UIPath, TeacherLogUIPath)
  219. if go then
  220. if self.teacherLogUIView == nil then
  221. self.teacherLogUIView = TeacherLogUIView:new()
  222. end
  223. self.teacherLogUIView:InitGo(self.root,go)
  224. --self.teacherLogUIView:Hide()
  225. self.teacherLogUIView:Show()
  226. end
  227. end
  228. function FriendRecruitView:OnClapClick(button, params)
  229. local uid = params[0]
  230. self.controller:ClapStudents(uid)
  231. end
  232. function FriendRecruitView:OnOneKeyClapClick(button, params)
  233. self.controller:ClapStudents()
  234. end
  235. function FriendRecruitView:GetItemByIndex(loopListView, idx, dataIdx)
  236. local itemData = self.controller:GetShowDataByIdx(dataIdx)
  237. if not itemData then return nil end
  238. local item = loopListView:NewListViewItem('StudentListItem')
  239. local itemLua = CommonUtil.BindGridViewItem2Lua(self.root, 'StudentListItem', item.gameObject)
  240. if itemLua then
  241. end
  242. ManagerContainer.LuaUIMgr:ForceRebuildLayoutImmediate(item.CachedRectTransform)
  243. return item
  244. end
  245. function FriendRecruitView:OnBeginLoad(isBegin)
  246. local errorCode = self.controller:QueryNextStudentBriefInfo(isBegin)
  247. if errorCode ~= 0 then
  248. self:RefreshStudentList(isBegin)
  249. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  250. end
  251. end
  252. function FriendRecruitView:RefreshStudentList(isBegin)
  253. self.controller:GetAllStudentDatas()
  254. local whole = self.controller:IsStudentListWhole()
  255. local dataLength = self.controller:GetShowDatasLength()
  256. self.parent.noStudent:SetActive(whole and dataLength == 0)
  257. self.loadStatusLoopListCtr:SetHasBegin(true)
  258. self.loadStatusLoopListCtr:OnAllLoaded()
  259. self.loadStatusLoopListCtr:RefreshMaxDataLength((whole and dataLength or (dataLength + 1)))
  260. self.loadStatusLoopListCtr:RefreshDataLength(dataLength)
  261. end
  262. function FriendRecruitView:Dispose()
  263. if self.loadSystem1 then
  264. self.loadSystem1:Dispose()
  265. self.loadSystem1 = nil
  266. end
  267. if self.loadSystem2 then
  268. self.loadSystem2:Dispose()
  269. self.loadSystem2 = nil
  270. end
  271. if self.uIRecruitTipsView then
  272. self.uIRecruitTipsView:Dispose()
  273. self.uIRecruitTipsView = nil
  274. end
  275. if self.teacherLogUIView then
  276. self.teacherLogUIView:Dispose()
  277. self.teacherLogUIView = nil
  278. end
  279. self.parent.center.taskScrollview.loopListView:Dispose()
  280. self.parent.center.studentScrollview.loopListView:Dispose()
  281. if self.loadStatusLoopListCtr then
  282. self.loadStatusLoopListCtr:Dispose()
  283. self.loadStatusLoopListCtr = nil
  284. end
  285. self.root = nil
  286. self.parent = nil
  287. if self.controller then
  288. self.controller:Dispose()
  289. self.controller = nil
  290. end
  291. pageToggleData = nil
  292. end
  293. return FriendRecruitView