UILanuchView.lua 14 KB

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