UIVoyageRankView.lua 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. local UIVoyageRankView = require("UIVoyage/UIVoyageRankView_Generate")
  2. local LoadStatusLoopListCtr = require('Common/LoadStatusLoopListCtr')
  3. function UIVoyageRankView:OnAwake(data)
  4. self.controller = require("UIVoyage/UIVoyageRankCtr"):new()
  5. self.controller:Init(self)
  6. self.controller:SetData(data)
  7. end
  8. function UIVoyageRankView:AddEventListener()
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.VOYAGE_RANK_CHANGED, self, self.OnVoyageRankChanged)
  10. end
  11. function UIVoyageRankView: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 UIVoyageRankView:Init()
  22. self.controller:InitData()
  23. if self.loadStatusLoopListCtr then
  24. self.loadStatusLoopListCtr:Dispose()
  25. self.loadStatusLoopListCtr = nil
  26. end
  27. local maxNum = self.controller:GetMaxNum()
  28. self.loadStatusLoopListCtr = LoadStatusLoopListCtr:new(self, self.rankList.loopListView, 0, maxNum,
  29. false, 'LoadingItem', Enum.ListLoadingStatus.None,
  30. true, 'LoadingItem', Enum.ListLoadingStatus.WaitLoad,
  31. self.GetItemByIndex,nil, self.OnBeginLoad)
  32. self.rankList.loopListView.ScrollRect.enabled = false
  33. local errorCode = self.controller:SendGetVoyageRankDatasReq(true)
  34. if errorCode ~= 0 then
  35. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  36. end
  37. self:RefreshSelfVoyageRankItem()
  38. end
  39. function UIVoyageRankView:RemoveEventListener()
  40. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  41. end
  42. function UIVoyageRankView:AddUIEventListener()
  43. self.uiBase:AddButtonEventListener(self.btnClose.button, self, self.OnClickCancelBtn)
  44. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCancelBtn)
  45. end
  46. function UIVoyageRankView:OnHide()
  47. end
  48. function UIVoyageRankView:OnShow(data)
  49. self.controller:SetData(data)
  50. end
  51. function UIVoyageRankView:OnClose()
  52. end
  53. function UIVoyageRankView:OnDispose()
  54. if self.loadStatusLoopListCtr then
  55. self.loadStatusLoopListCtr:Dispose()
  56. self.loadStatusLoopListCtr = nil
  57. end
  58. self.controller:OnDispose()
  59. end
  60. function UIVoyageRankView:OnPageInEnd()
  61. self.super.OnPageInEnd(self)
  62. self.rankList.loopListView.ScrollRect.enabled = true
  63. end
  64. function UIVoyageRankView:OnVoyageRankChanged()
  65. self:RefreshList()
  66. end
  67. function UIVoyageRankView:OnClickCancelBtn()
  68. self:UIClose()
  69. end
  70. function UIVoyageRankView:GetItemByIndex(loopListView, idx, dataIdx)
  71. local itemData = self.controller:GetRankDataById(dataIdx + 1)
  72. if not itemData then
  73. return nil
  74. end
  75. local item = loopListView:NewListViewItem('VoyageRankItem')
  76. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'VoyageRankItem', item.gameObject)
  77. if itemLua then
  78. local playerBrief = itemData.playerBrief
  79. local data = {
  80. IsHero = true
  81. }
  82. local headFrameId = nil
  83. local vipLv = nil
  84. local name = nil
  85. if playerBrief then
  86. local uid = playerBrief.uid
  87. vipLv = playerBrief.vipLv
  88. headFrameId = playerBrief.headFrame
  89. if int64.equals(uid, ManagerContainer.DataMgr.UserData:GetUserId()) then
  90. headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId()
  91. vipLv = ManagerContainer.DataMgr.UserData:GetVipLv()
  92. end
  93. local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(playerBrief.configId)
  94. local jobIcon = ''
  95. if jobCfg then
  96. jobIcon = jobCfg.JobIcon
  97. end
  98. data.Level = playerBrief.level
  99. data.ProfessionIcon = jobIcon
  100. data.HeadIcon = playerBrief.headPortraitName
  101. name = playerBrief.nickName
  102. end
  103. self:RefreshVoyageRankItem(itemLua, name, vipLv, data, headFrameId, itemData.score, itemData.rank)
  104. end
  105. return item
  106. end
  107. function UIVoyageRankView:RefreshSelfVoyageRankItem()
  108. local userdata = ManagerContainer.DataMgr.UserData
  109. local data = {
  110. IsHero = true
  111. }
  112. data.Level = userdata:GetRoleLv()
  113. local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(userdata:GetJobCfgId())
  114. local jobIcon = ''
  115. if jobCfg then
  116. jobIcon = jobCfg.JobIcon
  117. end
  118. data.ProfessionIcon = jobIcon
  119. data.HeadIcon = userdata:GetUserHeadIcon()
  120. local headFrameId = userdata:GetHeadFrameId()
  121. local vipLv = userdata:GetVipLv()
  122. local name = userdata:GetUserNickname()
  123. self:RefreshVoyageRankItem(self.selfVoyageRankItem, name, vipLv, data, headFrameId, self.controller:GetSelfScore(),
  124. self.controller:GetSelfRank())
  125. end
  126. function UIVoyageRankView:RefreshVoyageRankItem(itemLua, name, vipLv, headData, headFrameId, score, rank)
  127. itemLua.nameTxt.text.text = tostring(name)
  128. if not score or score <= 0 then
  129. itemLua.scoreTxt.text.text = "0"
  130. else
  131. itemLua.scoreTxt.text.text = tostring(score)
  132. end
  133. if not rank or rank <= 0 then
  134. itemLua.rankTxt.text.text = string.formatbykey('NoRank')
  135. itemLua.rankTxt:SetActive(true)
  136. itemLua.rankSp:SetActive(false)
  137. elseif rank == 1 then
  138. itemLua.rankTxt:SetActive(false)
  139. itemLua.rankSp.uIImageSwitchSprite:ChangeSprite(0)
  140. itemLua.rankSp:SetActive(true)
  141. elseif rank == 2 then
  142. itemLua.rankTxt:SetActive(false)
  143. itemLua.rankSp.uIImageSwitchSprite:ChangeSprite(1)
  144. itemLua.rankSp:SetActive(true)
  145. elseif rank == 3 then
  146. itemLua.rankTxt:SetActive(false)
  147. itemLua.rankSp.uIImageSwitchSprite:ChangeSprite(2)
  148. itemLua.rankSp:SetActive(true)
  149. else
  150. itemLua.rankTxt.text.text = tostring(rank)
  151. itemLua.rankTxt:SetActive(true)
  152. itemLua.rankSp:SetActive(false)
  153. end
  154. itemLua.headItem.head.button.enabled = false
  155. CommonUtil.SetPlayerHeadAndFrame(self, itemLua.headItem, headData, false, headFrameId)
  156. itemLua.vipIcon.image.enabled = false
  157. itemLua.vipIcon.image.sprite = nil
  158. if vipLv and vipLv >= 0 then
  159. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  160. if vipCfg then
  161. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  162. if sprite then
  163. itemLua.vipIcon.image.sprite = sprite
  164. itemLua.vipIcon.image.enabled = true
  165. end
  166. end, itemLua, 'VipIcon')
  167. end
  168. end
  169. local reward = ManagerContainer.DataMgr.VoyageDataMgr:GetRewardByRank(rank)
  170. if reward then
  171. local rewardList = ManagerContainer.DataMgr.HardMissionDataMgr:GetReward(reward)
  172. --LogError("rewardList = "..Inspect(rewardList))
  173. --LogError("reward = "..Inspect(reward))
  174. CommonUtil.LoopGridViewEleCreateNew(self,
  175. itemLua.rewordNode.loopHorizontalScrollRect,
  176. itemLua.content.horizontalLayoutGroup,
  177. rewardList,
  178. 0,
  179. self,
  180. self.UpdateRewards,
  181. nil, nil, 0);
  182. end
  183. end
  184. function UIVoyageRankView:UpdateRewards(_itemLua, _idx,_data)
  185. if not _itemLua or not _data then return end
  186. CommonUtil.UpdateItemPrefab(self, _itemLua, _data, Enum.ItemIEnterType.Bag)
  187. end
  188. function UIVoyageRankView:OnBeginLoad(isBegin)
  189. local errorCode = self.controller:SendGetVoyageRankDatasReq(isBegin)
  190. if errorCode ~= 0 then
  191. self:RefreshList(isBegin)
  192. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
  193. end
  194. end
  195. function UIVoyageRankView:RefreshList()
  196. local rankDatas = self.controller:GetRankDatas()
  197. local maxNum = self.controller:GetMaxNum()
  198. local whole = false
  199. local dataLength = 0
  200. if rankDatas then
  201. dataLength = #rankDatas
  202. whole = (dataLength >= maxNum)
  203. end
  204. self.loadStatusLoopListCtr:SetHasBegin(true)
  205. self.loadStatusLoopListCtr:OnAllLoaded()
  206. self.loadStatusLoopListCtr:RefreshMaxDataLength((whole and dataLength or (dataLength + 1)))
  207. self.loadStatusLoopListCtr:RefreshDataLength(dataLength)
  208. self:RefreshSelfVoyageRankItem()
  209. end
  210. return UIVoyageRankView