فهرست منبع

测试进入游戏安装新的包

hexiaojie 1 سال پیش
والد
کامیت
b2d92fcad6

+ 7 - 0
GameClient/Assets/Game/Launcher/LauncherConfig.cs

@@ -59,6 +59,7 @@ namespace GFGGame
         public static int promptSizeMB;
 
         public static string updateUrl;
+        public static long updateEndTime; //强制更新期限,毫秒级时间戳
 
         //新发行给的adId
         public static string douYouAdId;
@@ -124,6 +125,11 @@ namespace GFGGame
             LauncherConfig.updateAppPrompt = result.updateAppPrompt;
             LauncherConfig.updateResPrompt = result.updateResPrompt;
             LauncherConfig.updateUrl = result.updateUrl;
+            if (!string.IsNullOrEmpty(result.updateEndTime))
+            {
+                LauncherConfig.updateEndTime = LauncherTimeUtil.GetTimestamp(result.updateEndTime);
+            }
+
             if (!string.IsNullOrEmpty(result.promptSizeMB))
             {
                 LauncherConfig.promptSizeMB = int.Parse(result.promptSizeMB);
@@ -145,6 +151,7 @@ namespace GFGGame
             public string promptSizeMB;
             public string updateUrl;
             public string douYouAdId;
+            public string updateEndTime; //更新最后时间
         }
     }
 }

+ 8 - 2
GameClient/Assets/Game/Launcher/Platform/QDManagerInit.cs

@@ -32,8 +32,14 @@ namespace GFGGame.Launcher
                             LauncherConfig.updateAppPrompt = "需要安装新的安装包。";
                         }
 
-                        Alert.Show(LauncherConfig.updateAppPrompt)
-                            .SetLeftButton(true, "前往更新", (data) => { Application.OpenURL(LauncherConfig.updateUrl); });
+                        var obj = Alert.Show(LauncherConfig.updateAppPrompt);
+
+                        if (LauncherConfig.updateEndTime > LauncherTimeUtil.GetCurrentTimestamp())
+                        {
+                            obj = obj.SetLeftButton(true, "继续游戏", (data) => { VersionController.Instance.Init(); });
+                        }
+
+                        obj.SetRightButton(true, "确认安装", (data) => { Application.OpenURL(LauncherConfig.updateUrl); });
                     }
                     else
                     {

+ 60 - 0
GameClient/Assets/Game/Launcher/Utils/LauncherTimeUtil.cs

@@ -0,0 +1,60 @@
+using System;
+using System.Globalization;
+
+namespace GFGGame
+{
+    public class LauncherTimeUtil
+    {
+        private static DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
+
+        private static readonly string[] Formats =
+        {
+            "HH:mm",
+            "'['yyyy']['M']['dd']'",
+            "'['yyyy']['MM']['d']'",
+            "'['yyyy']['M']['d']'",
+            "'['yyyy']['MM']['dd']'",
+            "'['yyyy']['MM']['dd']['HH:mm']'",
+            "'['yyyy']['MM']['dd']['H:mm']'",
+            "'['yyyy']['M']['dd']['HH:mm']'",
+            "'['yyyy']['M']['dd']['H:mm']'",
+            "'['yyyy']['MM']['d']['HH:mm']'",
+            "'['yyyy']['MM']['d']['H:mm']'",
+            "'['yyyy']['M']['d']['HH:mm']'",
+            "'['yyyy']['M']['d']['H:mm']'",
+            "'['yyyy']['MM']['dd']['HH:mm:ss']'",
+            "'['yyyy']['M']['dd']['HH:mm:ss']'",
+            "'['yyyy']['MM']['d']['HH:mm:ss']'",
+            "'['yyyy']['M']['d']['HH:mm:ss']'",
+        };
+
+        private static DateTime GetDateTime(string timeStr)
+        {
+            if (DateTime.TryParseExact(timeStr, Formats, null, DateTimeStyles.None, out var result))
+            {
+                return result;
+            }
+
+            throw new FormatException("Invalid date format");
+        }
+
+        //转换成时间戳,单位毫秒
+        public static long GetTimestamp(string timeStr)
+        {
+            var dateTime = GetDateTime(timeStr);
+            return Transition(dateTime);
+        }
+
+        // 获取当前时间的时间戳,单位毫秒
+        public static long GetCurrentTimestamp()
+        {
+            DateTime now = DateTime.UtcNow;
+            return Transition(now);
+        }
+
+        private static long Transition(DateTime d)
+        {
+            return (d.Ticks - dt.Ticks) / 10000;
+        }
+    }
+}

+ 3 - 0
GameClient/Assets/Game/Launcher/Utils/LauncherTimeUtil.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 011af9816d6143ae800b2ce3e580428f
+timeCreated: 1718619590