UILanuchView.lua 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. local UILanuchView = require("UILanuch/UILanuchView_Generate")
  2. function UILanuchView:OnAwake(data)
  3. self.controller = require("UILanuch/UILanuchCtr"):new()
  4. self.controller:Init(self)
  5. self.controller:SetData(data)
  6. end
  7. function UILanuchView:AddEventListener()
  8. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.UI_PAGE_IN_END_NTF, self, self.OnUIViewOpenAnimEnd)
  9. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Loading_Begin, self, self.OnLoadingBegin)
  10. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Loading_Progress, self, self.OnLoadingProgress)
  11. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Loading_Complete, self, self.OnLoadingComplete)
  12. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_Loading_Close, self, self.OnLoadingClose)
  13. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_ENTER_CREATE_ROLE, self, self.OnEnterCreateRole)
  14. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CURRENT_SERVER_CHANGED, self, self.OnCurrentServerChanged)
  15. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CURRENT_SPECIAL_INFO_CHANGED, self, self.OnCurrentSpecialInfoChanged)
  16. end
  17. function UILanuchView:FillContent(data, uiBase)
  18. self.uiBase = uiBase
  19. local gameObject = self.uiBase:GetRoot()
  20. if gameObject ~= nil then
  21. self.gameObject = gameObject
  22. self.transform = gameObject.transform
  23. end
  24. self:InitGenerate(self.transform, data)
  25. self:Init()
  26. end
  27. function UILanuchView:Init()
  28. if ManagerContainer.LoginMgr.relogin then
  29. self.loginAnim.animator:Play('LoginShow', -1)
  30. self.loginAnim.animator:Update(0)
  31. else
  32. self.loginAnim.animator:Play('LoginKeep')
  33. end
  34. self.btnCADPA:SetActive(false)
  35. self.loginRoot:SetActive(false)
  36. self.loadingRoot:SetActive(false)
  37. self.logo:SetActive(true)
  38. self.serverBtnState = nil
  39. self:RefreshServer()
  40. self:RefreshVersionCode()
  41. self:RefreshSpecialInfo()
  42. if PlatformPack.ShowHealthBulletin then
  43. self.editionTxt:SetActive(true)
  44. else
  45. self.editionTxt:SetActive(false)
  46. end
  47. end
  48. function UILanuchView:RemoveEventListener()
  49. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  50. end
  51. function UILanuchView:AddUIEventListener()
  52. self.uiBase:AddButtonUniqueEventListener(self.btnEnter.button, self, self.OnClickEnterBtn)
  53. self.uiBase:AddButtonUniqueEventListener(self.btnServer.button, self, self.OnClickServerBtn)
  54. self.uiBase:AddButtonUniqueEventListener(self.btnNotice.button, self, self.OnClickNoticeBtn)
  55. self.uiBase:AddButtonUniqueEventListener(self.btnCADPA.button, self, self.OnClickCadpaBtn)
  56. end
  57. function UILanuchView:OnHide()
  58. end
  59. function UILanuchView:OnShow(data)
  60. self.controller:SetData(data)
  61. self.btnCADPA:SetActive(false)
  62. end
  63. function UILanuchView:OnClose()
  64. end
  65. function UILanuchView:OnDispose()
  66. self.serverBtnState = nil
  67. if self.enterTimer then
  68. self.enterTimer:Stop()
  69. self.enterTimer = nil
  70. end
  71. self.createRole = nil
  72. self.uiMainOpenWaiting = nil
  73. if self.closeTimer then
  74. self.closeTimer:Stop()
  75. self.closeTimer = nil
  76. end
  77. self.uiNewStoryOpenWaiting = nil
  78. self.uiNewCreateRoleOpenWaiting = nil
  79. if self.delayTimer then
  80. self.delayTimer:Stop()
  81. self.delayTimer = nil
  82. end
  83. self.controller:OnDispose()
  84. end
  85. function UILanuchView:OnPageInEnd()
  86. self.super.OnPageInEnd(self)
  87. if ManagerContainer.LoginMgr.relogin then
  88. if self.enterTimer then
  89. self.enterTimer.duration = 2
  90. self.enterTimer.loop = 1
  91. self.enterTimer.time = 2
  92. else
  93. self.enterTimer = Timer.New(slot(self.UpdateEnterTimer, self), 2, 1)
  94. end
  95. if not self.enterTimer.running then
  96. self.enterTimer:Start()
  97. end
  98. else
  99. self:UpdateEnterTimer()
  100. end
  101. end
  102. function UILanuchView:UIClose()
  103. self.super.UIClose(self)
  104. self.loadEndTime = ManagerContainer.LuaTimerMgr:GetTimeSecond()
  105. if self.loadStartTime and self.loadEndTime then
  106. SDKMgr.Instance:ReportLoad(int64.new(self.loadEndTime) * 1000, (self.loadEndTime - self.loadStartTime))
  107. end
  108. end
  109. function UILanuchView:OnUIViewOpenAnimEnd(id)
  110. if not id then return end
  111. if self.createRole then
  112. if self.uiNewStoryOpenWaiting then
  113. if id == Enum.UIPageName.UINewStory then
  114. self:ReadyCreateRoleUINewStory()
  115. end
  116. end
  117. if self.uiNewCreateRoleOpenWaiting then
  118. if id == Enum.UIPageName.UINewCreateRole then
  119. self:ReadyCreateRoleUINewCreateRole()
  120. end
  121. end
  122. else
  123. if self.uiMainOpenWaiting then
  124. if id == Enum.UIPageName.UIMain then
  125. self:BeginEnter()
  126. end
  127. end
  128. end
  129. end
  130. function UILanuchView:OnLoadingBegin()
  131. self.loginAnim.animator:Play('LoginKeep', -1)
  132. self.loginAnim.animator:Update(0)
  133. self.loginAnim.animator.enabled = false
  134. self.loginRoot:SetActive(false)
  135. self.loadingRoot:SetActive(true)
  136. self.text.text.text = string.formatbykey('GameLogin16')
  137. self.scrollbar.scrollbar.size = 0
  138. self.numberText.text.text = "0%"
  139. self.loadStartTime = ManagerContainer.LuaTimerMgr:GetTimeSecond()
  140. end
  141. function UILanuchView:OnLoadingProgress(progress)
  142. progress = Mathf.Clamp01(progress)
  143. if self.createRole then
  144. progress = progress * 0.5
  145. end
  146. local curProgress = self.scrollbar.scrollbar.size
  147. if progress <= curProgress then return end
  148. self.scrollbar.scrollbar.size = progress
  149. self.numberText.text.text = math.floor(progress*100).."%"
  150. end
  151. function UILanuchView:OnLoadingComplete()
  152. if self.createRole then
  153. self.scrollbar.scrollbar.size = 0.5
  154. self.numberText.text.text = "50%"
  155. else
  156. self.scrollbar.scrollbar.size = 1
  157. self.numberText.text.text = "100%"
  158. end
  159. end
  160. function UILanuchView:OnLoadingClose()
  161. self.loginRoot:SetActive(false)
  162. if self.createRole then
  163. self:ReadyCreateRoleScene()
  164. else
  165. if ManagerContainer.DataMgr.UserData:HasPassedNewbie() then
  166. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMain) then
  167. self.uiMainOpenWaiting = true
  168. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMain)
  169. return
  170. end
  171. end
  172. self:BeginEnter()
  173. end
  174. end
  175. function UILanuchView:OnEnterCreateRole()
  176. self.createRole = true
  177. self:OnLoadingBegin()
  178. end
  179. function UILanuchView:OnCurrentServerChanged()
  180. self:RefreshServer()
  181. end
  182. function UILanuchView:OnCurrentSpecialInfoChanged()
  183. self:RefreshSpecialInfo()
  184. end
  185. function UILanuchView:OnClickEnterBtn()
  186. ManagerContainer.LoginMgr.waitClicked = true
  187. end
  188. function UILanuchView:OnClickServerBtn()
  189. local serverData = ManagerContainer.LuaGameMgr.serverData
  190. if not serverData or not serverData.id or serverData.id <= 0 then
  191. return
  192. end
  193. if not ManagerContainer.LoginMgr:IsLoginWaiting() then
  194. return
  195. end
  196. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChangeServer, true, nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2)
  197. end
  198. function UILanuchView:OnClickNoticeBtn()
  199. if not ManagerContainer.LoginMgr:IsLoginWaiting() then
  200. return
  201. end
  202. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINotifyTips)
  203. end
  204. function UILanuchView:OnClickCadpaBtn()
  205. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISimpleNotice, {'AntiAddictionTitle', 'AntiAddictionTips'}, nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2)
  206. end
  207. function UILanuchView:UpdateEnterTimer()
  208. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loaded_Page_OK)
  209. self.loginRoot:SetActive(true)
  210. self.loadingRoot:SetActive(false)
  211. self.serverBtnState = 0
  212. self:RefreshServer()
  213. self:RefreshVersionCode()
  214. end
  215. function UILanuchView:ReadyCreateRoleScene()
  216. self.createRoleImg:SetActive(true)
  217. self.createRoleImg.image.enabled = false
  218. self.createRoleImg.image.sprite = nil
  219. CommonUtil.LoadIcon(self, 'NewStory/img_login02', function(sprite)
  220. self.createRoleImg.image.sprite = sprite
  221. self.createRoleImg.image.enabled = true
  222. self:ReadyCreateRoleLanuchImg()
  223. end)
  224. end
  225. function UILanuchView:ReadyCreateRoleLanuchImg()
  226. self.scrollbar.scrollbar.size = 0.8
  227. self.numberText.text.text = "80%"
  228. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UINewStory) then
  229. self.uiNewStoryOpenWaiting = true
  230. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINewStory)
  231. return
  232. end
  233. self:ReadyCreateRoleUINewStory()
  234. end
  235. function UILanuchView:ReadyCreateRoleUINewStory()
  236. self.uiNewStoryOpenWaiting = nil
  237. self.scrollbar.scrollbar.size = 0.9
  238. self.numberText.text.text = "90%"
  239. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UINewCreateRole) then
  240. self.uiNewCreateRoleOpenWaiting = true
  241. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINewCreateRole)
  242. return
  243. end
  244. self:ReadyCreateRoleUINewCreateRole()
  245. end
  246. function UILanuchView:ReadyCreateRoleUINewCreateRole()
  247. self.uiNewCreateRoleOpenWaiting = nil
  248. self.scrollbar.scrollbar.size = 1
  249. self.numberText.text.text = "100%"
  250. if self.delayTimer then
  251. self.delayTimer.duration = 0.1
  252. self.delayTimer.loop = 1
  253. self.delayTimer.time = 0.1
  254. else
  255. self.delayTimer = Timer.New(slot(self.BeginEnterCreateRole, self), 0.1, 1)
  256. end
  257. if not self.delayTimer.running then
  258. self.delayTimer:Start()
  259. end
  260. end
  261. function UILanuchView:BeginEnterCreateRole()
  262. self.loadingRoot:SetActive(false)
  263. self.loginAnim.animator.enabled = true
  264. self.loginAnim.animator:Play('LoginStory', -1)
  265. self.loginAnim.animator:Update(0)
  266. LuaBattleBridge.BeginTweenPosition(self.loginBG, 4, Vector3.New(0, -1920, 0), false)
  267. if self.closeTimer then
  268. self.closeTimer.duration = 7
  269. self.closeTimer.loop = 1
  270. self.closeTimer.time = 7
  271. else
  272. self.closeTimer = Timer.New(slot(self.UIClose, self), 7, 1)
  273. end
  274. if not self.closeTimer.running then
  275. self.closeTimer:Start()
  276. end
  277. end
  278. function UILanuchView:BeginEnter()
  279. self.uiMainOpenWaiting = nil
  280. self.loadingRoot:SetActive(false)
  281. self.loginAnim.animator.enabled = true
  282. self.loginAnim.animator:Play('LoginStart', -1)
  283. self.loginAnim.animator:Update(0)
  284. if self.closeTimer then
  285. self.closeTimer.duration = 2
  286. self.closeTimer.loop = 1
  287. self.closeTimer.time = 2
  288. else
  289. self.closeTimer = Timer.New(slot(self.UIClose, self), 2, 1)
  290. end
  291. if not self.closeTimer.running then
  292. self.closeTimer:Start()
  293. end
  294. end
  295. function UILanuchView:RefreshServer()
  296. local serverData = ManagerContainer.LuaGameMgr.serverData
  297. if not serverData or not serverData.id or serverData.id <= 0 then
  298. if self.serverBtnState and self.serverBtnState ~= 1 then
  299. self.serverRoot.animator:CrossFade('ServerListLoading', 0.2)
  300. self.serverBtnState = 1
  301. end
  302. return
  303. end
  304. if self.serverBtnState and self.serverBtnState ~= 2 then
  305. self.serverRoot.animator:CrossFade('ServerListShow', 0.2)
  306. self.serverBtnState = 2
  307. end
  308. ManagerContainer.LuaGameMgr:SetServerID(serverData.id);
  309. self.serverText.text.text = tostring(serverData.name)
  310. --LogError("====================serverData.name="..serverData.name)
  311. end
  312. function UILanuchView:RefreshVersionCode()
  313. self.appVol.contentTxt.text.text = tostring(ManagerContainer.LuaGameMgr.GameVersion)
  314. self.resVol.contentTxt.text.text = tostring(ManagerContainer.LuaGameMgr.ResVersion)
  315. end
  316. function UILanuchView:RefreshSpecialInfo()
  317. if not ManagerContainer.LoginMgr:IsAgreement() then
  318. self.agreement:SetActive(false)
  319. return
  320. end
  321. self.agreement:SetActive(true)
  322. local agreement = ManagerContainer.LoginMgr:GetAgreement()
  323. self.agreement.text.text.text = tostring(agreement)
  324. local isOn = ManagerContainer.PlayerPrefsMgr:GetGlobalBoolean(Constant.AGREEMENT_RECORD_KEY, false)
  325. self.agreement.toggle.toggle.isOn = isOn
  326. self.uiBase:AddToggleUniqueEventListener(self.agreement.toggle.toggle, self, self.OnClickAgreementTogge)
  327. self.uiBase:AddButtonUniqueEventListener(self.agreement.text.button, self, self.OnClickAgreementText)
  328. end
  329. function UILanuchView:OnClickAgreementTogge(_, _, isOn)
  330. local isOnOld = ManagerContainer.PlayerPrefsMgr:GetGlobalBoolean(Constant.AGREEMENT_RECORD_KEY, false)
  331. if isOnOld == isOn then
  332. return
  333. end
  334. ManagerContainer.PlayerPrefsMgr:SetGlobalBoolean(Constant.AGREEMENT_RECORD_KEY, isOn)
  335. end
  336. function UILanuchView:OnClickAgreementText()
  337. local text = self.agreement.text.text
  338. local linkIndex = TMPro.TMP_TextUtilities.FindIntersectingLink(text, UnityEngine.Input.mousePosition, CameraMgr.Instance.UICamera);
  339. if linkIndex < 0 then
  340. return
  341. end
  342. local linkInfo = text.textInfo.linkInfo[linkIndex]
  343. if not linkInfo then
  344. return
  345. end
  346. local url = linkInfo:GetLinkID()
  347. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISimpleWeb, url, nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2)
  348. end
  349. return UILanuchView