少年修仙传客户端代码仓库
client_Wu Xijin
2018-08-15 2dd1f47082d300e22bbe42b1d5e7d65357cba0f2
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,
    }
}