UIDojoRankView.lua 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. local UIDojoRankView = require("UIDojo/UIDojoRankView_Generate")
  2. function UIDojoRankView:OnAwake(data)
  3. self.controller = require("UIDojo/UIDojoRankCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UIDojoRankView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Refresh_Arena_Season_Rank_List,self,self.OnRefreshRankData);
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Refresh_Arena_Season_End,self,self.OnSeasonOver);
  10. end
  11. function UIDojoRankView: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. self:SetToggleBtnStatus()
  21. end
  22. function UIDojoRankView:Init()
  23. self.frameUrl = GlobalConfig.Instance:GetConfigStrValue(179)
  24. self.curSeasonToggle.toggle.interactable = true
  25. self.lastSeasonToggle.toggle.interactable = true
  26. self.rankScroll.loopVerticalScrollRect:SetDragLuaCallback(self.OnDragScrollView)
  27. end
  28. function UIDojoRankView:OnDragScrollView()
  29. local curTime = Time.realtimeSinceStartup
  30. if (curTime - self.lastReqTime) >= 0.1 then
  31. self.controller:RequireRankData(self.curRankType)
  32. self.lastReqTime = curTime
  33. end
  34. end
  35. function UIDojoRankView:SetToggleBtnStatus()
  36. self.toggles = {}
  37. self.toggles[1] = self.curSeasonToggle;
  38. self.toggles[2] = self.lastSeasonToggle;
  39. self.curToggleIdx = 1
  40. self.toggles[self.curToggleIdx].toggle.isOn = true
  41. --self.toggles[self.curToggleIdx].toggle.interactable = false
  42. self:ShowRankList(0)
  43. end
  44. function UIDojoRankView:RemoveEventListener()
  45. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  46. end
  47. function UIDojoRankView:AddUIEventListener()
  48. self.uiBase:AddButtonEventListener(self.AnyBtn.button,self, self.OnClickCloseBtn)
  49. self.uiBase:AddButtonEventListener(self.closeBtn.button,self, self.OnClickCloseBtn)
  50. self.uiBase:AddToggleEventListener(self.curSeasonToggle.toggle,self,self.OnClickTab,1)
  51. self.uiBase:AddToggleEventListener(self.lastSeasonToggle.toggle,self,self.OnClickTab,2)
  52. end
  53. function UIDojoRankView:OnHide()
  54. end
  55. function UIDojoRankView:OnShow(data)
  56. self.controller:SetData(data)
  57. self:Init()
  58. end
  59. function UIDojoRankView:OnClose()
  60. end
  61. function UIDojoRankView:OnDispose()
  62. self.rankScroll.loopVerticalScrollRect:ClearCells()
  63. end
  64. function UIDojoRankView:OnClickCloseBtn()
  65. ManagerContainer.LuaUIMgr:ClosePage(self.uiBase.PageId)
  66. end
  67. function UIDojoRankView:OnClickTab(selectedTog,toggleIdx, result)
  68. if self.curToggleIdx == toggleIdx then
  69. return
  70. end
  71. self.curToggleIdx = toggleIdx
  72. for i =1, #self.toggles do
  73. if i ~= (toggleIdx) then
  74. self.toggles[i].toggle.isOn = false
  75. self.toggles[i].toggle.interactable = true
  76. end
  77. end
  78. selectedTog.interactable = false
  79. if self.curToggleIdx == 2 then
  80. -- self:ShowRankList(1)
  81. ManagerContainer.DataMgr.ArenaData:SendArenaRankReq(1,1)
  82. elseif self.curToggleIdx == 1 then
  83. -- self:ShowRankList(0)
  84. ManagerContainer.DataMgr.ArenaData:SendArenaRankReq(0,1)
  85. end
  86. end
  87. function UIDojoRankView:OnSeasonOver()
  88. if self.curToggleIdx == 2 then
  89. -- self:ShowRankList(1)
  90. ManagerContainer.DataMgr.ArenaData:SendArenaRankReq(1,1)
  91. elseif self.curToggleIdx == 1 then
  92. -- self:ShowRankList(0)
  93. ManagerContainer.DataMgr.ArenaData:SendArenaRankReq(0,1)
  94. end
  95. end
  96. function UIDojoRankView:OnRefreshRankData(rankType)
  97. --[[
  98. if self.curRankType == rankType then
  99. return
  100. end]]--
  101. self:ShowRankList(rankType)
  102. end
  103. -- ranktype = 1, 上赛季, ranktype = 0 ,本赛季
  104. function UIDojoRankView:ShowRankList(rankType)
  105. if self.curRankType ~= rankType then
  106. self.lastReqTime = 0;
  107. self.rankScroll.loopVerticalScrollRect:ClearCells();
  108. self.controller:ResetIndex();
  109. end
  110. --LogError("ShowRankList")
  111. self.curRankType = rankType
  112. self.rankList = ManagerContainer.DataMgr.ArenaData:GetSeasonRanList(self.curRankType)
  113. if self.rankList~= nil and #self.rankList >= 1 then
  114. self.rankContent:SetActive(true)
  115. self.emptyNode:SetActive(false)
  116. CommonUtil.LoopGridViewEleCreateNew(self,
  117. self.rankScroll.loopVerticalScrollRect,
  118. nil,
  119. self.rankList,
  120. 0,
  121. self,
  122. self.OnUpdateRankData)
  123. else
  124. self.rankContent:SetActive(false)
  125. self.emptyNode:SetActive(true)
  126. end
  127. self:UpdateSelfRankData(rankType)
  128. end
  129. function UIDojoRankView:RefreshRankIcon(RandItem,Rank)
  130. RandItem.rank:SetActive(false)
  131. RandItem.madel01:SetActive(false)
  132. RandItem.madel02:SetActive(false)
  133. RandItem.madel03:SetActive(false)
  134. if Rank == 1 then
  135. RandItem.madel01:SetActive(true)
  136. RandItem.madel01.image:SetNativeSize()
  137. elseif Rank == 2 then
  138. RandItem.madel02:SetActive(true)
  139. RandItem.madel02.image:SetNativeSize()
  140. elseif Rank == 3 then
  141. RandItem.madel03:SetActive(true)
  142. RandItem.madel03.image:SetNativeSize()
  143. else
  144. RandItem.rank:SetActive(true)
  145. RandItem.rank.text.text = tostring(Rank)
  146. end
  147. end
  148. function UIDojoRankView:OnUpdateRankData(rankItemLua,idx,rankData)
  149. rankData = ManagerContainer.DataMgr.ArenaData:GetSeasonRanList(self.curRankType)[idx + 1]
  150. if rankItemLua == nil or rankData == nil then
  151. return
  152. end
  153. --rankItemLua.rank.text.text = tostring(rankData.rank)
  154. self:RefreshRankIcon(rankItemLua,rankData.rank)
  155. rankItemLua.playerName.text.text = CommonUtil.GetVaildNickName(rankData.playerName)
  156. rankItemLua.fighterPower.text.text = rankData.score--rankData.playerFighterPower 修改为积分
  157. local _jobIcon = nil;
  158. local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(rankData.playerJobId)
  159. if jobCfg ~= nil then
  160. _jobIcon = jobCfg.JobIcon;
  161. end
  162. --[[
  163. if rankData.playerHead ~= nil then
  164. CommonUtil.LoadIcon(self, rankData.playerHead, function (sprite)
  165. rankItemLua.headItem.head.image.sprite = sprite
  166. end)
  167. end
  168. CommonUtil.LoadIcon(self, self.frameUrl, function (sprite)
  169. rankItemLua.headItem.headFrame.image.sprite = sprite
  170. end)
  171. rankItemLua.headItem.levelText.text.text = tostring(rankData.playerLevel)
  172. ]]--
  173. rankItemLua.danName.text.text = I18N.T(rankData.danName)
  174. if rankData.danIcon ~= nil and rankData.danIcon ~= "" then
  175. CommonUtil.LoadIcon(self, rankData.danIcon, function (sprite)
  176. rankItemLua.danIcon.image.sprite = sprite
  177. end)
  178. end
  179. local _fakerData = {Level = rankData.playerLevel, ProfessionIcon = _jobIcon, HeadIcon = rankData.playerHead, IsHero = true};
  180. CommonUtil.SetPlayerHeadAndFrame(self, rankItemLua.headItem, _fakerData,false, rankData.headFrameId, self, self.OnClickPlayerHead, rankData.playerId);
  181. rankItemLua.vipIcon.image.enabled = false
  182. rankItemLua.vipIcon.image.sprite = nil
  183. local vipLv = rankData.vipLv
  184. if vipLv and vipLv >= 0 then
  185. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  186. if vipCfg then
  187. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  188. if sprite then
  189. rankItemLua.vipIcon.image.sprite = sprite
  190. rankItemLua.vipIcon.image.enabled = true
  191. end
  192. end, rankItemLua, 'VipIcon')
  193. end
  194. end
  195. --self.uiBase:AddButtonUniqueEventListener(rankItemLua.headItem.head.button,self,self.OnClickPlayerHead,rankData.playerId)
  196. self.uiBase:AddButtonUniqueEventListener(rankItemLua.viewBtn.button,self,self.OnClickPlayerHead,rankData.playerId)
  197. end
  198. function UIDojoRankView:UpdateSelfRankData(rankType)
  199. local arenaData = ManagerContainer.DataMgr.ArenaData
  200. local userData = ManagerContainer.DataMgr.UserData
  201. local rank = arenaData:GetRank(rankType)
  202. if rank == 0 then
  203. self.rank.text.text = I18N.T("NoRank")
  204. else
  205. self.rank.text.text = tostring(rank)
  206. end
  207. self.playerName.text.text = userData:GetUserNickname()
  208. self.fighterPower.text.text = arenaData:GetSelfSeasonScore(rankType)--userData:GetTotalFightPower() 修改为积分
  209. local _headIcon = ManagerContainer.DataMgr.UserData:GetUserHeadIcon()
  210. if self.frameUrl ~= nil then
  211. CommonUtil.LoadIcon(self, self.frameUrl, function (sprite)
  212. self.headItem.headFrame.image.sprite = sprite
  213. end)
  214. end
  215. --LogError("------UpdateSelfRankData--" )
  216. local danIcon,danName = arenaData:GetCurDanInfoByRank(rankType)
  217. self.danName.text.text = I18N.T(danName)
  218. if danIcon ~= nil and danIcon ~= "" then
  219. CommonUtil.LoadIcon(self, danIcon, function (sprite,loadseqId,assetPath,assetName)
  220. local danIcon,danName = arenaData:GetCurDanInfoByRank(rankType)
  221. if danIcon == assetName[1] then
  222. self.danIcon.image.sprite = sprite
  223. end
  224. end)
  225. end
  226. local _headFrameId = ManagerContainer.DataMgr.UserData:GetHeadFrameId();
  227. local _fakerData = {Level = userData:GetRoleLv(), ProfessionIcon = userData:GetJobIcon(), HeadIcon = _headIcon, IsHero = true};
  228. CommonUtil.SetPlayerHeadAndFrame(self, self.headItem, _fakerData,false, _headFrameId, self, self.OnClickSelfHead);
  229. self.vipIcon.image.enabled = false
  230. self.vipIcon.image.sprite = nil
  231. local vipLv = userData:GetVipLv()
  232. if vipLv and vipLv >= 0 then
  233. local vipCfg = ManagerContainer.CfgMgr:GetVipCfgById(vipLv)
  234. if vipCfg then
  235. CommonUtil.LoadIcon(self, vipCfg.SmallIcon, function(sprite)
  236. if sprite then
  237. self.vipIcon.image.sprite = sprite
  238. self.vipIcon.image.enabled = true
  239. end
  240. end)
  241. end
  242. end
  243. --self.uiBase:AddButtonUniqueEventListener(self.headItem.head.button,self,self.OnClickSelfHead)
  244. end
  245. function UIDojoRankView:OnClickSelfHead()
  246. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(I18N.T("ChatError1"))
  247. end
  248. function UIDojoRankView:OnClickPlayerHead(btn,param)
  249. local uid = param[0]
  250. ManagerContainer.LuaUIMgr:OpenRoleMessagePanel(uid)
  251. end
  252. return UIDojoRankView