UIClimbingTowerRankView.lua 12 KB

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