From f85a81e64067305fe81288d544ab2305d720ea7f Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期三, 15 八月 2018 11:08:32 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/AssetVersion/InGameDownLoad.cs |  144 +++++++++++++++++++++++++++++------------------
 1 files changed, 89 insertions(+), 55 deletions(-)

diff --git a/System/AssetVersion/InGameDownLoad.cs b/System/AssetVersion/InGameDownLoad.cs
index e09792d..a3d09db 100644
--- a/System/AssetVersion/InGameDownLoad.cs
+++ b/System/AssetVersion/InGameDownLoad.cs
@@ -16,20 +16,7 @@
 
     public bool inGameDownLoadAllow = false;
 
-    bool m_DominantDownLoadStarted = false;
-    public bool dominantDownLoadStarted {
-        get { return m_DominantDownLoadStarted; }
-        private set {
-            if (m_DominantDownLoadStarted != value)
-            {
-                m_DominantDownLoadStarted = value;
-                if (dominantDownLoadEvent != null)
-                {
-                    dominantDownLoadEvent();
-                }
-            }
-        }
-    }
+
 
     public float progress {
         get {
@@ -59,9 +46,24 @@
     int downLoadedCountRecord = 0;//宸茬粡涓嬭浇瀹屾垚鐨勮祫婧愬寘鏁伴噺
 
     public event Action<State> downLoadStateChangeEvent;
-    public event Action dominantDownLoadEvent;
+    public event Action<Dominant> dominantDownLoadEvent;
 
     Action onDownLoadOk;
+
+    Dominant m_DominantState = Dominant.None;
+    public Dominant dominantState {
+        get { return m_DominantState; }
+        private set {
+            if (m_DominantState != value)
+            {
+                m_DominantState = value;
+                if (dominantDownLoadEvent != null)
+                {
+                    dominantDownLoadEvent(m_DominantState);
+                }
+            }
+        }
+    }
 
     State m_State = State.None;
     public State state {
@@ -145,7 +147,7 @@
         GameNetSystem.Instance.SendInfo(send);
     }
 
-    public void TryDownLoad(bool _force)
+    public void TryDownLoad(Dominant _dominant)
     {
         if (!inGameDownLoadAllow)
         {
@@ -157,36 +159,56 @@
             return;
         }
 
-        if (_force)
+        if (_dominant < dominantState)
         {
-            if (!dominantDownLoadStarted)
-            {
-                backGroundDownLoadSizeRecord = RemoteFile.TotalDownloadedSize;
-                downLoadedCountRecord = okCount;
-
-                dominantDownLoadStarted = true;
-                Pause();
-                state = State.Prepared;
-            }
-
-            WindowCenter.Instance.Open<InGameDownLoadWin>();
+            return;
         }
-        else
+
+        switch (_dominant)
         {
-            if (InGameDownTestUtility.enable)
-            {
-                if (InGameDownTestUtility.isWifi)
+            case Dominant.None:
+                if (InGameDownTestUtility.enable)
                 {
-                    StartDownLoad();
+                    if (InGameDownTestUtility.isWifi)
+                    {
+                        StartDownLoad();
+                    }
                 }
-            }
-            else
-            {
-                if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
+                else
                 {
-                    StartDownLoad();
+                    if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork)
+                    {
+                        StartDownLoad();
+                    }
                 }
-            }
+                break;
+            case Dominant.Half:
+                if (dominantState == Dominant.None)
+                {
+                    backGroundDownLoadSizeRecord = RemoteFile.TotalDownloadedSize;
+                    downLoadedCountRecord = okCount;
+                    state = State.Prepared;
+                }
+                StartDownLoad();
+                dominantState = Dominant.Half;
+                break;
+            case Dominant.Whole:
+                if (dominantState == Dominant.None)
+                {
+                    backGroundDownLoadSizeRecord = RemoteFile.TotalDownloadedSize;
+                    downLoadedCountRecord = okCount;
+                    Pause();
+                    state = State.Prepared;
+                }
+                else if (dominantState == Dominant.Half)
+                {
+                    Pause();
+                    state = State.Prepared;
+                }
+
+                dominantState = Dominant.Whole;
+                WindowCenter.Instance.Open<InGameDownLoadWin>();
+                break;
         }
 
     }
@@ -258,7 +280,7 @@
 
         if (!hasReward)
         {
-            if (!dominantDownLoadStarted)
+            if (dominantState == Dominant.None)
             {
                 RequestDownLoadReward(false);
                 state = State.Completed;
@@ -302,6 +324,7 @@
         }
     }
 
+    Clock netSwitchClock;
     NetworkReachability m_NetworkReachability = NetworkReachability.NotReachable;
     NetworkReachability networkReachability {
         get { return m_NetworkReachability; }
@@ -310,23 +333,27 @@
             {
                 m_NetworkReachability = value;
 
-                if (!dominantDownLoadStarted)
+                if (dominantState != Dominant.Whole)
                 {
                     switch (m_NetworkReachability)
                     {
                         case NetworkReachability.ReachableViaCarrierDataNetwork:
                             Pause();
-                            var endTime = DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond * 10);
-                            Clock.Create(endTime, () =>
+                            var endTime = DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond * 3);
+                            if (netSwitchClock != null)
                             {
-                                if (CheckDominantDownLoad())
-                                {
-                                    TryDownLoad(true);
-                                }
-                            });
+                                netSwitchClock.Stop();
+                            }
+                            netSwitchClock = Clock.Create(endTime, () =>
+                             {
+                                 if (CheckDominantDownLoad())
+                                 {
+                                     TryDownLoad(Dominant.Whole);
+                                 }
+                             });
                             break;
                         case NetworkReachability.ReachableViaLocalAreaNetwork:
-                            TryDownLoad(false);
+                            TryDownLoad(Dominant.None);
                             break;
                         default:
                             break;
@@ -345,11 +372,11 @@
             {
                 m_SimulateWifi = value;
 
-                if (!dominantDownLoadStarted)
+                if (dominantState != Dominant.Whole)
                 {
                     if (m_SimulateWifi)
                     {
-                        TryDownLoad(false);
+                        TryDownLoad(Dominant.None);
                     }
                     else
                     {
@@ -359,7 +386,7 @@
                         {
                             if (CheckDominantDownLoad())
                             {
-                                TryDownLoad(true);
+                                TryDownLoad(Dominant.Whole);
                             }
                         });
                     }
@@ -397,7 +424,7 @@
 
     public bool CheckDominantDownLoad()
     {
-        if (tasks == null || tasks.Count == 0 || isDone || dominantDownLoadStarted || NewBieCenter.Instance.inGuiding)
+        if (tasks == null || tasks.Count == 0 || isDone || dominantState == Dominant.Whole || NewBieCenter.Instance.inGuiding)
         {
             return false;
         }
@@ -467,7 +494,7 @@
                 {
                     if (CheckDominantDownLoad())
                     {
-                        TryDownLoad(true);
+                        TryDownLoad(Dominant.Whole);
                     }
                 }
                 break;
@@ -482,7 +509,7 @@
         {
             if (CheckDominantDownLoad())
             {
-                TryDownLoad(true);
+                TryDownLoad(Dominant.Whole);
             }
         }
     }
@@ -538,6 +565,13 @@
         Pause,
         Award,
         Completed,
+    }
+
+    public enum Dominant
+    {
+        None = 0,
+        Half = 1,
+        Whole = 2,
     }
 
 }

--
Gitblit v1.8.0