using UnityEngine; using FairyGUI; using UI.Login; using ET; using GFGGame.Launcher; using System; namespace GFGGame { public class LoginView : BaseView { private UI_LoginUI _ui; private GameObject _sceneObject; private bool autoLogined; public override void Dispose() { if (_sceneObject != null) { GameObject.DestroyImmediate(_sceneObject); _sceneObject = null; } if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void Init() { base.Init(); packageName = UI_LoginUI.PACKAGE_NAME; _ui = UI_LoginUI.Create(); viewCom = _ui.target; isfullScreen = true; } protected override void OnInit() { base.OnInit(); _ui.m_txtVersion.text = GameGlobal.version; _ui.m_btnNotice.onClick.Add(OnClickBtnNotice); _ui.m_btnStart.onClick.Add(OnClickBtnStart); _ui.m_btnLogout.onClick.Add(OnClickBtnLogout); _ui.m_btnAge.onClick.Add(OnClickBtnAge); _ui.m_btnTapLogin.onClick.Add(OnClickBtnStart); _ui.m_btnChange.onClick.Add(OnBtnChangeClick); _ui.m_loaEventa.onClick.Add(() => { FullScreenTextController.Show("event:a"); }); _ui.m_loaEventb.onClick.Add(() => { FullScreenTextController.Show("event:b"); }); _ui.m_loaEventc.onClick.Add(() => { FullScreenTextController.Show("event:c"); }); _ui.m_btnAgree.onClick.Add(OnBtnAgreeCklick); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.SERVER_CHANGE, OnSeverChangeListener); EventAgent.AddEventListener(ConstMessage.LOGIN_SUCCESS, OnLoginSuccess); EventAgent.AddEventListener(ConstMessage.ON_PLATFORM_SDK_LOGINED, OnPlatformLogined); EventAgent.AddEventListener(ConstMessage.OUT_LOGIN, OnOutLoginSuccess); } protected override void OnShown() { base.OnShown(); MusicManager.Instance.PlayCroutine(ResPathUtil.GetMusicPath(ConstMusicName.DEFAULT)); if (_sceneObject == null) { _sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetLoginResPath("LoginSkin1/SceneLogin")); } // SceneController.UpdateLoginScene(_sceneObject); ServerInfosComponent serverInfosComponent = GameGlobal.zoneScene.GetComponent(); ServerInfo recentlyServerInfo = serverInfosComponent.recentlyServerInfo; UpdateServer(recentlyServerInfo); _ui.m_btnAgree.selected = LocalCache.GetBool(GameConst.LAST_LOGIN_IS_VISITOR_KEY, false); _ui.m_btnAgree.selected = true; if (GameConfig.openTime > TimeHelper.ClientNow()) { var date = DateTimeUtil.LongTimeStampToDateTime(GameConfig.openTime); string minuteText = ""; if (date.Minute > 0) { minuteText = date.Minute + "分"; } AlertUI.Show($" 亲爱的研究员,万世镜将于{date.Year}年{date.Month}月{date.Day}日{date.Hour}点{minuteText}开放,敬请期待!") .SetLeftButton(true, "好的", (obj) => { Application.Quit(); }); return; } if (!autoLogined) { autoLogined = true; ResetLoginButton(); TryLogin(); } } protected override void OnHide() { autoLogined = false; if (_sceneObject != null) { PrefabManager.Instance.Restore(_sceneObject); _sceneObject = null; } base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.SERVER_CHANGE, OnSeverChangeListener); EventAgent.RemoveEventListener(ConstMessage.LOGIN_SUCCESS, OnLoginSuccess); EventAgent.RemoveEventListener(ConstMessage.ON_PLATFORM_SDK_LOGINED, OnPlatformLogined); EventAgent.RemoveEventListener(ConstMessage.OUT_LOGIN, OnOutLoginSuccess); } private void UpdateServer(ServerInfo info) { ServerInfosComponent serverInfosComponent = GameGlobal.zoneScene.GetComponent(); if (serverInfosComponent.ServerInfoList.Count == 0) { _ui.m_btnChange.visible = false; return; } _ui.m_btnChange.visible = serverInfosComponent.ServerInfoList.Count > 1; _ui.m_btnChange.title = string.Format("{0}区 {1}", NumberUtil.GetChiniseNumberText((int)info.Id), info.ServerName); LogServerHelperHttp.SendNodeLog((int)LogNode.ShowSelectServer); } private void OnPlatformLogined(EventContext context) { var account = (string)context.data; if (!string.IsNullOrEmpty(account)) { _ui.m_btnTapLogin.visible = false; LoginController.LoginTest(account).Coroutine(); } else { ViewManager.Hide(); //尝试自动登录 TryLogin(); } } private void OnLoginSuccess(EventContext context) { _ui.m_btnLogout.visible = true; _ui.m_btnStart.visible = true; } private void OnSeverChangeListener(EventContext context) { ServerInfosComponent serverInfosComponent = GameGlobal.zoneScene.GetComponent(); UpdateServer(serverInfosComponent.ServerInfoList[serverInfosComponent.CurrentServerId]); } private void OnBtnChangeClick() { ViewManager.Show(); } private void OnClickBtnNotice() { if (NoticeDataManager.Instance.LastNoticeInfo == null || NoticeDataManager.Instance.LastNoticeInfo.noticeId == 0) { PromptController.Instance.ShowFloatTextPrompt("暂无公告发布"); return; } ViewManager.Show(new object[] { NoticeDataManager.Instance.LastNoticeInfo.title, NoticeDataManager.Instance.LastNoticeInfo.content }); } private void OnClickBtnStart() { TryLogin(); } private void OnClickBtnLogout() { ResetLoginButton(); switch (LauncherConfig.ChannelId) { case (int)ChannelID.Test: break; case (int)ChannelID.DouYou: QDDouYouManager.Instance.LoginOutBefore(); break; default: break; } QDManager.Logout(); } private void OnClickBtnAge() { ViewManager.Show(new object[] { LoginController.ageTipsTitle, LoginController.ageTips }); } private void TryLogin() { var url = LauncherConfig.cfgUrl.Replace("{cfgName}", LauncherConfig.cfgName); url = url + "?t=" + DateTime.Now.Ticks; HttpTool.Instance.Get(url, (string json) => { LauncherConfig.InitPlatform(json); if (LauncherConfig.serverStatus == 1) { if (string.IsNullOrEmpty(LauncherConfig.statusPrompt)) { LauncherConfig.statusPrompt = "游戏正在更新维护中,请稍后再试。"; } AlertSystem.Show(LauncherConfig.statusPrompt) .SetLeftButton(true, "知道了", (data) => { Application.Quit(); }); return; } var serverInfosComponent = GameGlobal.zoneScene.GetComponent(); if (serverInfosComponent.ServerInfoList.Count <= 0) { QDManager.Login(); } else { if (!_ui.m_btnAgree.selected) { PromptController.Instance.ShowFloatTextPrompt("请仔细阅读并同意游戏用户协议、隐私保护指引、儿童隐私政策"); return; } LoginController.GetRoles().Coroutine(); } }); } private void OnOutLoginSuccess(EventContext context) { ResetLoginButton(); } private void ResetLoginButton() { _ui.m_btnLogout.visible = false; _ui.m_btnTapLogin.visible = QDManager.IsTaptap; _ui.m_btnStart.visible = !QDManager.IsTaptap; } private void OnBtnAgreeCklick() { LocalCache.SetBool(LauncherConfig.LAST_LOGIN_IS_AGREE_KEY, _ui.m_btnAgree.selected); } } }