| | |
| | |
|
| | | 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 {
|
| | |
| | | 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 {
|
| | |
| | | GameNetSystem.Instance.SendInfo(send);
|
| | | } |
| | | |
| | | public void TryDownLoad(bool _force)
|
| | | public void TryDownLoad(Dominant _dominant)
|
| | | {
|
| | | if (!inGameDownLoadAllow)
|
| | | {
|
| | |
| | | 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;
|
| | | }
|
| | |
|
| | | } |
| | |
| | |
|
| | | if (!hasReward)
|
| | | {
|
| | | if (!dominantDownLoadStarted)
|
| | | if (dominantState == Dominant.None)
|
| | | {
|
| | | RequestDownLoadReward(false);
|
| | | state = State.Completed;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | Clock netSwitchClock;
|
| | | NetworkReachability m_NetworkReachability = NetworkReachability.NotReachable; |
| | | NetworkReachability networkReachability {
|
| | | get { return m_NetworkReachability; }
|
| | |
| | | {
|
| | | 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;
|
| | |
| | | {
|
| | | m_SimulateWifi = value;
|
| | |
|
| | | if (!dominantDownLoadStarted)
|
| | | if (dominantState != Dominant.Whole)
|
| | | {
|
| | | if (m_SimulateWifi)
|
| | | {
|
| | | TryDownLoad(false);
|
| | | TryDownLoad(Dominant.None);
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | {
|
| | | if (CheckDominantDownLoad())
|
| | | {
|
| | | TryDownLoad(true);
|
| | | TryDownLoad(Dominant.Whole);
|
| | | }
|
| | | });
|
| | | }
|
| | |
| | |
|
| | | 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;
|
| | | }
|
| | |
| | | {
|
| | | if (CheckDominantDownLoad())
|
| | | {
|
| | | TryDownLoad(true);
|
| | | TryDownLoad(Dominant.Whole);
|
| | | }
|
| | | }
|
| | | break;
|
| | |
| | | {
|
| | | if (CheckDominantDownLoad())
|
| | | {
|
| | | TryDownLoad(true);
|
| | | TryDownLoad(Dominant.Whole);
|
| | | }
|
| | | }
|
| | | } |
| | |
| | | Pause,
|
| | | Award,
|
| | | Completed,
|
| | | }
|
| | |
|
| | | public enum Dominant
|
| | | {
|
| | | None = 0,
|
| | | Half = 1,
|
| | | Whole = 2,
|
| | | } |
| | | |
| | | } |