| | |
| | | using System; |
| | | using Snxxz.UI; |
| | | |
| | | public class CreateOrSelectRoleState : NetState |
| | | { |
| | | const int OVERTIME_THRESHOLD = 12; |
| | | bool connectedDetecting = false; |
| | | public class CreateOrSelectRoleState : NetState
|
| | | {
|
| | | const int OVERTIME_THRESHOLD = 12;
|
| | | bool connectedDetecting = false;
|
| | |
|
| | | NetworkReachability m_NetWorkReachability = NetworkReachability.ReachableViaCarrierDataNetwork;
|
| | | NetworkReachability netWorkReachability {
|
| | | get { return m_NetWorkReachability; }
|
| | | set {
|
| | | if (m_NetWorkReachability != value)
|
| | | {
|
| | | m_NetWorkReachability = value;
|
| | | DetectConnected(3);
|
| | | }
|
| | | }
|
| | | } |
| | | |
| | | NetworkReachability m_NetWorkReachability = NetworkReachability.ReachableViaCarrierDataNetwork; |
| | | NetworkReachability netWorkReachability { |
| | | get { return m_NetWorkReachability; } |
| | | set { |
| | | if (m_NetWorkReachability != value) |
| | | { |
| | | m_NetWorkReachability = value; |
| | | DetectConnected(3); |
| | | } |
| | | public override void OnEnter()
|
| | | {
|
| | | m_NetWorkReachability = Application.internetReachability;
|
| | | NetLinkWin.Hide();
|
| | | base.OnEnter();
|
| | | } |
| | | |
| | | protected override void Update()
|
| | | {
|
| | | if (GameNetSystem.Instance.netState != GameNetSystem.NetState.CreateOrSelectRole)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (connectedDetecting)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if ((DateTime.Now - GameNetSystem.Instance.lastPackageTime).TotalSeconds > OVERTIME_THRESHOLD)
|
| | | {
|
| | | DetectConnected(3);
|
| | | }
|
| | | else if (!GameNetSystem.Instance.socketConnected)
|
| | | {
|
| | | DetectConnected(3);
|
| | | }
|
| | | else
|
| | | {
|
| | | #if UNITY_IOS && !UNITY_EDITOR
|
| | | netWorkReachability = Application.internetReachability;
|
| | | #endif
|
| | | } |
| | | } |
| | | |
| | | public override void OnEnter() |
| | | { |
| | | m_NetWorkReachability = Application.internetReachability; |
| | | NetLinkWin.Hide(); |
| | | base.OnEnter(); |
| | | } |
| | | |
| | | protected override void Update() |
| | | { |
| | | if (GameNetSystem.Instance.netState != GameNetSystem.NetState.CreateOrSelectRole) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (connectedDetecting) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if ((DateTime.Now - GameNetSystem.Instance.lastPackageTime).TotalSeconds > OVERTIME_THRESHOLD) |
| | | { |
| | | DetectConnected(3); |
| | | } |
| | | else if (!GameNetSystem.Instance.socketConnected) |
| | | { |
| | | DetectConnected(3); |
| | | } |
| | | else |
| | | { |
| | | #if UNITY_IOS && !UNITY_EDITOR |
| | | netWorkReachability = Application.internetReachability; |
| | | #endif |
| | | } |
| | | } |
| | | |
| | | public override void OnExit() |
| | | { |
| | | base.OnExit(); |
| | | } |
| | | |
| | | private void DetectConnected(int _seconds) |
| | | { |
| | | connectedDetecting = true; |
| | | |
| | | var sendInfo = new C0104_tagCOnlineReturn(); |
| | | sendInfo.Type = 0; |
| | | GameNetSystem.Instance.SendInfo(sendInfo);// 在线回应 |
| | | |
| | | Clock.Create(DateTime.Now + new TimeSpan(_seconds * TimeSpan.TicksPerSecond), OnDetectEnd); |
| | | } |
| | | |
| | | private void OnDetectEnd() |
| | | { |
| | | connectedDetecting = false; |
| | | |
| | | var isDisconnected = false; |
| | | #if UNITY_IOS && !UNITY_EDITOR |
| | | isDisconnected = (DateTime.Now - GameNetSystem.Instance.lastPackageTime).TotalSeconds > 3; |
| | | #else |
| | | isDisconnected = !GameNetSystem.Instance.socketConnected || (DateTime.Now - GameNetSystem.Instance.lastPackageTime).TotalSeconds > OVERTIME_THRESHOLD; |
| | | #endif |
| | | |
| | | if (isDisconnected) |
| | | { |
| | | switch (Application.internetReachability) |
| | | { |
| | | case NetworkReachability.NotReachable: |
| | | GameNetSystem.Instance.Disconnect(); |
| | | WindowCenter.Instance.Open<DisconnectHintWin>(); |
| | | break; |
| | | case NetworkReachability.ReachableViaCarrierDataNetwork: |
| | | case NetworkReachability.ReachableViaLocalAreaNetwork: |
| | | GameNetSystem.Instance.Reconnect(); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void OnApplicationPause(bool pause) |
| | | { |
| | | if (GameNetSystem.Instance.netState != GameNetSystem.NetState.CreateOrSelectRole) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (!pause) |
| | | { |
| | | DetectConnected(3); |
| | | } |
| | | public override void OnExit()
|
| | | {
|
| | | base.OnExit();
|
| | | }
|
| | |
|
| | | private void DetectConnected(int _seconds)
|
| | | {
|
| | | connectedDetecting = true;
|
| | |
|
| | | var sendInfo = new C0104_tagCOnlineReturn();
|
| | | sendInfo.Type = 0;
|
| | | GameNetSystem.Instance.SendInfo(sendInfo);// 在线回应
|
| | |
|
| | | Clock.Create(DateTime.Now + new TimeSpan(_seconds * TimeSpan.TicksPerSecond), OnDetectEnd);
|
| | | }
|
| | |
|
| | | private void OnDetectEnd()
|
| | | {
|
| | | connectedDetecting = false;
|
| | |
|
| | | var isDisconnected = false;
|
| | | #if UNITY_IOS && !UNITY_EDITOR
|
| | | isDisconnected = (DateTime.Now - GameNetSystem.Instance.lastPackageTime).TotalSeconds > 3;
|
| | | #else
|
| | | isDisconnected = !GameNetSystem.Instance.socketConnected || (DateTime.Now - GameNetSystem.Instance.lastPackageTime).TotalSeconds > OVERTIME_THRESHOLD;
|
| | | #endif
|
| | |
|
| | | if (isDisconnected)
|
| | | {
|
| | | switch (Application.internetReachability)
|
| | | {
|
| | | case NetworkReachability.NotReachable:
|
| | | GameNetSystem.Instance.Disconnect();
|
| | | WindowCenter.Instance.Open<DisconnectHintWin>();
|
| | | break;
|
| | | case NetworkReachability.ReachableViaCarrierDataNetwork:
|
| | | case NetworkReachability.ReachableViaLocalAreaNetwork:
|
| | | GameNetSystem.Instance.Reconnect();
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnApplicationPause(bool pause)
|
| | | {
|
| | | if (GameNetSystem.Instance.netState != GameNetSystem.NetState.CreateOrSelectRole)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (!pause)
|
| | | {
|
| | | DetectConnected(3);
|
| | | }
|
| | | } |
| | | |
| | | } |