UIActivityTowerView.lua 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. local UIActivityTowerView = require("UIActivity/UIActivityTowerView_Generate")
  2. local IconItemCtr = require("Common/IconItemCtr")
  3. local IconPetItemCtr = require("Common/IconPetItemCtr")
  4. local TaskJumpCtr = require( "Common/TaskJumpCtr")
  5. local RankBgColorIcon = {"FrameNew/bg_label_red", "FrameNew/bg_label_yellow", "FrameNew/bg_label_purple", "FrameNew/bg_label_blue", "FrameNew/bg_label_green", "FrameNew/bg_label_green"}
  6. local RankBGColor = {Color(1, 0.76, 0.72, 1), Color(1, 0.86, 0.57, 1), Color(0.98, 0.67, 1, 1), Color(0.65, 0.87, 1, 1), Color(0.66, 0.92, 0.71, 1), Color(0.66, 0.92, 0.71, 1)}
  7. local pageToggleData = {}
  8. local countlimit = 10
  9. local reward
  10. --是否考虑提出共同点放入配表?
  11. local typeIdxCfgDatas
  12. function UIActivityTowerView:OnAwake(data)
  13. self.controller = require("UIActivity/UIActivityTowerCtr"):new()
  14. self.controller:Init(self)
  15. self.controller:SetData(data)
  16. end
  17. function UIActivityTowerView:AddEventListener()
  18. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  19. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RANK_ACTIVITY_DISPLAY_NTF, self, self.RefreshEndTime)
  20. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RANK_ACTIVITY_REWARD_SUCCESS_NTF, self, self.RefreshRankReward)
  21. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.RUNE_SHOP_DATA_CHANGED, self, self.RefreshNew)
  22. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.PET_RANK_QUERY_ACK_REFRESH, self, self.RefreshQueryPetRankDatas)
  23. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.SKILL_RANK_QUERY_ACK_REFRESH, self, self.RefreshQueryPetRankDatas)
  24. end
  25. function UIActivityTowerView:FillContent(data, uiBase)
  26. self.uiBase = uiBase
  27. local gameObject = self.uiBase:GetRoot()
  28. if gameObject ~= nil then
  29. self.gameObject = gameObject
  30. self.transform = gameObject.transform
  31. end
  32. self:InitGenerate(self.transform, data)
  33. self:Init()
  34. end
  35. function UIActivityTowerView:Init()
  36. self.rankIdx = 0
  37. self.controller:InitData()
  38. self:InitGrid()
  39. self:InitTopInfo()
  40. end
  41. function UIActivityTowerView:InitGrid()
  42. self.RankListScroll.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  43. return self:GetRankItemByRowColumn(gridView, itemIndex, row, column)
  44. end, nil)
  45. self.LimitedListScroll.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  46. return self:GetShopItemByRowColumn(gridView, itemIndex, row, column)
  47. end, nil)
  48. self.delayTimer = FrameTimer.New(function()
  49. self.RankListScroll:SetActive(true)
  50. self.LimitedListScroll:SetActive(true)
  51. end, 1)
  52. self.delayTimer:Start()
  53. end
  54. function UIActivityTowerView:InitTopInfo()
  55. local type, idx = self.controller:GetType(), self.controller:GetIdx()
  56. if not type or not idx then return end
  57. local cfgDatas = ManagerContainer.CfgMgr:GetRushListTargetCfgByTypeAndIdx(type,idx)
  58. if not cfgDatas then return end
  59. self.type = 1 --2toggle
  60. if type == Enum.RankActivitiesType.MapProgress then
  61. self.type = 2 --3toggle
  62. end
  63. if type <= Enum.RankActivitiesType.Dojo or type >= Enum.RankActivitiesType.Pet then
  64. self.rewardsToggle.text.uILocalizeScript:SetContent("RankReward")
  65. elseif type == Enum.RankActivitiesType.MapProgress then
  66. self.rewardsToggle.text.uILocalizeScript:SetContent("AdvReward")
  67. end
  68. if self.type == 1 then
  69. countlimit = cfgDatas[1].Rank[1][1]
  70. if cfgDatas[1] then
  71. reward = cfgDatas[1].Reward[1]
  72. end
  73. end
  74. if type == Enum.RankActivitiesType.ClimbingTower then
  75. ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.TowerRankChanged, false)
  76. elseif type == Enum.RankActivitiesType.Dojo then
  77. ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.ArenaRankChanged, false)
  78. elseif type == Enum.RankActivitiesType.MapProgress then
  79. ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.MapRankChanged, false)
  80. elseif type == Enum.RankActivitiesType.Pet then
  81. ManagerContainer.RedPointSimpleMgr:RPNotify(Enum.RPNotifyType.PetRankChanged, false)
  82. end
  83. local cfgDatas = ManagerContainer.CfgMgr:GetRushListCfgByTypeAndIdx(type,idx)
  84. if not cfgDatas then return end
  85. local cfgData = cfgDatas[1]
  86. if not cfgData.Banner then return end
  87. CommonUtil.LoadIcon(self, cfgData.Banner[1], function (sprite)
  88. self.banner1.image.sprite = sprite
  89. end)
  90. CommonUtil.LoadIcon(self, cfgData.Banner[2], function (sprite)
  91. self.banner2.image.sprite = sprite
  92. end)
  93. if cfgData.Banner[3] then
  94. CommonUtil.LoadIcon(self, cfgData.Banner[3], function (sprite)
  95. self.banner3.image.sprite = sprite
  96. end)
  97. end
  98. local stage, endTime = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityStageEndTime(type)
  99. if not stage or not endTime then return end
  100. local remainS = ManagerContainer.LuaTimerMgr:GetRemainSecondsWithUInt64(endTime, false)
  101. if stage == 1 then
  102. if remainS <= 60 then
  103. self.timeTxt.text.text = I18N.SetLanguageValue("ActCloseTime", I18N.T("LessOneMinu"))
  104. else
  105. local time = DateTimeUtil.convertSeconds2TimeStr1(remainS, true, false)
  106. self.timeTxt.text.text = I18N.SetLanguageValue("ActCloseTime", time)
  107. end
  108. elseif stage == 2 then
  109. if remainS <= 0 then
  110. self.timeTxt.text.text = I18N.T("EndReward")
  111. elseif remainS <= 60 then
  112. self.timeTxt.text.text = I18N.SetLanguageValue("ButCloseTime", I18N.T("LessOneMinu"))
  113. else
  114. local time = DateTimeUtil.convertSeconds2TimeStr1(remainS, true, false)
  115. self.timeTxt.text.text = I18N.SetLanguageValue("ButCloseTime", time)
  116. end
  117. end
  118. end
  119. function UIActivityTowerView:RefreshEndTime(type, state)
  120. if type ~= self.controller:GetType() then return end
  121. if not state then
  122. self.timeTxt.text.text = I18N.T("EndReward")
  123. return
  124. end
  125. local stage, endTime = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityStageEndTime(self.controller:GetType())
  126. if not stage or not endTime then return end
  127. local remainS = ManagerContainer.LuaTimerMgr:GetRemainSecondsWithUInt64(endTime, false)
  128. if stage == 1 then
  129. if remainS <= 0 then
  130. ManagerContainer.DataMgr.RankActivitiesMgr:QueryRankActivitiesData()
  131. elseif remainS <= 60 then
  132. self.timeTxt.text.text = I18N.SetLanguageValue("ActCloseTime", I18N.T("LessOneMinu"))
  133. else
  134. local time = DateTimeUtil.convertSeconds2TimeStr1(remainS, true, false)
  135. self.timeTxt.text.text = I18N.SetLanguageValue("ActCloseTime", time)
  136. end
  137. elseif stage == 2 then
  138. self.saleToggle:SetActive(false)
  139. if pageToggleData.toggleDefaultIndex == 2 then
  140. self.rewardsToggle.toggle.isOn = true
  141. end
  142. if remainS <= 0 then
  143. self.timeTxt.text.text = I18N.T("EndReward")
  144. ManagerContainer.DataMgr.RankActivitiesMgr:QueryRankActivitiesData()
  145. elseif remainS <= 60 then
  146. self.timeTxt.text.text = I18N.SetLanguageValue("ButCloseTime", I18N.T("LessOneMinu"))
  147. else
  148. local time = DateTimeUtil.convertSeconds2TimeStr1(remainS, true, false)
  149. self.timeTxt.text.text = I18N.SetLanguageValue("ButCloseTime", time)
  150. end
  151. end
  152. self:RefreshMineInfo(self.controller:GetType())
  153. if pageToggleData.toggleDefaultIndex == 3 then
  154. if self.type == 1 then
  155. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 2, self.OnValueChangedToggle, self, true)
  156. elseif self.type == 2 then
  157. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, 1, self.OnValueChangedToggle, self, true)
  158. end
  159. end
  160. end
  161. function UIActivityTowerView:OnValueChangedToggle(index, needRefresh)
  162. local type, idx = self.controller:GetType(), self.controller:GetIdx()
  163. if not type or not idx then return end
  164. local rankData = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityData(type)
  165. if not rankData then return end
  166. local rankListState = (type ~= Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 2)
  167. or (type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex <= 2)
  168. local limitedState = pageToggleData.toggleDefaultIndex == 3
  169. self.banner1:SetActive(pageToggleData.toggleDefaultIndex == 1)
  170. self.banner2:SetActive(pageToggleData.toggleDefaultIndex == 2)
  171. self.banner3:SetActive(pageToggleData.toggleDefaultIndex == 3)
  172. self.rankListBox:SetActive(rankListState)
  173. self.limitedBox:SetActive(limitedState)
  174. --self.btnGoto:SetActive(pageToggleData.toggleDefaultIndex == 1)
  175. --self.btnGetRewards:SetActive(pageToggleData.toggleDefaultIndex == 1)
  176. if rankListState then
  177. if type ~= Enum.RankActivitiesType.MapProgress or (type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 2) then
  178. typeIdxCfgDatas = ManagerContainer.CfgMgr:GetRushListCfgByTypeAndIdx(type,idx)
  179. elseif type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 1 then
  180. typeIdxCfgDatas = ManagerContainer.CfgMgr:GetRushListTargetCfgByTypeAndIdx(type,idx)
  181. end
  182. if not typeIdxCfgDatas then return end
  183. self:RefreshMineInfo(type)
  184. if not needRefresh then
  185. self.RankListScroll.loopGridView:RefreshListByIndex(#typeIdxCfgDatas, 0)
  186. else
  187. self.RankListScroll.loopGridView:RefreshListByIndex(#typeIdxCfgDatas)
  188. end
  189. if type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 1 then
  190. local idx = self.rankIdx > 0 and self.rankIdx - 1 or 0
  191. self.RankListScroll.loopGridView:MovePanelToItemByIndex(idx)
  192. end
  193. --
  194. --CommonUtil.LoopGridViewEleCreateNew(self, self.RankListScroll.loopVerticalScrollRect, nil, cfgDatas, 0, nil, function (itemLua, idx)
  195. -- local data = cfgDatas[idx + 1]
  196. -- self:RefreshRankRewardItem(rankData, itemLua, data, idx)
  197. --end)
  198. elseif limitedState then
  199. local datas = self.controller:GetShowGoodsDatas()
  200. if not datas then return end
  201. if not needRefresh then
  202. self.LimitedListScroll.loopGridView:RefreshListByIndex(#datas, 0)
  203. else
  204. self.LimitedListScroll.loopGridView:RefreshListByIndex(#datas)
  205. end
  206. --self.LimitedListScroll.loopGridView:SetListItemCount(#datas, false)
  207. --CommonUtil.LoopGridViewEleCreateNew(self, self.LimitedListScroll.loopVerticalScrollRect, nil, datas, 0, nil, function (itemLua, idx)
  208. -- local data = datas[idx + 1]
  209. -- self:RefreshRankShopItem(itemLua, data, idx)
  210. --end)
  211. end
  212. end
  213. function UIActivityTowerView:RefreshRankReward(rewardType)
  214. local type = self.controller:GetType()
  215. if type == Enum.RankActivitiesType.MapProgress then
  216. ManagerContainer.DataMgr.RankActivitiesMgr:QueryCurRankActivityData(type)
  217. end
  218. self:InitTopInfo()
  219. self:OnValueChangedToggle(nil, true)
  220. end
  221. function UIActivityTowerView:RefreshNew()
  222. local stage, endTime = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityStageEndTime(self.controller:GetType())
  223. if not stage or not endTime then return end
  224. local datas = self.controller:GetShowGoodsDatas()
  225. self.saleToggle:SetActive(datas and next(datas) and stage == 1)
  226. if pageToggleData.toggleDefaultIndex == 3 then
  227. self:OnValueChangedToggle(nil, true)
  228. end
  229. end
  230. function UIActivityTowerView:RefreshMineInfo(type)
  231. local stage, endTime = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityStageEndTime(type)
  232. if not stage or not endTime then return end
  233. local rankData = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityData(type)
  234. if not rankData then return end
  235. self.myScore:SetActive(type ~= Enum.RankActivitiesType.MapProgress)
  236. self.myScoreAdv:SetActive(type == Enum.RankActivitiesType.MapProgress)
  237. local textScore = ""
  238. if type ~= Enum.RankActivitiesType.MapProgress then
  239. if type == Enum.RankActivitiesType.ClimbingTower then
  240. textScore = "DscTowerLevel"
  241. self.myScore.numScore.text.text = rankData.selfLevel
  242. elseif type == Enum.RankActivitiesType.Dojo then
  243. textScore = "DojoScore2"
  244. self.myScore.numScore.text.text = rankData.selfLevel
  245. elseif type == Enum.RankActivitiesType.Pet then
  246. textScore = "PetScoreTotal"
  247. self.myScore.numScore.text.text = rankData.selfScore
  248. elseif type == Enum.RankActivitiesType.Skill then
  249. textScore = "Skillrepresslv"
  250. self.myScore.numScore.text.text = rankData.selfLevel
  251. end
  252. self.myScore.numRank.text.text = rankData.selfRank == 0 and I18N.T("NoRank") or rankData.selfRank
  253. self.myScore.textScore.uILocalizeScript:SetContent(textScore)
  254. else
  255. textScore = "AllRoadScore"
  256. self.myScoreAdv.numScore.text.text = rankData.mapScore + rankData.bagScore
  257. self.myScoreAdv.numGiftScore.text.text = I18N.SetLanguageValue("IncludeGift", rankData.bagScore)
  258. self.myScoreAdv.numRank.text.text = rankData.selfRank == 0 and I18N.T("NoRank") or rankData.selfRank
  259. end
  260. local cfgDatas
  261. if type ~= Enum.RankActivitiesType.MapProgress or (type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 2) then
  262. if reward then
  263. local data = {cfgId = tonumber(reward[1]), num = tonumber(reward[2])}
  264. IconItemCtr:SetData(self, self.iconSmallItem, data, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  265. end
  266. self.bottom:SetActive(true)
  267. self.floorsTask:SetActive(type ~= Enum.RankActivitiesType.MapProgress)
  268. if type ~= Enum.RankActivitiesType.MapProgress then
  269. local condition = rankData.fightCount
  270. if type == Enum.RankActivitiesType.Pet then
  271. condition = rankData.selfScore
  272. self.floorsTask.dsc.uILocalizeScript:SetContent("PetRankTarget")
  273. elseif type == Enum.RankActivitiesType.Skill then
  274. condition = rankData.selfLevel
  275. self.floorsTask.dsc.uILocalizeScript:SetContent("Skillrepresslv")
  276. else
  277. self.floorsTask.dsc.uILocalizeScript:SetContent("DscChallengeTime")
  278. end
  279. local count = math.min(condition, countlimit)
  280. self.floorsTask.times.text.text = count.."/"..countlimit
  281. local completed = condition >= countlimit
  282. self.floorsTask.textTitle:SetActive(not completed)
  283. self.floorsTask.btnReceive:SetActive(completed and not rankData.challengReward)
  284. self.floorsTask.labelReceived:SetActive(completed and rankData.challengReward)
  285. self.floorsTask.labelOver:SetActive(not completed and stage == 2)
  286. end
  287. cfgDatas = ManagerContainer.CfgMgr:GetRushListCfgByTypeAndIdx(type,self.controller:GetIdx())
  288. if not cfgDatas then return end
  289. self.rankIdx = 0
  290. if rankData.selfRank > 0 then
  291. for i = #cfgDatas, 1, -1 do
  292. local cfgData = cfgDatas[i]
  293. if cfgData.Rank[1][2] == 0 then
  294. self.rankIdx = cfgData.RankGrade
  295. elseif rankData.selfRank <= cfgData.Rank[1][2] then
  296. self.rankIdx = cfgData.RankGrade
  297. end
  298. end
  299. end
  300. self.btnGoto:SetActive(stage == 1)
  301. local state = pageToggleData.toggleDefaultIndex <= 2
  302. self.btnGetRewards:SetActive(self.rankIdx > 0 and stage == 2 and state and rankData.selfRank > 0 and not rankData.rankReward)
  303. elseif type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 1 then
  304. self.bottom:SetActive(false)
  305. cfgDatas = ManagerContainer.CfgMgr:GetRushListTargetCfgByTypeAndIdx(type,self.controller:GetIdx())
  306. if not cfgDatas then return end
  307. self.rankIdx = 0
  308. for i = #cfgDatas, 1, -1 do
  309. local cfgData = cfgDatas[i]
  310. if rankData.rushLevel >= cfgData.Rank[1][1] then
  311. if cfgData.Rank[1][2] == 0 or rankData.rushLevel <= cfgData.Rank[1][2] then
  312. self.rankIdx = cfgData.TargetGrade
  313. end
  314. end
  315. end
  316. self.btnGoto:SetActive(stage == 1)
  317. self.btnGetRewards:SetActive(self.rankIdx > 0 and stage == 2 and pageToggleData.toggleDefaultIndex == 1 and not rankData.challengReward)
  318. end
  319. end
  320. function UIActivityTowerView:GetRankItemByRowColumn(gridView, itemIndex, row, column)
  321. local type, idx = self.controller:GetType(), self.controller:GetIdx()
  322. --local cfgDatas
  323. --if type <= Enum.RankActivitiesType.Dojo or (type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 2) then
  324. -- cfgDatas = ManagerContainer.CfgMgr:GetRushListCfgByTypeAndIdx(type,idx)
  325. --elseif type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 1 then
  326. -- cfgDatas = ManagerContainer.CfgMgr:GetRushListTargetCfgByTypeAndIdx(type,idx)
  327. --end
  328. local rankData = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityData(type)
  329. if not rankData then return end
  330. local item = gridView:NewListViewItem('RankRewardsItem')
  331. item.gameObject.name = itemIndex
  332. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'RankRewardsItem', item.gameObject)
  333. local data = typeIdxCfgDatas[itemIndex + 1]
  334. if type <= Enum.RankActivitiesType.Dojo or (type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 2)then
  335. self:RefreshRankRewardItem(rankData, itemlua, data, itemIndex)
  336. elseif type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 1 then
  337. self:RefreshMapRankRewardItem(rankData, itemlua, data, itemIndex)
  338. elseif type == Enum.RankActivitiesType.Pet then
  339. self:RefreshPetRewardItem(rankData, itemlua, data, itemIndex)
  340. elseif type == Enum.RankActivitiesType.Skill then
  341. self:RefreshSkillRewardItem(rankData, itemlua, data, itemIndex)
  342. end
  343. return item
  344. end
  345. function UIActivityTowerView:RefreshPetRewardItem(rankData, itemLua, cfgData, idx)
  346. local type = self.controller:GetType()
  347. itemLua.textName:SetActive(true)
  348. local playerInfo = rankData.topData[idx + 1]
  349. local colorIdx = idx + 1 < #RankBGColor and idx + 1 or #RankBGColor
  350. itemLua.nameBG.image.color = RankBGColor[colorIdx]
  351. CommonUtil.LoadIcon(self, RankBgColorIcon[colorIdx], function (sprite)
  352. itemLua.imageLabel.image.sprite = sprite
  353. end, itemLua, "rankBg")
  354. itemLua.textDsc:SetActive(playerInfo ~= nil)
  355. itemLua.num:SetActive(playerInfo ~= nil)
  356. if playerInfo.name == "NoneRank" then
  357. itemLua.textName.text.text = I18N.T("NoneRank")
  358. itemLua.num.text.text = "-----"
  359. else
  360. if idx < 50 then
  361. itemLua.textName.text.text = CommonUtil.GetVaildNickName(playerInfo.name)
  362. else
  363. itemLua.textName.text.text = I18N.T("LowestPetScore")
  364. end
  365. itemLua.num.text.text = playerInfo.totalScore
  366. if type == Enum.RankActivitiesType.ClimbingTower then
  367. itemLua.textDsc.uILocalizeScript:SetContent("DscTowerLevel")
  368. elseif type == Enum.RankActivitiesType.Dojo then
  369. itemLua.textDsc.uILocalizeScript:SetContent("DojoScore2")
  370. elseif type == Enum.RankActivitiesType.MapProgress then
  371. itemLua.textDsc.uILocalizeScript:SetContent("DojoScore2")
  372. elseif type == Enum.RankActivitiesType.Pet then
  373. itemLua.textDsc.uILocalizeScript:SetContent("PetScoreTotal")
  374. end
  375. end
  376. if idx < 50 then
  377. itemLua.labelRank.text.uILocalizeScript:SetContentAndValues("ActivityPetRank", {idx + 1})
  378. else
  379. itemLua.labelRank.text.uILocalizeScript:SetContentAndValues("ActivityPetRank", {I18N.T("PetRankList")})
  380. end
  381. itemLua.RewardsNode:SetActive(false)
  382. itemLua.pets:SetActive(true)
  383. CommonUtil.LoadIcon(self, cfgData.TitleIcon, function (sprite)
  384. itemLua.pets.icon.image.sprite = sprite
  385. end, itemLua, "rewardIcon")
  386. for i = 1, 4 do
  387. local exist = playerInfo and playerInfo.info and playerInfo.info[i] ~= nil
  388. local pet = itemLua.pets["pet"..i]
  389. pet:SetActive(exist)
  390. if exist then
  391. local info = playerInfo.info[i]
  392. local data = {
  393. cfgId = info.petCfgId,
  394. level = info.petLevel,
  395. }
  396. IconPetItemCtr:SetData(self, pet.iconPetItem, data, nil, self, self.OnPetClick, info)
  397. pet.num.text.text = info.petScore
  398. end
  399. end
  400. self.uiBase:AddButtonUniqueEventListener(itemLua.pets.icon.button, self, self.OnShowPetRankReward, cfgData.Reward)
  401. self.controller:SetCurPetPage(idx)
  402. local rankData = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityData(type)
  403. if not rankData then return end
  404. if idx < 50 then
  405. itemLua.labelEstimate:SetActive(rankData.selfRank == idx + 1 and not rankData.rankReward)
  406. itemLua.labelReceived:SetActive(rankData.selfRank == idx + 1 and rankData.rankReward)
  407. else
  408. itemLua.labelEstimate:SetActive(rankData.selfRank > 50 and not rankData.rankReward)
  409. itemLua.labelReceived:SetActive(rankData.selfRank > 50 and rankData.rankReward)
  410. end
  411. end
  412. function UIActivityTowerView:RefreshSkillRewardItem(rankData, itemLua, cfgData, idx)
  413. local type = self.controller:GetType()
  414. itemLua.textName:SetActive(true)
  415. local playerInfo = rankData.topData[idx + 1]
  416. local colorIdx = idx + 1 < #RankBGColor and idx + 1 or #RankBGColor
  417. itemLua.nameBG.image.color = RankBGColor[colorIdx]
  418. CommonUtil.LoadIcon(self, RankBgColorIcon[colorIdx], function (sprite)
  419. itemLua.imageLabel.image.sprite = sprite
  420. end, itemLua, "rankBg")
  421. itemLua.textDsc:SetActive(playerInfo ~= nil)
  422. itemLua.num:SetActive(playerInfo ~= nil)
  423. if playerInfo.name == "NoneRank" then
  424. itemLua.textName.text.text = I18N.T("NoneRank")
  425. itemLua.textDsc.uILocalizeScript:SetContent("Skillrepresslv")
  426. itemLua.num.text.text = "-----"
  427. else
  428. if idx < 50 then
  429. itemLua.textName.text.text = CommonUtil.GetVaildNickName(playerInfo.name)
  430. else
  431. itemLua.textName.text.text = I18N.T("LowestPetScore")
  432. end
  433. itemLua.num.text.text = playerInfo.data
  434. if type == Enum.RankActivitiesType.ClimbingTower then
  435. itemLua.textDsc.uILocalizeScript:SetContent("DscTowerLevel")
  436. elseif type == Enum.RankActivitiesType.Dojo then
  437. itemLua.textDsc.uILocalizeScript:SetContent("DojoScore2")
  438. elseif type == Enum.RankActivitiesType.MapProgress then
  439. itemLua.textDsc.uILocalizeScript:SetContent("DojoScore2")
  440. elseif type == Enum.RankActivitiesType.Pet then
  441. itemLua.textDsc.uILocalizeScript:SetContent("PetScoreTotal")
  442. elseif type == Enum.RankActivitiesType.Skill then
  443. itemLua.textDsc.uILocalizeScript:SetContent("Skillrepresslv")
  444. end
  445. end
  446. if idx < 50 then
  447. itemLua.labelRank.text.uILocalizeScript:SetContentAndValues("ActivityPetRank", {idx + 1})
  448. else
  449. itemLua.labelRank.text.uILocalizeScript:SetContentAndValues("ActivityPetRank", {I18N.T("PetRankList")})
  450. end
  451. itemLua.RewardsNode:SetActive(true)
  452. itemLua.pets:SetActive(false)
  453. CommonUtil.LoadIcon(self, cfgData.TitleIcon, function (sprite)
  454. itemLua.pets.icon.image.sprite = sprite
  455. end, itemLua, "rewardIcon")
  456. local itemDatas = {}
  457. for _,v in pairs(cfgData.Reward) do
  458. local itemData = {cfgId = v[1], num = v[2]}
  459. itemDatas[#itemDatas + 1] = itemData
  460. end
  461. CommonUtil.BatchCreateItemsLoopSpawnPrefabNew1(self, itemDatas, Enum.PrefabNames.IconSmallItem, "IconItem", itemLua.RewardsNode.transform, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  462. self.uiBase:AddButtonUniqueEventListener(itemLua.pets.icon.button, self, self.OnShowPetRankReward, cfgData.Reward)
  463. self.controller:SetCurPetPage(idx)
  464. local rankData = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityData(type)
  465. if not rankData then return end
  466. if idx < 50 then
  467. itemLua.labelEstimate:SetActive(rankData.selfRank == idx + 1 and not rankData.rankReward)
  468. itemLua.labelReceived:SetActive(rankData.selfRank == idx + 1 and rankData.rankReward)
  469. else
  470. itemLua.labelEstimate:SetActive(rankData.selfRank > 50 and not rankData.rankReward)
  471. itemLua.labelReceived:SetActive(rankData.selfRank > 50 and rankData.rankReward)
  472. end
  473. end
  474. function UIActivityTowerView:OnPetClick(button, params)
  475. local petData = params[0]
  476. local petInfo = params[2]
  477. if not petData or not petInfo then return end
  478. local petCfgData = ManagerContainer.CfgMgr:GetPetDataById(petData.cfgId)
  479. if not petCfgData then return end
  480. IconPetItemCtr:SetData(self, self.petTips.iconPetItem, petData)
  481. self.petTips.namepet.text.text = I18N.T(petCfgData.Name)
  482. self.petTips.scoreTotal.text.text = petInfo.petScore
  483. CommonUtil.LoadIcon(self, Constant.Quality_CardType_Icons[petCfgData.Quality], function (sprite)
  484. self.petTips.iconlabel.image.sprite = sprite
  485. end, self, "petType")
  486. self.petTips.grade.score.text.text = petInfo.qualityScore
  487. self.petTips.lv.numlv.text.text = petInfo.petLevel
  488. self.petTips.lv.score.text.text = petInfo.levelScore
  489. self.petTips.skill.numskilllv.text.text = petInfo.totalSkillLevel
  490. self.petTips.skill.score.text.text = petInfo.skillScore
  491. self.petTips:SetActive(true)
  492. self.clickMask:SetActive(true)
  493. end
  494. function UIActivityTowerView:OnClickMaskClick()
  495. self.clickMask:SetActive(false)
  496. self.petTips:SetActive(false)
  497. end
  498. function UIActivityTowerView:RefreshQueryPetRankDatas()
  499. self.RankListScroll.loopGridView:RefreshAllShownItem()
  500. end
  501. function UIActivityTowerView:GetShopItemByRowColumn(gridView, itemIndex, row, column)
  502. local datas = self.controller:GetShowGoodsDatas()
  503. if not datas then return end
  504. local item = gridView:NewListViewItem('RankShopLimitedItem')
  505. item.gameObject.name = itemIndex
  506. local itemlua = CommonUtil.BindGridViewItem2Lua(self, 'RankShopLimitedItem', item.gameObject)
  507. local data = datas[itemIndex + 1]
  508. self:RefreshRankShopItem(itemlua, data, itemIndex)
  509. return item
  510. end
  511. function UIActivityTowerView:RefreshMapRankRewardItem(rankData, itemLua, cfgData, idx)
  512. itemLua.textName:SetActive(true)
  513. itemLua.textDsc:SetActive(false)
  514. itemLua.num:SetActive(false)
  515. itemLua.RewardsNode:SetActive(true)
  516. CommonUtil.LoadIcon(self, RankBgColorIcon[idx + 1], function (sprite)
  517. itemLua.imageLabel.image.sprite = sprite
  518. end, itemLua, "rankBg")
  519. itemLua.nameBG.image.color = RankBGColor[idx + 1]
  520. itemLua.labelRank.text.uILocalizeScript:SetContent(cfgData.Label)
  521. itemLua.textName.text.text = I18N.T(cfgData.Des)
  522. local itemDatas = {}
  523. for _,v in pairs(cfgData.Reward) do
  524. local itemData = {cfgId = v[1], num = v[2]}
  525. itemDatas[#itemDatas + 1] = itemData
  526. end
  527. CommonUtil.BatchCreateItemsLoopSpawnPrefabNew1(self, itemDatas, Enum.PrefabNames.IconSmallItem, "IconItem", itemLua.RewardsNode.transform, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  528. itemLua.labelEstimate:SetActive(self.rankIdx > 0 and self.rankIdx == idx + 1 and not rankData.challengReward)
  529. itemLua.labelReceived:SetActive(self.rankIdx > 0 and self.rankIdx == idx + 1 and rankData.challengReward)
  530. end
  531. function UIActivityTowerView:RefreshRankRewardItem(rankData, itemLua, cfgData, idx)
  532. local type = self.controller:GetType()
  533. itemLua.textName:SetActive(true)
  534. itemLua.RewardsNode:SetActive(true)
  535. local playerInfo = rankData.topData[idx + 1]
  536. CommonUtil.LoadIcon(self, RankBgColorIcon[idx + 1], function (sprite)
  537. itemLua.imageLabel.image.sprite = sprite
  538. end, itemLua, "rankBg")
  539. itemLua.nameBG.image.color = RankBGColor[idx + 1]
  540. itemLua.textDsc:SetActive(playerInfo ~= nil)
  541. itemLua.num:SetActive(playerInfo ~= nil)
  542. if not playerInfo then
  543. itemLua.textName.text.text = I18N.T("NoneRank")
  544. else
  545. if idx > 2 then
  546. if type == Enum.RankActivitiesType.ClimbingTower then
  547. itemLua.textName.text.text = I18N.T("LowestFloor")
  548. elseif type == Enum.RankActivitiesType.Dojo or type == Enum.RankActivitiesType.MapProgress then
  549. itemLua.textName.text.text = I18N.T("LowestScore")
  550. end
  551. itemLua.textDsc:SetActive(false)
  552. else
  553. itemLua.textName.text.text = CommonUtil.GetVaildNickName(playerInfo.name)
  554. end
  555. itemLua.num.text.text = playerInfo.data
  556. if type == Enum.RankActivitiesType.ClimbingTower then
  557. itemLua.textDsc.uILocalizeScript:SetContent("DscTowerLevel")
  558. elseif type == Enum.RankActivitiesType.Dojo then
  559. itemLua.textDsc.uILocalizeScript:SetContent("DojoScore2")
  560. elseif type == Enum.RankActivitiesType.MapProgress then
  561. itemLua.textDsc.uILocalizeScript:SetContent("DojoScore2")
  562. elseif type == Enum.RankActivitiesType.Pet then
  563. itemLua.textDsc.uILocalizeScript:SetContent("DojoScore2")
  564. end
  565. end
  566. itemLua.labelRank.text.uILocalizeScript:SetContent("RushRank"..(idx + 1))
  567. local itemDatas = {}
  568. for _,v in pairs(cfgData.Reward) do
  569. local itemData = {cfgId = v[1], num = v[2]}
  570. itemDatas[#itemDatas + 1] = itemData
  571. end
  572. CommonUtil.BatchCreateItemsLoopSpawnPrefabNew1(self, itemDatas, Enum.PrefabNames.IconSmallItem, "IconItem", itemLua.RewardsNode.transform, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  573. itemLua.labelEstimate:SetActive(self.rankIdx > 0 and self.rankIdx == idx + 1 and not rankData.rankReward)
  574. itemLua.labelReceived:SetActive(self.rankIdx > 0 and self.rankIdx == idx + 1 and rankData.rankReward)
  575. end
  576. function UIActivityTowerView:RefreshRankShopItem(itemLua, data, idx)
  577. local cfgData = data.cfgData
  578. CommonUtil.LoadIcon(self, cfgData.Banner, function (sprite)
  579. itemLua.itemBg.image.sprite = sprite
  580. end)
  581. CommonUtil.LoadIcon(self, cfgData.NameImg, function (sprite)
  582. itemLua.itemText.image.sprite = sprite
  583. end)
  584. itemLua.saveLabel.text.text.text = cfgData.ExtraNum
  585. itemLua.presentPrice.number.text.text = data.price
  586. itemLua.labelLimited.textLimited.uILocalizeScript:SetContentAndValues("RushListLimitBuy", {data:GetRemainBuyNum()})
  587. itemLua.soldout:SetActive(not data:IsCanBuy())
  588. local itemDatas = {}
  589. for _,v in pairs(cfgData.Reward) do
  590. local itemData = {cfgId = v[1], num = v[2]}
  591. itemDatas[#itemDatas + 1] = itemData
  592. end
  593. CommonUtil.BatchCreateItemsLoopSpawnPrefabNew(self, itemDatas, Enum.PrefabNames.RankShopRewardIconItem, itemLua.RewardsNode.transform, Enum.ItemIEnterType.Bag, self, self.OnItemClick)
  594. self.uiBase:AddButtonUniqueEventListener(itemLua.presentPrice.button, self, self.OnPay, data)
  595. end
  596. function UIActivityTowerView:OnItemClick(button, params)
  597. local data = params[0]
  598. ManagerContainer.LuaUIMgr:OpenTips(data)
  599. end
  600. function UIActivityTowerView:OnPay(button, params)
  601. local data = params[0]
  602. local errorCode = ManagerContainer.PayMgr:RankActivityPay(self.controller:GetType(), data.id)
  603. local errorCodeKey = ManagerContainer.PayMgr:GetInitPayErrorCodeLangKey(errorCode)
  604. if not errorCodeKey then
  605. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCodeKey)
  606. end
  607. end
  608. function UIActivityTowerView:RemoveEventListener()
  609. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  610. end
  611. function UIActivityTowerView:AddUIEventListener()
  612. self.uiBase:AddButtonEventListener(self.backBtn.button, self, self.OnCloseClick)
  613. self.uiBase:AddButtonEventListener(self.btnQuestion.button, self, self.OnHelperClick)
  614. self.uiBase:AddButtonEventListener(self.btnGoto.button, self, self.OnGotoClick)
  615. self.uiBase:AddButtonEventListener(self.floorsTask.btnReceive.button, self, self.OnReceiveClick)
  616. self.uiBase:AddButtonEventListener(self.btnGetRewards.button, self, self.OnRankRewardClick)
  617. self.uiBase:AddButtonEventListener(self.clickMask.button, self, self.OnClickMaskClick)
  618. local type = self.controller:GetType()
  619. local stage, endTime = ManagerContainer.DataMgr.RankActivitiesMgr:GetCurRankActivityStageEndTime(self.controller:GetType())
  620. if not stage or not endTime then return end
  621. self.mapToggle:SetActive(type == Enum.RankActivitiesType.MapProgress)
  622. local idx = type == Enum.RankActivitiesType.MapProgress and 1 or 2
  623. CommonUtil.CreateToggleMouduleOnlyBtns(self, pageToggleData, self.toggleGroup, idx, self.OnValueChangedToggle, self, true)
  624. self.saleToggle:SetActive(false)
  625. end
  626. function UIActivityTowerView:OnCloseClick()
  627. self:UIClose()
  628. end
  629. function UIActivityTowerView:OnHelperClick()
  630. local type = self.controller:GetType()
  631. if not type then return end
  632. local rule = "RushRankRule"..type
  633. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPlayRule, {'PlayExplainTitle', rule})
  634. end
  635. function UIActivityTowerView:OnGotoClick()
  636. local type = self.controller:GetType()
  637. if type == Enum.RankActivitiesType.ClimbingTower then
  638. local unlockState, val, content = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(32)
  639. if not unlockState then
  640. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(content)
  641. return
  642. end
  643. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTower, nil, self.uiData.id)
  644. elseif type == Enum.RankActivitiesType.Dojo then
  645. local unlockState, val, content = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(8)
  646. if not unlockState then
  647. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(content)
  648. return
  649. end
  650. ManagerContainer.DataMgr.ArenaData:SendArenaDataReq(Enum.UIPageName.UIDojo2D, self.uiData.id)
  651. --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojo2D, nil, self.uiData.id)
  652. elseif type == Enum.RankActivitiesType.MapProgress then
  653. self:OnCloseClick()
  654. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Adventure)
  655. elseif type == Enum.RankActivitiesType.Pet then
  656. self:OnCloseClick()
  657. local unlockState, val, content = ManagerContainer.UIFuncUnlockMgr:GetFuncLockStatusById(15)
  658. if not unlockState then
  659. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(content)
  660. return
  661. end
  662. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.UIMAINVIEW_CHANGE_NOTICE, Enum.MainViewPageType.Battle)
  663. elseif type == Enum.RankActivitiesType.Skill then
  664. TaskJumpCtr:JumpBuyCfgId(38)
  665. end
  666. end
  667. function UIActivityTowerView:OnReceiveClick()
  668. self.controller:SendRewardReq(1)
  669. end
  670. function UIActivityTowerView:OnRankRewardClick()
  671. local type = self.controller:GetType()
  672. if type == Enum.RankActivitiesType.MapProgress and pageToggleData.toggleDefaultIndex == 1 then
  673. self.controller:SendRewardReq(1)
  674. else
  675. self.controller:SendRewardReq(2)
  676. end
  677. end
  678. function UIActivityTowerView:OnShowPetRankReward(button, params)
  679. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIRewardsTips, params[0])
  680. end
  681. function UIActivityTowerView:OnHide()
  682. if self.delayTimer then
  683. self.delayTimer:Stop()
  684. self.delayTimer = nil
  685. end
  686. --
  687. --CommonUtil.RecycleFromBatchItemsByPrefabName(self, Enum.PrefabNames.IconSmallItem)
  688. --self.RankListScroll.loopGridView:Dispose()
  689. --
  690. --CommonUtil.RecycleFromBatchItemsByPrefabName(self, Enum.PrefabNames.RankShopRewardIconItem)
  691. --self.LimitedListScroll.loopGridView:Dispose()
  692. end
  693. function UIActivityTowerView:OnShow(data)
  694. self.controller:SetData(data)
  695. end
  696. function UIActivityTowerView:OnClose()
  697. if self.delayTimer then
  698. self.delayTimer:Stop()
  699. self.delayTimer = nil
  700. end
  701. CommonUtil.RecycleFromBatchItemsByPrefabName(self, Enum.PrefabNames.IconSmallItem)
  702. self.RankListScroll.loopGridView:Dispose()
  703. CommonUtil.RecycleFromBatchItemsByPrefabName(self, Enum.PrefabNames.RankShopRewardIconItem)
  704. self.LimitedListScroll.loopGridView:Dispose()
  705. end
  706. function UIActivityTowerView:OnDispose()
  707. self.controller:OnDispose()
  708. end
  709. return UIActivityTowerView