GameLauncher.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using UnityEngine;
  2. using GFGGame;
  3. using ET;
  4. using System.Threading;
  5. using GFGGame.Launcher;
  6. using FairyGUI;
  7. public class GameLauncher : MonoBehaviour
  8. {
  9. private void Awake()
  10. {
  11. //ET
  12. System.AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
  13. {
  14. Log.Error(e.ExceptionObject.ToString());
  15. };
  16. SynchronizationContext.SetSynchronizationContext(ThreadSynchronizationContext.Instance);
  17. DontDestroyOnLoad(gameObject);
  18. LitJson.UnityTypeBindings.Register();
  19. ETTask.ExceptionHandler += Log.Error;
  20. Log.ILog = new UnityLogger();
  21. Options.Instance = new Options();
  22. TimeInfo.Instance.TimeZone = 8;
  23. }
  24. // Start is called before the first frame update
  25. void Start()
  26. {
  27. Screen.sleepTimeout = SleepTimeout.NeverSleep;
  28. Application.runInBackground = true;
  29. LauncherConfig.InitScriptCompilation();
  30. FGUILauncher.Init();
  31. HealthAdviceView.Instance.Open();
  32. int time = LauncherConfig.netType == LauncherConfig.EnumNetType.LOCAL ? 3 : 10;
  33. Timers.inst.Add(time, 1, (object param) =>
  34. {
  35. HealthAdviceView.Instance.Close();
  36. LauncherView.Instance.Open();
  37. InitLauncherCfg();
  38. });
  39. }
  40. /// <summary>
  41. /// 初始化启动器配置
  42. /// </summary>
  43. public void InitLauncherCfg()
  44. {
  45. LauncherView.Instance.SetDesc("正在初始化..");
  46. var url = LauncherConfig.cfgUrl.Replace("{cfgName}", LauncherConfig.cfgName);
  47. url = url + "?t=" + TimeHelper.ClientNow();
  48. HttpTool.Instance.Get(url, (string json) =>
  49. {
  50. LauncherConfig.InitPlatform(json);
  51. LauncherView.Instance.SetDesc("正在初始化...");
  52. //第一个节点必须放在平台配置加载之后
  53. LogServerHelperHttp.SendNodeLog((int)LogNode.OnStart);
  54. CheckGameStatus();
  55. });
  56. }
  57. public void CheckGameStatus()
  58. {
  59. if (LauncherConfig.serverStatus == 1)
  60. {
  61. Alert.Show("游戏正在维护中,请稍后再试。")
  62. .SetLeftButton(true, "知道了", (data) =>
  63. {
  64. Application.Quit();
  65. });
  66. }
  67. else
  68. {
  69. CheckApkVersion();
  70. }
  71. }
  72. private void CheckApkVersion()
  73. {
  74. LauncherView.Instance.SetDesc("正在校验应用版本...");
  75. var versionTarget = LauncherConfig.apkVersion;
  76. var version = Application.version;
  77. if (VersionUtil.compare(version, versionTarget))
  78. {
  79. DownloadApk();
  80. }
  81. else
  82. {
  83. VersionController.Instance.Init();
  84. }
  85. }
  86. private void DownloadApk()
  87. {
  88. Alert.Show("需要安装新的安装包,请联系研发获取。")
  89. .SetLeftButton(true, "知道了", (data) =>
  90. {
  91. Application.Quit();
  92. });
  93. }
  94. }