UILanuchView.lua 13 KB

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