zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Unity/Assets/Model/Game/Entity/NetworkMonitor.cs

69 lines
1.7 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
using ET;
using UnityEngine;
namespace libx
{
public interface INetworkMonitorListener
{
void OnReachablityChanged(NetworkReachability reachability);
}
public class NetworkMonitorAwakeSystem : AwakeSystem<NetworkMonitor>
{
public override void Awake(NetworkMonitor self)
{
self.Awake();
}
}
public class NetworkMonitorUpdateSystem : UpdateSystem<NetworkMonitor>
{
public override void Update(NetworkMonitor self)
{
self.Update();
}
}
public class NetworkMonitor : Entity
{
private NetworkReachability _reachability;
public INetworkMonitorListener listener { get; set; }
[SerializeField]private float sampleTime = 0.5f;
private float _time;
private bool _started;
public void Awake()
{
_reachability = Application.internetReachability;
Restart();
}
public void Restart()
{
_time = TimeHelper.ClientNowSeconds();
_started = true;
}
public void Stop()
{
_started = false;
}
public void Update()
{
2021-04-11 19:50:39 +08:00
long now = TimeHelper.ClientNowSeconds();
2021-04-08 20:09:59 +08:00
if (_started && now - _time >= sampleTime)
{
2021-04-11 19:50:39 +08:00
NetworkReachability state = Application.internetReachability;
2021-04-08 20:09:59 +08:00
if (_reachability != state)
{
if (listener != null)
{
listener.OnReachablityChanged(state);
}
_reachability = state;
}
_time =now;
}
}
}
}