UIChangeServerView.lua 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. local UIChangeServerView = require("UIRoleMessage/UIChangeServerView_Generate")
  2. local BgColor1 = Color(0.8862745, 0.9294118, 0.9921569)
  3. local BgColor2 = Color.white
  4. local NameColor1 = Color(0.3333333, 0.3686275, 0.454902)
  5. local NameColor2 = Color.white
  6. function UIChangeServerView:OnAwake(data)
  7. self.controller = require("UIRoleMessage/UIChangeServerCtr"):new()
  8. self.controller:Init(self)
  9. self.controller:SetData(data)
  10. end
  11. function UIChangeServerView:AddEventListener()
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  13. end
  14. function UIChangeServerView:FillContent(data, uiBase)
  15. self.uiBase = uiBase
  16. local gameObject = self.uiBase:GetRoot()
  17. if gameObject ~= nil then
  18. self.gameObject = gameObject
  19. self.transform = gameObject.transform
  20. end
  21. self:InitGenerate(self.transform, data)
  22. self:Init()
  23. end
  24. function UIChangeServerView:Init()
  25. self.controller:InitData()
  26. self.lastClickToggle = nil
  27. local pageType = self.controller:GetCurPageType()
  28. self:RefreshServerGroupToggle(pageType)
  29. self.recommendServerLoop.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  30. return self:GetServerItemByRowColumn(gridView, itemIndex, row, column)
  31. end, function(gridView, itemIndex, row, column, loopGridViewItem)
  32. self:RecycleServerItem(gridView, itemIndex, row, column, loopGridViewItem)
  33. end)
  34. self.allServerLoop.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  35. return self:GetServerItemByRowColumn(gridView, itemIndex, row, column)
  36. end, function(gridView, itemIndex, row, column, loopGridViewItem)
  37. self:RecycleServerItem(gridView, itemIndex, row, column, loopGridViewItem)
  38. end)
  39. self.allServerGroupLoop.loopGridView:InitGridView(0, function(gridView, itemIndex, row, column)
  40. return self:GetServerGroupItemByRowColumn(gridView, itemIndex, row, column)
  41. end, nil)
  42. self.recommendServerLoop.loopGridView.ScrollRect.enabled = false
  43. self.allServerLoop.loopGridView.ScrollRect.enabled = false
  44. self.allServerGroupLoop.loopGridView.ScrollRect.enabled = false
  45. end
  46. function UIChangeServerView:RemoveEventListener()
  47. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  48. end
  49. function UIChangeServerView:AddUIEventListener()
  50. self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickAnyBtn)
  51. self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
  52. self.uiBase:AddToggleUniqueEventListener(self.recommendToggle.toggle, self, self.OnClickToggle, Enum.ChangeServerPageType.Recommend)
  53. self.uiBase:AddToggleUniqueEventListener(self.allToggle.toggle, self, self.OnClickToggle, Enum.ChangeServerPageType.All)
  54. end
  55. function UIChangeServerView:OnHide()
  56. end
  57. function UIChangeServerView:OnShow(data)
  58. self.controller:SetData(data)
  59. end
  60. function UIChangeServerView:OnClose()
  61. end
  62. function UIChangeServerView:OnDispose()
  63. if self.waitingCo then
  64. coroutine.stop(self.waitingCo)
  65. self.waitingCo = nil
  66. end
  67. self:ClearServerWWW()
  68. self.recommendServerLoop.loopGridView:Dispose()
  69. self.allServerLoop.loopGridView:Dispose()
  70. self.allServerGroupLoop.loopGridView:Dispose()
  71. if self.newRpSeqId then
  72. ManagerContainer.ResMgr:UnloadAssetBySeqId(self.newRpSeqId)
  73. self.newRpSeqId = nil
  74. end
  75. self:DisposeNewRPGo()
  76. self.controller:OnDispose()
  77. end
  78. function UIChangeServerView:OnPageInEnd()
  79. self.super.OnPageInEnd(self)
  80. self.recommendServerLoop.loopGridView.ScrollRect.enabled = true
  81. self.allServerLoop.loopGridView.ScrollRect.enabled = true
  82. self.allServerGroupLoop.loopGridView.ScrollRect.enabled = true
  83. end
  84. function UIChangeServerView:OnClickAnyBtn()
  85. self:UIClose()
  86. end
  87. function UIChangeServerView:OnClickCloseBtn()
  88. self:UIClose()
  89. end
  90. function UIChangeServerView:OnClickToggle(tog, params, isOn)
  91. if not isOn then
  92. local pageType = self.controller:GetCurPageType()
  93. local curPage = params[0]
  94. if curPage == pageType then
  95. tog.isOn = true
  96. end
  97. return
  98. end
  99. local curPage = params[0]
  100. if not self.controller:SetCurPageType(curPage) then
  101. return
  102. end
  103. self:RefreshServerGroupToggle(curPage)
  104. end
  105. function UIChangeServerView:OnClickServerItem(btn, params)
  106. local itemIndex = params[0]
  107. if not itemIndex then
  108. return
  109. end
  110. local serverData = self.controller:GetServerItemDataByItemIdx(itemIndex)
  111. if not serverData then
  112. return
  113. end
  114. if self.controller:IsCurServer(serverData.ServerId) then
  115. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('ServerSwitching01')
  116. return
  117. end
  118. if serverData.State == Enum.ServerState.Full then
  119. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('ServerSwitching03')
  120. return
  121. elseif serverData.State == Enum.ServerState.Maintain then
  122. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('ServerSwitching02')
  123. return
  124. end
  125. if self.controller:IsOnlyChangeServer() then
  126. if ManagerContainer.LoginMgr:IsLoginWaiting() then
  127. ManagerContainer.LuaGameMgr:ClearServerData()
  128. ManagerContainer.LuaGameMgr:InitServerData(serverData.ServerId, serverData.ServerName, serverData.Ip, serverData.Port, serverData.State)
  129. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CURRENT_SERVER_CHANGED)
  130. end
  131. self:UIClose()
  132. return
  133. end
  134. local data = {"SureChangeServerTip", {serverData.ServerName}, serverData, self, self.SureChangeServer}
  135. local sortingOrder = nil
  136. if self.uiBase.initSortingOrder ~= Enum.UISibling[self.uiData.type + 1] then
  137. sortingOrder = self.uiBase.initSortingOrder + 1
  138. end
  139. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data, nil, nil, nil, sortingOrder)
  140. end
  141. function UIChangeServerView:SureChangeServer(serverData)
  142. self.waitingCo = RegisterDelayStep(function()
  143. self.waitingCo = nil
  144. self:UIClose()
  145. if ManagerContainer.DataMgr.UserData:IsInitedOver() then
  146. ManagerContainer.DataMgr.UserData:SDKExitGame()
  147. end
  148. if ManagerContainer.LoginMgr:IsLoginWaiting() then
  149. ManagerContainer.LuaGameMgr:ClearServerData()
  150. ManagerContainer.LuaGameMgr:InitServerData(serverData.ServerId, serverData.ServerName, serverData.Ip, serverData.Port, serverData.State)
  151. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.CURRENT_SERVER_CHANGED)
  152. ManagerContainer.LuaGameMgr:ReLogin()
  153. end
  154. end)
  155. end
  156. function UIChangeServerView:OnClickServerGroupItem(btn, params)
  157. local itemIndex = params[0]
  158. if not itemIndex then
  159. return
  160. end
  161. if not self.controller:SetCurSelectGroupIdx(itemIndex) then
  162. return
  163. end
  164. self:RefreshView(true, false)
  165. self:RefreshData()
  166. end
  167. function UIChangeServerView:RefreshServerGroupToggle(pageType)
  168. self.recommendToggle.toggle.isOn = (pageType == Enum.ChangeServerPageType.Recommend)
  169. self.allToggle.toggle.isOn = (pageType == Enum.ChangeServerPageType.All)
  170. self:RefreshView(true, true)
  171. self:RefreshData()
  172. end
  173. function UIChangeServerView:RefreshData()
  174. local needUpdate = self.controller:CheckCacheData()
  175. if not needUpdate then
  176. return
  177. end
  178. local pageType = self.controller:GetCurPageType()
  179. if not self.reqServerMap then
  180. self.reqServerMap = {}
  181. end
  182. if pageType == Enum.ChangeServerPageType.Recommend then
  183. local reqServerInfo = self.reqServerMap[pageType]
  184. if reqServerInfo then
  185. return
  186. end
  187. local openId = ManagerContainer.LuaGameMgr.openId
  188. local url = PlatformPack.SERVERLIST_URL .. '?type=22'
  189. url = ManagerContainer.LuaGameMgr:ComposeCommonServerInfo(url)
  190. self.reqServerMap[pageType] = UnityEngine.WWW(url)
  191. elseif pageType == Enum.ChangeServerPageType.All then
  192. local pageId = self.controller:GetCurSelectServerGroupIdx()
  193. local openId = ManagerContainer.LuaGameMgr.openId
  194. local url = PlatformPack.SERVERLIST_URL .. '?type=23'
  195. if pageId then
  196. url = url .. '&page=' .. tostring(pageId)
  197. else
  198. pageId = 0
  199. end
  200. url = ManagerContainer.LuaGameMgr:ComposeCommonServerInfo(url)
  201. local reqServerInfos = self.reqServerMap[pageType]
  202. if reqServerInfos then
  203. local reqServerInfo = reqServerInfos[pageId]
  204. if reqServerInfo then
  205. return
  206. end
  207. else
  208. reqServerInfos = {}
  209. self.reqServerMap[pageType] = reqServerInfos
  210. end
  211. reqServerInfos[pageId] = {
  212. reqWWW = UnityEngine.WWW(url),
  213. pageId = pageId,
  214. }
  215. else
  216. return
  217. end
  218. if not self.serverCheckTimer then
  219. self.serverCheckTimer = FrameTimer.New(slot(self.CheckServerWWW, self), 1, -1)
  220. end
  221. if not self.serverCheckTimer.running then
  222. self.serverCheckTimer:Start()
  223. end
  224. end
  225. function UIChangeServerView:CheckServerWWW()
  226. local allDone = true
  227. local hasError = false
  228. local hasValid = false
  229. if self.reqServerMap then
  230. local reqWWW = self.reqServerMap[Enum.ChangeServerPageType.Recommend]
  231. if reqWWW then
  232. if reqWWW.isDone then
  233. if not reqWWW.error or reqWWW.error == '' then
  234. local ok, result = RO_XPCALL(JSON.decode, debug.traceback, JSON, reqWWW.text)
  235. if ok then
  236. self.controller:UpdateServerData(result, Enum.ChangeServerPageType.Recommend)
  237. hasValid = true
  238. else
  239. LogError('[wboy] CheckServerFail ' .. tostring(result))
  240. end
  241. else
  242. hasError = true
  243. end
  244. self.reqServerMap[Enum.ChangeServerPageType.Recommend] = nil
  245. reqWWW:Dispose()
  246. reqWWW = nil
  247. else
  248. allDone = false
  249. end
  250. end
  251. local reqServerInfos = self.reqServerMap[Enum.ChangeServerPageType.All]
  252. if reqServerInfos then
  253. for key, reqServerInfo in pairs(reqServerInfos) do
  254. reqWWW = reqServerInfo.reqWWW
  255. if reqWWW then
  256. if reqWWW.isDone then
  257. if not reqWWW.error or reqWWW.error == '' then
  258. local ok, result = RO_XPCALL(JSON.decode, debug.traceback, JSON, reqWWW.text)
  259. if ok then
  260. self.controller:UpdateServerData(result, Enum.ChangeServerPageType.All, reqServerInfo.pageId)
  261. hasValid = true
  262. else
  263. LogError('[wboy] CheckServerFail ' .. tostring(result))
  264. end
  265. else
  266. hasError = true
  267. end
  268. reqServerInfos[key] = nil
  269. reqServerInfo.reqWWW = nil
  270. reqWWW:Dispose()
  271. reqWWW = nil
  272. else
  273. allDone = false
  274. end
  275. end
  276. end
  277. end
  278. end
  279. if allDone then
  280. if self.serverCheckTimer then
  281. self.serverCheckTimer:Stop()
  282. end
  283. end
  284. if hasError then
  285. ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('ServerSwitching04')
  286. end
  287. if hasValid then
  288. self:RefreshView()
  289. end
  290. end
  291. function UIChangeServerView:ClearServerWWW()
  292. if self.serverCheckTimer then
  293. self.serverCheckTimer:Stop()
  294. self.serverCheckTimer = nil
  295. end
  296. if self.reqServerMap then
  297. local reqWWW = self.reqServerMap[Enum.ChangeServerPageType.Recommend]
  298. if reqWWW then
  299. self.reqServerMap[Enum.ChangeServerPageType.Recommend] = nil
  300. reqWWW:Dispose()
  301. reqWWW = nil
  302. end
  303. local reqServerInfos = self.reqServerMap[Enum.ChangeServerPageType.All]
  304. if reqServerInfos then
  305. for key, reqServerInfo in pairs(reqServerInfos) do
  306. reqWWW = reqServerInfo.reqWWW
  307. if reqWWW then
  308. reqServerInfos[key] = nil
  309. reqServerInfo.reqWWW = nil
  310. reqWWW:Dispose()
  311. reqWWW = nil
  312. end
  313. end
  314. end
  315. end
  316. self.reqServerMap = nil
  317. end
  318. function UIChangeServerView:IsSomeFrameCount(keyName)
  319. local value = self[keyName]
  320. if value and value >= Time.frameCount then
  321. return true
  322. end
  323. self[keyName] = Time.frameCount
  324. return false
  325. end
  326. function UIChangeServerView:GetServerItemByRowColumn(gridView, itemIndex, row, column)
  327. local serverData, playerData = self.controller:GetServerItemDataByItemIdx(itemIndex)
  328. if not serverData then return nil end
  329. local item = gridView:NewListViewItem('AllServerItem')
  330. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'AllServerItem', item.gameObject)
  331. if itemLua then
  332. itemLua.serverName.text.text = tostring(serverData.ServerName)
  333. local jobCfgId = nil
  334. local lv = nil
  335. local heroFrameId = nil
  336. local sex = nil
  337. local playerName = nil
  338. local curServer = self.controller:IsCurServer(serverData.ServerId)
  339. if serverData.State == Enum.ServerState.Maintain then
  340. itemLua.labelCurrent:SetActive(false)
  341. itemLua.labelMaintaining:SetActive(true)
  342. elseif curServer then
  343. itemLua.labelCurrent:SetActive(true)
  344. itemLua.labelMaintaining:SetActive(false)
  345. else
  346. itemLua.labelCurrent:SetActive(false)
  347. itemLua.labelMaintaining:SetActive(false)
  348. end
  349. if serverData.State == Enum.ServerState.Beta then
  350. itemLua.redPointTesting:SetActive(true)
  351. self:RecycleNew(itemLua)
  352. elseif serverData.New then
  353. itemLua.redPointTesting:SetActive(false)
  354. if serverData.STime then
  355. local timesamp = self:DecodeDataToTimestamp(serverData.STime)
  356. timesamp = os.difftime(os.time(), timesamp)
  357. if self.controller:IsValidNew(timesamp) then
  358. self:AddNew(itemLua)
  359. else
  360. self:RecycleNew(itemLua)
  361. end
  362. else
  363. self:RecycleNew(itemLua)
  364. end
  365. else
  366. itemLua.redPointTesting:SetActive(false)
  367. self:RecycleNew(itemLua)
  368. end
  369. if curServer then
  370. local userData = ManagerContainer.DataMgr.UserData
  371. if userData and userData:IsInitedOver() then
  372. jobCfgId = userData:GetJobCfgId()
  373. lv = userData:GetRoleLv()
  374. heroFrameId = userData:GetHeadFrameId()
  375. sex = userData:GetSex()
  376. playerName = userData:GetUserNickname()
  377. end
  378. end
  379. if not jobCfgId then
  380. jobCfgId = playerData.JobCfgId
  381. end
  382. if not lv then
  383. lv = playerData.Level
  384. end
  385. if not sex then
  386. sex = playerData.Gender
  387. end
  388. if (sex and sex > 0 and jobCfgId and jobCfgId > 0 and lv and lv > 0) then
  389. if not heroFrameId then
  390. heroFrameId = playerData.HeadFrameId
  391. end
  392. if not playerName then
  393. playerName = CommonUtil.GetVaildNickName(playerData.NickName)
  394. end
  395. itemLua.playerBox:SetActive(true)
  396. itemLua.playerBox.nameTxt.text.text = tostring(playerName)
  397. itemLua.playerBox.num.text.text = string.formatbykey('Lv') .. tostring(lv)
  398. itemLua.playerBox.jobIcon.image.enabled = false
  399. itemLua.playerBox.jobIcon.image.sprite = nil
  400. itemLua.playerBox.headIcon.image.enabled = false
  401. itemLua.playerBox.headIcon.image.sprite = nil
  402. if jobCfgId then
  403. local jobCfg = ManagerContainer.CfgMgr:GetJobDataById(jobCfgId)
  404. if jobCfg then
  405. CommonUtil.LoadIcon(self, jobCfg.JobIcon, function (sprite)
  406. if sprite then
  407. itemLua.playerBox.jobIcon.image.sprite = sprite
  408. itemLua.playerBox.jobIcon.image.enabled = true
  409. end
  410. end)
  411. end
  412. local roleCfg = ManagerContainer.CfgMgr:GetRoleDataById(CommonUtil.JobIdToRoleId(jobCfgId, sex))
  413. if roleCfg then
  414. CommonUtil.LoadIcon(self, roleCfg.HeadId or '', function (sprite)
  415. if sprite then
  416. itemLua.playerBox.headIcon.image.sprite = sprite
  417. itemLua.playerBox.headIcon.image.enabled = true
  418. end
  419. end)
  420. end
  421. end
  422. itemLua.playerBox.frame.image.enabled = false
  423. itemLua.playerBox.frame.image.sprite = nil
  424. if heroFrameId then
  425. local headFramePath = CommonUtil.GetHeadFrameName(heroFrameId)
  426. CommonUtil.LoadIcon(self, headFramePath, function (sprite)
  427. if sprite then
  428. itemLua.playerBox.frame.image.sprite = sprite
  429. itemLua.playerBox.frame.image.enabled = true
  430. end
  431. end)
  432. end
  433. else
  434. itemLua.playerBox:SetActive(false)
  435. end
  436. self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnClickServerItem, itemIndex)
  437. end
  438. return item
  439. end
  440. function UIChangeServerView:RecycleServerItem(gridView, itemIndex, row, column, loopGridViewItem)
  441. local itemLua = CommonUtil.GetBindGridViewItem2Lua(self, 'AllServerItem', loopGridViewItem.gameObject)
  442. self:RecycleNew(itemLua)
  443. end
  444. function UIChangeServerView:AddNew(itemLua)
  445. if not itemLua then return end
  446. if itemLua.newGo then return end
  447. local newRPGo = ManagerContainer.ResMgr:GetGoFromPool(Constants.UICommonPath, 'UINewRP')
  448. if not newRPGo then
  449. if not self.preNewRPGos then
  450. self.preNewRPGos = {}
  451. end
  452. self.preNewRPGos[itemLua] = itemLua
  453. if not self.newRpSeqId then
  454. self.newRpSeqId = ManagerContainer.ResMgr:LuaLoadAssets(Enum.ResourceType.GameObject, Constants.UICommonPath, {'UINewRP'}, self, self.NewRPLoadComplete)
  455. end
  456. return
  457. end
  458. itemLua.newGo = newRPGo
  459. newRPGo.transform:SetParent(itemLua.labelNew.transform)
  460. newRPGo.transform.localPosition = Vector3.zero
  461. newRPGo.transform.localRotation = Quaternion.identity
  462. newRPGo.transform.localScale = Vector3.one
  463. newRPGo:SetActive(true)
  464. if not self.newRPGos then
  465. self.newRPGos = {}
  466. end
  467. self.newRPGos[#self.newRPGos+1] = newRPGo
  468. end
  469. function UIChangeServerView:NewRPLoadComplete()
  470. self.newRpSeqId = nil
  471. if not self.preNewRPGos then return end
  472. for _, parent in pairs(self.preNewRPGos) do
  473. self:AddNew(parent)
  474. end
  475. end
  476. function UIChangeServerView:DisposeNewRPGo()
  477. if self.newRPGos then
  478. for _, newGo in pairs(self.newRPGos) do
  479. ManagerContainer.ResMgr:RecycleGO(Constants.UICommonPath, 'UINewRP', newGo)
  480. end
  481. end
  482. self.newRPGos = nil
  483. self.preNewRPGos = nil
  484. end
  485. function UIChangeServerView:RecycleNew(itemLua)
  486. if not itemLua then return end
  487. if itemLua.newGo then
  488. if self.newRPGos then
  489. for i = 1, #self.newRPGos do
  490. if self.newRPGos[i] == itemLua.newGo then
  491. table.remove(self.newRPGos, i)
  492. end
  493. end
  494. end
  495. if self.preNewRPGos then
  496. self.preNewRPGos[itemLua] = nil
  497. end
  498. ManagerContainer.ResMgr:RecycleGO(Constants.UICommonPath, 'UINewRP', itemLua.newGo)
  499. itemLua.newGo = nil
  500. end
  501. end
  502. function UIChangeServerView:GetServerGroupItemByRowColumn(gridView, itemIndex, row, column)
  503. local item = gridView:NewListViewItem('AllServerGroupItem')
  504. local itemLua = CommonUtil.BindGridViewItem2Lua(self, 'AllServerGroupItem', item.gameObject)
  505. if itemLua then
  506. local gray = ((itemIndex % 2) == 1)
  507. itemLua.bGColor.image.color = (gray and BgColor1 or BgColor2)
  508. local startId, endId = self.controller:GetServerGroupItemDataByItemIdx(itemIndex)
  509. if not startId or not endId then
  510. itemLua.serverGroupName.text.text = ''
  511. itemLua.allChosenTagImage:SetActive(false)
  512. itemLua.button.onClick:RemoveAllListeners()
  513. else
  514. itemLua.serverGroupName.text.text = string.formatbykey('ServerGroupName', endId, startId)
  515. if self.controller:IsCurSelectGroup(itemIndex) then
  516. itemLua.allChosenTagImage:SetActive(true)
  517. itemLua.serverGroupName.text.color = NameColor2
  518. else
  519. itemLua.allChosenTagImage:SetActive(false)
  520. itemLua.serverGroupName.text.color = NameColor1
  521. end
  522. self.uiBase:AddButtonUniqueEventListener(itemLua.button, self, self.OnClickServerGroupItem, itemIndex)
  523. end
  524. end
  525. return item
  526. end
  527. function UIChangeServerView:RefreshView(resetPos1, resetPos2)
  528. local curPage = self.controller:GetCurPageType()
  529. if curPage == Enum.ChangeServerPageType.Recommend then
  530. self.recommendRoot:SetActive(true)
  531. self.allRoot:SetActive(false)
  532. self:RefreshRecommendView(resetPos1)
  533. elseif curPage == Enum.ChangeServerPageType.All then
  534. self.recommendRoot:SetActive(false)
  535. self.allRoot:SetActive(true)
  536. self:RefreshAllGroupView(resetPos2)
  537. self:RefreshAllItemView(resetPos1)
  538. else
  539. self.recommendRoot:SetActive(false)
  540. self.allRoot:SetActive(false)
  541. end
  542. end
  543. function UIChangeServerView:RefreshRecommendView(resetPos)
  544. local loopGridView = self.recommendServerLoop.loopGridView
  545. local length = self.controller:GetServerItemDataLength()
  546. if resetPos then
  547. loopGridView:RefreshListByIndex(length, 0)
  548. else
  549. loopGridView:RefreshListByIndex(length)
  550. end
  551. end
  552. function UIChangeServerView:RefreshAllGroupView(resetPos)
  553. local loopGridView = self.allServerGroupLoop.loopGridView
  554. local length = self.controller:GetServerGroupItemDataLength()
  555. if resetPos then
  556. loopGridView:RefreshListByIndex(length, 0)
  557. else
  558. loopGridView:RefreshListByIndex(length)
  559. end
  560. end
  561. function UIChangeServerView:RefreshAllItemView(resetPos)
  562. local loopGridView = self.allServerLoop.loopGridView
  563. local length = self.controller:GetServerItemDataLength()
  564. if resetPos or length ~= loopGridView.RealItemTotalCount then
  565. loopGridView:RefreshListByIndex(length, 0)
  566. else
  567. loopGridView:RefreshListByIndex(length)
  568. end
  569. end
  570. function UIChangeServerView:DecodeDataToTimestamp(dataStr)
  571. local matchFun = string.gmatch(dataStr, '%d+')
  572. local time = {}
  573. time.year = matchFun()
  574. time.month = matchFun()
  575. time.day = matchFun()
  576. time.hour = matchFun()
  577. time.min = matchFun()
  578. time.sec = matchFun()
  579. return os.time(time)
  580. end
  581. return UIChangeServerView