UIClimbingTowerRankView.lua 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. local UIClimbingTowerRankView = require("UIClimbingTower/UIClimbingTowerRankView_Generate")
  2. function UIClimbingTowerRankView:OnAwake(data)
  3. self.controller = require("UIClimbingTower/UIClimbingTowerRankCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIClimbingTowerRankView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Refresh_ClimbingTower_RankData,self,self.OnRefreshRankList);
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Refresh_ClimbingTower_RankDetailData,self,self.OnRankDataCB);
  10. end
  11. function UIClimbingTowerRankView: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 UIClimbingTowerRankView:Init()
  22. self.frameUrl = GlobalConfig.Instance:GetConfigStrValue(179)
  23. self.lastReqTime = 0
  24. self.rankScroll.loopVerticalScrollRect:SetDragLuaCallback(self.OnDragScrollView)
  25. self.selfRank:SetActive(false)
  26. -- self:RefreshSelfRank()
  27. self:OnRefreshRankData()
  28. end
  29. function UIClimbingTowerRankView:RemoveEventListener()
  30. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  31. end
  32. function UIClimbingTowerRankView:AddUIEventListener()
  33. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCloseBtn)
  34. self.uiBase:AddButtonEventListener(self.closeBtn.button,self, self.OnClickCloseBtn)
  35. end
  36. function UIClimbingTowerRankView:OnHide()
  37. end
  38. function UIClimbingTowerRankView:OnShow(data)
  39. self.controller:SetData(data)
  40. end
  41. function UIClimbingTowerRankView:OnClose()
  42. self.rankScroll.loopVerticalScrollRect:ClearCells()
  43. end
  44. function UIClimbingTowerRankView:OnDispose()
  45. self.controller:OnDispose()
  46. end
  47. function UIClimbingTowerRankView:RefreshSelfRank()
  48. local type = self.controller:GetCurTowerType()
  49. self.selfRank.levelNumTips:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  50. self.selfRank.levelNum:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  51. self.selfRank.passedTimeTips:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  52. self.selfRank.passedTime:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  53. self.selfRank.blockNumTitle:SetActive(type == Enum.UnlimitTowerType.PeakTower)
  54. self.selfRank.blockNum:SetActive(type == Enum.UnlimitTowerType.PeakTower)
  55. self.selfRank.serverName:SetActive(type == Enum.UnlimitTowerType.PeakTower)
  56. if type == Enum.UnlimitTowerType.ClimbingTower then
  57. self:RefreshClimbingTowerSelfRank()
  58. elseif type == Enum.UnlimitTowerType.PeakTower then
  59. self:RefreshPeakTowerSelfRank()
  60. end
  61. self.selfRank:SetActive(true)
  62. end
  63. function UIClimbingTowerRankView:RefreshClimbingTowerSelfRank()
  64. local userData = ManagerContainer.DataMgr.UserData
  65. local rank = self.controller:GetSelfRank()
  66. if rank > 1000 or rank == 0 then
  67. self.selfRank.rank.text.text = I18N.T("NoRank")
  68. else
  69. self.selfRank.rank.text.text = tostring(rank)
  70. end
  71. self.selfRank.playerNode.playerName.text.text = userData:GetUserNickname()
  72. self.selfRank.playerNode.fighterPower.text.text = userData:GetTotalFightPower()
  73. --self.selfRank.playerNode.playerLevel.text.text = tostring(userData:GetRoleLv())
  74. self.selfRank.levelNum.text.text = tostring(self.controller:GetCurLevelNum() - 1)
  75. if self.controller:GetSelfPassedTime() > 0 then
  76. self.selfRank.passedTime.text.text = DateTimeUtil.convertTime2Str(self.controller:GetSelfPassedTime(),"yyyy/MM/dd")
  77. else
  78. self.selfRank.passedTime.text.text = DateTimeUtil.convertTime2Str(self.controller:GetSelfPassedTime(),"--/--/--")
  79. end
  80. local _playerHead = userData:GetUserHeadIcon()
  81. local _headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId();
  82. local _fakerData = {Level = userData:GetRoleLv(), ProfessionIcon = userData:GetJobIcon(), HeadIcon = _playerHead, IsHero = true};
  83. CommonUtil.SetPlayerHeadAndFrame(self, self.selfRank.playerNode.headItem, _fakerData,false, _headFrameId, self, self.OnClickSelfHead);
  84. self.selfRank.vipIcon.image.enabled = false
  85. self.selfRank.vipIcon.image.sprite = nil
  86. local vipLv = userData:GetVipLv()
  87. if vipLv and vipLv >= 0 then
  88. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  89. if vipCfg then
  90. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  91. if sprite then
  92. self.selfRank.vipIcon.image.sprite = sprite
  93. self.selfRank.vipIcon.image.enabled = true
  94. end
  95. end)
  96. end
  97. end
  98. --self.uiBase:AddButtonUniqueEventListener(self.selfRank.playerNode.playerHead.button,self,self.OnClickSelfHead)
  99. end
  100. function UIClimbingTowerRankView:RefreshPeakTowerSelfRank()
  101. local userData = ManagerContainer.DataMgr.UserData
  102. local rank = self.controller:GetPeakTowerSelfRankIdx()
  103. if rank > 1000 or rank == 0 then
  104. self.selfRank.rank.text.text = I18N.T("NoRank")
  105. else
  106. self.selfRank.rank.text.text = tostring(rank)
  107. end
  108. self.selfRank.playerNode.playerName.text.text = userData:GetUserNickname()
  109. self.selfRank.playerNode.fighterPower.text.text = userData:GetTotalFightPower()
  110. self.selfRank.blockNum.text.text = self.controller:GetPeakTowerSelfRankScore()
  111. local serverData = ManagerContainer.LuaGameMgr.serverData
  112. self.selfRank.serverName.text.text = I18N.SetLanguageValue("TopTowerServer", serverData and (serverData.id -1) or 0) --serverData.name--
  113. local _playerHead = userData:GetUserHeadIcon()
  114. local _headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId();
  115. local _fakerData = {Level = userData:GetRoleLv(), ProfessionIcon = userData:GetJobIcon(), HeadIcon = _playerHead, IsHero = true};
  116. CommonUtil.SetPlayerHeadAndFrame(self, self.selfRank.playerNode.headItem, _fakerData,false, _headFrameId, self, self.OnClickSelfHead);
  117. self.selfRank.vipIcon.image.enabled = false
  118. self.selfRank.vipIcon.image.sprite = nil
  119. local vipLv = userData:GetVipLv()
  120. if vipLv and vipLv >= 0 then
  121. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  122. if vipCfg then
  123. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  124. if sprite then
  125. self.selfRank.vipIcon.image.sprite = sprite
  126. self.selfRank.vipIcon.image.enabled = true
  127. end
  128. end)
  129. end
  130. end
  131. end
  132. function UIClimbingTowerRankView:OnRefreshRankList()
  133. self:RefreshSelfRank()
  134. self.controller:ReqestRankBriefData()
  135. end
  136. function UIClimbingTowerRankView:OnDragScrollView()
  137. local curTime = Time.realtimeSinceStartup
  138. if (curTime - self.lastReqTime) >= 0.1 then
  139. self.controller:ReqestRankBriefData()
  140. self.lastReqTime = curTime
  141. end
  142. end
  143. function UIClimbingTowerRankView:OnRankDataCB()
  144. self:RefreshSelfRank()
  145. self:OnRefreshRankData()
  146. end
  147. function UIClimbingTowerRankView:OnRefreshRankData()
  148. local rankList = self.controller:GetRankData()
  149. if rankList ~= nil and next(rankList) ~= nil then
  150. self.rankScroll:SetActive(true)
  151. CommonUtil.LoopGridViewEleCreateNew(self,
  152. self.rankScroll.loopVerticalScrollRect,
  153. self.rankContent.gridLayoutGroup,rankList,0,self,self.OnUpdateRankData)
  154. local type = self.controller:GetCurTowerType()
  155. if type == Enum.UnlimitTowerType.ClimbingTower then
  156. self.rankScroll.loopVerticalScrollRect.totalCount = math.min(#rankList, 50)
  157. elseif type == Enum.UnlimitTowerType.PeakTower then
  158. self.rankScroll.loopVerticalScrollRect.totalCount = math.min(#rankList, 20)
  159. end
  160. else
  161. self.rankScroll:SetActive(false)
  162. end
  163. self.emptyNode:SetActive(rankList == nil or #rankList == 0)
  164. end
  165. function UIClimbingTowerRankView:OnUpdateRankData(rankItemLua,idx,rankData)
  166. local type = self.controller:GetCurTowerType()
  167. rankItemLua.levelNumTips:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  168. rankItemLua.levelNum:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  169. rankItemLua.passedTimeTips:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  170. rankItemLua.passedTime:SetActive(type == Enum.UnlimitTowerType.ClimbingTower)
  171. rankItemLua.blockNumTitle:SetActive(type == Enum.UnlimitTowerType.PeakTower)
  172. rankItemLua.blockNum:SetActive(type == Enum.UnlimitTowerType.PeakTower)
  173. rankItemLua.serverName:SetActive(type == Enum.UnlimitTowerType.PeakTower)
  174. if type == Enum.UnlimitTowerType.ClimbingTower then
  175. self:RefreshClimibingTowerRankItem(rankItemLua,idx,rankData)
  176. elseif type == Enum.UnlimitTowerType.PeakTower then
  177. self:RefreshPeakTowerRankItem(rankItemLua,idx,rankData)
  178. end
  179. end
  180. function UIClimbingTowerRankView:RefreshClimibingTowerRankItem(rankItemLua,idx,rankData)
  181. if rankItemLua == nil or rankData == nil then
  182. return
  183. end
  184. if rankData.rank > 3 then
  185. rankItemLua.rank.text.text = tostring(rankData.rank)
  186. rankItemLua.rank:SetActive(true)
  187. rankItemLua.rankImg:SetActive(false)
  188. else
  189. rankItemLua.rankImg.image.sprite = rankItemLua.rankImg.switchSprite:GetSprite("icon_medal_"..rankData.rank)
  190. rankItemLua.rank:SetActive(false)
  191. rankItemLua.rankImg:SetActive(true)
  192. rankItemLua.rankImg.image:SetNativeSize()
  193. end
  194. rankItemLua.playerName.text.text = rankData.playerName
  195. rankItemLua.headItem.levelText.text.text = tostring(rankData.playerLevel)
  196. local _jobIcon = nil;
  197. local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(rankData.playerJobId)
  198. if jobCfg ~= nil then
  199. _jobIcon = jobCfg.JobIcon;
  200. end
  201. local _fakerData = {Level = rankData.playerLevel, ProfessionIcon = _jobIcon, HeadIcon = rankData.playerHead, IsHero = true};
  202. CommonUtil.SetPlayerHeadAndFrame(self, rankItemLua.headItem, _fakerData,false, rankData.headFrameId , self, self.OnClickPlayerHead,rankData.playerId);
  203. --[[
  204. if self.frameUrl ~= nil then
  205. CommonUtil.LoadIcon(self, self.frameUrl, function (sprite)
  206. rankItemLua.headItem.headFrame.image.sprite = sprite
  207. end)
  208. end
  209. ]]--
  210. rankItemLua.levelNum.text.text = tostring(rankData.leveLNum)
  211. rankItemLua.passedTime.text.text = rankData.passedTimeStr
  212. rankItemLua.vipIcon.image.enabled = false
  213. rankItemLua.vipIcon.image.sprite = nil
  214. local vipLv = rankData.vipLv
  215. if vipLv and vipLv >= 0 then
  216. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  217. if vipCfg then
  218. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  219. if sprite then
  220. rankItemLua.vipIcon.image.sprite = sprite
  221. rankItemLua.vipIcon.image.enabled = true
  222. end
  223. end, rankItemLua, 'VipIcon')
  224. end
  225. end
  226. --self.uiBase:AddButtonUniqueEventListener(rankItemLua.headItem.head.button,self,self.OnClickPlayerHead,rankData.playerId)
  227. end
  228. function UIClimbingTowerRankView:RefreshPeakTowerRankItem(rankItemLua,idx,rankData)
  229. if rankItemLua == nil or rankData == nil then
  230. return
  231. end
  232. if rankData.rank > 3 then
  233. rankItemLua.rank.text.text = tostring(rankData.rank)
  234. rankItemLua.rank:SetActive(true)
  235. rankItemLua.rankImg:SetActive(false)
  236. else
  237. rankItemLua.rankImg.image.sprite = rankItemLua.rankImg.switchSprite:GetSprite("icon_medal_"..rankData.rank)
  238. rankItemLua.rank:SetActive(false)
  239. rankItemLua.rankImg:SetActive(true)
  240. rankItemLua.rankImg.image:SetNativeSize()
  241. end
  242. local briefInfo = rankData.briefInfo
  243. rankItemLua.playerName:SetActive(briefInfo ~= nil)
  244. rankItemLua.headItem:SetActive(briefInfo ~= nil)
  245. rankItemLua.blockNum:SetActive(briefInfo ~= nil)
  246. rankItemLua.serverName:SetActive(briefInfo ~= nil)
  247. rankItemLua.vipIcon:SetActive(briefInfo ~= nil)
  248. if briefInfo then
  249. rankItemLua.playerName.text.text = briefInfo.nickName
  250. rankItemLua.headItem.levelText.text.text = tostring(briefInfo.level)
  251. local _jobIcon = nil;
  252. local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(briefInfo.configId)
  253. if jobCfg ~= nil then
  254. _jobIcon = jobCfg.JobIcon;
  255. end
  256. local _fakerData = {Level = briefInfo.level, ProfessionIcon = _jobIcon, HeadIcon = briefInfo.playerHead, IsHero = true};
  257. CommonUtil.SetPlayerHeadAndFrame(self, rankItemLua.headItem, _fakerData,false, briefInfo.headFrame , self, self.OnClickPlayerHead,briefInfo.uid);
  258. rankItemLua.blockNum.text.text = rankData.score
  259. rankItemLua.serverName.text.text = I18N.SetLanguageValue("TopTowerServer", briefInfo.selectZone-1)--ManagerContainer.LuaGameMgr.serverData.name--
  260. rankItemLua.vipIcon.image.enabled = false
  261. rankItemLua.vipIcon.image.sprite = nil
  262. local vipLv = rankData.vipLv
  263. if vipLv and vipLv >= 0 then
  264. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  265. if vipCfg then
  266. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  267. if sprite then
  268. rankItemLua.vipIcon.image.sprite = sprite
  269. rankItemLua.vipIcon.image.enabled = true
  270. end
  271. end, rankItemLua, 'VipIcon')
  272. end
  273. end
  274. end
  275. end
  276. function UIClimbingTowerRankView:OnClickCloseBtn()
  277. ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
  278. end
  279. function UIClimbingTowerRankView:OnClickSelfHead()
  280. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(I18N.T("ChatError1"))
  281. end
  282. function UIClimbingTowerRankView:OnClickPlayerHead(btn,param)
  283. local type = self.controller:GetCurTowerType()
  284. local uid = param[0]
  285. ManagerContainer.LuaUIMgr:OpenRoleMessagePanel(uid, type == Enum.UnlimitTowerType.PeakTower)
  286. end
  287. return UIClimbingTowerRankView