UILanuchView.lua 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  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.scrollbar:SetActive(true)
  39. self.numberText:SetActive(true)
  40. self.serverBtnState = nil
  41. self:RefreshServer()
  42. self:RefreshVersionCode()
  43. self:RefreshSpecialInfo()
  44. --self:RefSDKLink()
  45. self:BindSdkbtnLink()
  46. if PlatformPack.ShowHealthBulletin then
  47. self.editionTxt:SetActive(true)
  48. else
  49. self.editionTxt:SetActive(false)
  50. end
  51. end
  52. function UILanuchView:RemoveEventListener()
  53. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  54. end
  55. function UILanuchView:AddUIEventListener()
  56. self.uiBase:AddButtonUniqueEventListener(self.btnEnter.button, self, self.OnClickEnterBtn)
  57. self.uiBase:AddButtonUniqueEventListener(self.btnServer.button, self, self.OnClickServerBtn)
  58. self.uiBase:AddButtonUniqueEventListener(self.btnNotice.button, self, self.OnClickNoticeBtn)
  59. self.uiBase:AddButtonUniqueEventListener(self.btnCADPA.button, self, self.OnClickCadpaBtn)
  60. end
  61. function UILanuchView:OnHide()
  62. end
  63. function UILanuchView:OnShow(data)
  64. self.controller:SetData(data)
  65. self.btnCADPA:SetActive(false)
  66. end
  67. function UILanuchView:OnClose()
  68. end
  69. function UILanuchView:OnDispose()
  70. self.serverBtnState = nil
  71. if self.enterTimer then
  72. self.enterTimer:Stop()
  73. self.enterTimer = nil
  74. end
  75. self.createRole = nil
  76. self.uiMainOpenWaiting = nil
  77. if self.closeTimer then
  78. self.closeTimer:Stop()
  79. self.closeTimer = nil
  80. end
  81. self.uiNewStoryOpenWaiting = nil
  82. self.uiNewCreateRoleOpenWaiting = nil
  83. if self.delayTimer then
  84. self.delayTimer:Stop()
  85. self.delayTimer = nil
  86. end
  87. self.controller:OnDispose()
  88. end
  89. function UILanuchView:OnPageInEnd()
  90. self.super.OnPageInEnd(self)
  91. if ManagerContainer.LoginMgr.relogin then
  92. if self.enterTimer then
  93. self.enterTimer.duration = 2
  94. self.enterTimer.loop = 1
  95. self.enterTimer.time = 2
  96. else
  97. self.enterTimer = Timer.New(slot(self.UpdateEnterTimer, self), 2, 1)
  98. end
  99. if not self.enterTimer.running then
  100. self.enterTimer:Start()
  101. end
  102. else
  103. self:UpdateEnterTimer()
  104. end
  105. end
  106. function UILanuchView:UIClose()
  107. self.super.UIClose(self)
  108. self.loadEndTime = ManagerContainer.LuaTimerMgr:GetTimeSecond()
  109. if self.loadStartTime and self.loadEndTime then
  110. SDKMgr.Instance:ReportLoad(int64.new(self.loadEndTime) * 1000, (self.loadEndTime - self.loadStartTime))
  111. end
  112. end
  113. function UILanuchView:OnUIViewOpenAnimEnd(id)
  114. if not id then return end
  115. if self.createRole then
  116. if self.uiNewStoryOpenWaiting then
  117. if id == Enum.UIPageName.UINewStory then
  118. self:ReadyCreateRoleUINewStory()
  119. end
  120. end
  121. if self.uiNewCreateRoleOpenWaiting then
  122. if id == Enum.UIPageName.UINewCreateRole then
  123. self:ReadyCreateRoleUINewCreateRole()
  124. end
  125. end
  126. else
  127. if self.uiMainOpenWaiting then
  128. if id == Enum.UIPageName.UIMain then
  129. self:BeginEnter()
  130. end
  131. end
  132. end
  133. end
  134. function UILanuchView:OnLoadingBegin()
  135. self.loginAnim.animator:Play('LoginKeep', -1)
  136. self.loginAnim.animator:Update(0)
  137. self.loginAnim.animator.enabled = false
  138. self.loginRoot:SetActive(false)
  139. self.loadingRoot:SetActive(true)
  140. self.text.text.text = string.formatbykey('GameLogin16')
  141. self.scrollbar.scrollbar.size = 0
  142. self.numberText.text.text = "0%"
  143. self.loadStartTime = ManagerContainer.LuaTimerMgr:GetTimeSecond()
  144. end
  145. function UILanuchView:OnLoadingProgress(progress)
  146. progress = Mathf.Clamp01(progress)
  147. if self.createRole then
  148. progress = progress * 0.5
  149. end
  150. local curProgress = self.scrollbar.scrollbar.size
  151. if progress <= curProgress then return end
  152. self.scrollbar.scrollbar.size = progress
  153. self.numberText.text.text = math.floor(progress*100).."%"
  154. end
  155. function UILanuchView:OnLoadingComplete()
  156. if self.createRole then
  157. self.scrollbar.scrollbar.size = 0.5
  158. self.numberText.text.text = "50%"
  159. else
  160. self.scrollbar.scrollbar.size = 1
  161. self.numberText.text.text = "100%"
  162. end
  163. end
  164. function UILanuchView:OnLoadingClose()
  165. self.loginRoot:SetActive(false)
  166. if self.createRole then
  167. self:ReadyCreateRoleScene()
  168. else
  169. if ManagerContainer.DataMgr.UserData:HasPassedNewbie() then
  170. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UIMain) then
  171. self.uiMainOpenWaiting = true
  172. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIMain)
  173. return
  174. end
  175. end
  176. self:BeginEnter()
  177. end
  178. end
  179. function UILanuchView:OnEnterCreateRole()
  180. self.createRole = true
  181. self:OnLoadingBegin()
  182. end
  183. function UILanuchView:OnCurrentServerChanged()
  184. self:RefreshServer()
  185. end
  186. function UILanuchView:OnCurrentSpecialInfoChanged()
  187. self:RefreshSpecialInfo()
  188. end
  189. function UILanuchView:OnClickEnterBtn()
  190. ManagerContainer.LoginMgr.waitClicked = true
  191. end
  192. function UILanuchView:OnClickServerBtn()
  193. local serverData = ManagerContainer.LuaGameMgr.serverData
  194. if not serverData or not serverData.id or serverData.id <= 0 then
  195. return
  196. end
  197. if not ManagerContainer.LoginMgr:IsLoginWaiting() then
  198. return
  199. end
  200. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIChangeServer, true, nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2)
  201. end
  202. function UILanuchView:OnClickNoticeBtn()
  203. if not ManagerContainer.LoginMgr:IsLoginWaiting() then
  204. return
  205. end
  206. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINotifyTips)
  207. end
  208. function UILanuchView:OnClickCadpaBtn()
  209. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISimpleNotice, {'AntiAddictionTitle', 'AntiAddictionTips'}, nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2)
  210. end
  211. function UILanuchView:UpdateEnterTimer()
  212. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loaded_Page_OK)
  213. self.loginRoot:SetActive(true)
  214. self.loadingRoot:SetActive(false)
  215. self.serverBtnState = 0
  216. self:RefreshServer()
  217. self:RefreshVersionCode()
  218. end
  219. function UILanuchView:ReadyCreateRoleScene()
  220. self.createRoleImg:SetActive(true)
  221. self.createRoleImg.image.enabled = false
  222. self.createRoleImg.image.sprite = nil
  223. CommonUtil.LoadIcon(self, 'NewStory/img_login02', function(sprite)
  224. self.createRoleImg.image.sprite = sprite
  225. self.createRoleImg.image.enabled = true
  226. self:ReadyCreateRoleLanuchImg()
  227. end)
  228. end
  229. function UILanuchView:ReadyCreateRoleLanuchImg()
  230. self.scrollbar.scrollbar.size = 0.8
  231. self.numberText.text.text = "80%"
  232. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UINewStory) then
  233. self.uiNewStoryOpenWaiting = true
  234. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINewStory)
  235. return
  236. end
  237. self:ReadyCreateRoleUINewStory()
  238. end
  239. function UILanuchView:ReadyCreateRoleUINewStory()
  240. self.uiNewStoryOpenWaiting = nil
  241. self.scrollbar.scrollbar.size = 0.9
  242. self.numberText.text.text = "90%"
  243. if not ManagerContainer.LuaUIMgr:HasOpenPage(Enum.UIPageName.UINewCreateRole) then
  244. self.uiNewCreateRoleOpenWaiting = true
  245. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINewCreateRole)
  246. return
  247. end
  248. self:ReadyCreateRoleUINewCreateRole()
  249. end
  250. function UILanuchView:ReadyCreateRoleUINewCreateRole()
  251. self.uiNewCreateRoleOpenWaiting = nil
  252. self.scrollbar.scrollbar.size = 1
  253. self.numberText.text.text = "100%"
  254. if self.delayTimer then
  255. self.delayTimer.duration = 0.1
  256. self.delayTimer.loop = 1
  257. self.delayTimer.time = 0.1
  258. else
  259. self.delayTimer = Timer.New(slot(self.BeginEnterCreateRole, self), 0.1, 1)
  260. end
  261. if not self.delayTimer.running then
  262. self.delayTimer:Start()
  263. end
  264. end
  265. function UILanuchView:BeginEnterCreateRole()
  266. self.loadingRoot:SetActive(false)
  267. self.loginAnim.animator.enabled = true
  268. self.loginAnim.animator:Play('LoginStory', -1)
  269. self.loginAnim.animator:Update(0)
  270. LuaBattleBridge.BeginTweenPosition(self.loginBG, 4, Vector3.New(0, -1920, 0), false)
  271. if self.closeTimer then
  272. self.closeTimer.duration = 7
  273. self.closeTimer.loop = 1
  274. self.closeTimer.time = 7
  275. else
  276. self.closeTimer = Timer.New(slot(self.UIClose, self), 7, 1)
  277. end
  278. if not self.closeTimer.running then
  279. self.closeTimer:Start()
  280. end
  281. end
  282. function UILanuchView:BeginEnter()
  283. self.uiMainOpenWaiting = nil
  284. self.loadingRoot:SetActive(false)
  285. self.loginAnim.animator.enabled = true
  286. self.loginAnim.animator:Play('LoginStart', -1)
  287. self.loginAnim.animator:Update(0)
  288. if self.closeTimer then
  289. self.closeTimer.duration = 2
  290. self.closeTimer.loop = 1
  291. self.closeTimer.time = 2
  292. else
  293. self.closeTimer = Timer.New(slot(self.UIClose, self), 2, 1)
  294. end
  295. if not self.closeTimer.running then
  296. self.closeTimer:Start()
  297. end
  298. end
  299. function UILanuchView:RefreshServer()
  300. local serverData = ManagerContainer.LuaGameMgr.serverData
  301. if not serverData or not serverData.id or serverData.id <= 0 then
  302. if self.serverBtnState and self.serverBtnState ~= 1 then
  303. self.serverRoot.animator:CrossFade('ServerListLoading', 0.2)
  304. self.serverBtnState = 1
  305. end
  306. return
  307. end
  308. if self.serverBtnState and self.serverBtnState ~= 2 then
  309. self.serverRoot.animator:CrossFade('ServerListShow', 0.2)
  310. self.serverBtnState = 2
  311. end
  312. ManagerContainer.LuaGameMgr:SetServerID(serverData.id);
  313. self.serverText.text.text = tostring(serverData.name)
  314. --LogError("====================serverData.name="..serverData.name)
  315. end
  316. function UILanuchView:RefreshVersionCode()
  317. self.appVol.contentTxt.text.text = tostring(ManagerContainer.LuaGameMgr.GameVersion)
  318. self.resVol.contentTxt.text.text = tostring(ManagerContainer.LuaGameMgr.ResVersion)
  319. end
  320. function UILanuchView:RefreshSpecialInfo()
  321. if not ManagerContainer.LoginMgr:IsAgreement() then
  322. self.agreement:SetActive(false)
  323. return
  324. end
  325. self.agreement:SetActive(true)
  326. local agreement = ManagerContainer.LoginMgr:GetAgreement()
  327. self.agreement.text.text.text = tostring(agreement)
  328. local isOn = ManagerContainer.PlayerPrefsMgr:GetGlobalBoolean(Constant.AGREEMENT_RECORD_KEY, false)
  329. self.agreement.toggle.toggle.isOn = isOn
  330. self.uiBase:AddToggleUniqueEventListener(self.agreement.toggle.toggle, self, self.OnClickAgreementTogge)
  331. self.uiBase:AddButtonUniqueEventListener(self.agreement.text.button, self, self.OnClickAgreementText)
  332. end
  333. function UILanuchView:OnClickAgreementTogge(_, _, isOn)
  334. local isOnOld = ManagerContainer.PlayerPrefsMgr:GetGlobalBoolean(Constant.AGREEMENT_RECORD_KEY, false)
  335. if isOnOld == isOn then
  336. return
  337. end
  338. ManagerContainer.PlayerPrefsMgr:SetGlobalBoolean(Constant.AGREEMENT_RECORD_KEY, isOn)
  339. end
  340. function UILanuchView:OnClickAgreementText()
  341. local text = self.agreement.text.text
  342. local linkIndex = TMPro.TMP_TextUtilities.FindIntersectingLink(text, UnityEngine.Input.mousePosition, CameraMgr.Instance.UICamera);
  343. if linkIndex < 0 then
  344. return
  345. end
  346. local linkInfo = text.textInfo.linkInfo[linkIndex]
  347. if not linkInfo then
  348. return
  349. end
  350. local url = linkInfo:GetLinkID()
  351. ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISimpleWeb, url, nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2)
  352. end
  353. function UILanuchView:OnClickSDKLinkText()
  354. local text = self.sDKLink.text
  355. local linkIndex = TMPro.TMP_TextUtilities.FindIntersectingLink(text, UnityEngine.Input.mousePosition, CameraMgr.Instance.UICamera);
  356. if linkIndex < 0 then
  357. return
  358. end
  359. local linkInfo = text.textInfo.linkInfo[linkIndex]
  360. if not linkInfo then
  361. return
  362. end
  363. local url = linkInfo:GetLinkID()
  364. UnityEngine.Application.OpenURL(url)
  365. end
  366. function UILanuchView:RefSDKLink()
  367. local cfg = ManagerContainer.CfgMgr.LanuchLinkCfg
  368. if cfg == nil or not cfg.LinkIsOpen then
  369. self.sDKLink:SetActive(false)
  370. return
  371. end
  372. self.sDKLink:SetActive(true)
  373. local txt =""
  374. for index, value in ipairs(cfg) do
  375. --LogError(Inspect(value))
  376. local linkName = I18N.T(value.Txt)
  377. txt = txt..string.format(cfg.LinkStringFormat,value.Color,value.Url,linkName).."\n"
  378. end
  379. self.sDKLink.text.text = txt
  380. self.uiBase:AddButtonUniqueEventListener(self.sDKLink.button, self, self.OnClickSDKLinkText)
  381. end
  382. function UILanuchView:BindSdkbtnLink()
  383. local cfg = ManagerContainer.CfgMgr.LanuchLinkCfg
  384. if cfg == nil then
  385. return
  386. end
  387. if self.sDKBtnNode ~= nil and cfg.LinkIsOpen then
  388. self.sDKBtnNode:SetActive(true)
  389. self.kfLink = cfg[1].Url
  390. self.vksquLink = cfg[2].Url
  391. self.vksqunLink = cfg[3].Url
  392. self.uiBase:AddButtonUniqueEventListener(self.kfBtn.button, self, self.OnKfBtn)
  393. self.uiBase:AddButtonUniqueEventListener(self.vkSheQuBtn.button, self, self.OnVksqBtn)
  394. self.uiBase:AddButtonUniqueEventListener(self.vkSheQunBtn.button, self, self.OnVksqunBtn)
  395. end
  396. end
  397. function UILanuchView:OnKfBtn()
  398. UnityEngine.Application.OpenURL(self.kfLink )
  399. end
  400. function UILanuchView:OnVksqBtn()
  401. UnityEngine.Application.OpenURL(self.vksquLink)
  402. end
  403. function UILanuchView:OnVksqunBtn()
  404. UnityEngine.Application.OpenURL(self.vksqunLink)
  405. end
  406. return UILanuchView