47 lines
1.2 KiB
C#
47 lines
1.2 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using BITKit.Net.Examples;
|
|
using UnityEngine;
|
|
using Cysharp.Threading.Tasks;
|
|
namespace BITKit.UX.Utils
|
|
{
|
|
public class UXNetState : MonoBehaviour
|
|
{
|
|
[SerializeField, SerializeReference, SubclassSelector]
|
|
private INetClient netClient;
|
|
[SerializeField, SerializeReference, SubclassSelector]
|
|
private INetProvider netProvider;
|
|
|
|
[SerializeField] private UXElement connectedIcon;
|
|
[SerializeField] private UXElement disconnectedIcon;
|
|
[SerializeField] private UXLabel pingLabel;
|
|
private void Start()
|
|
{
|
|
OnDisconnected();
|
|
netClient.OnConnected += OnConnected;
|
|
netClient.OnDisconnected += OnDisconnected;
|
|
netClient.OnConnectedFailed += OnDisconnected;
|
|
netProvider.AddCommandListener<NetClientPingCommand>(OnNetPing);
|
|
}
|
|
private async void OnConnected()
|
|
{
|
|
await UniTask.SwitchToMainThread();
|
|
connectedIcon.SetActive(true);
|
|
disconnectedIcon.SetActive(false);
|
|
}
|
|
|
|
private async void OnDisconnected()
|
|
{
|
|
await UniTask.SwitchToMainThread();
|
|
connectedIcon.SetActive(false);
|
|
disconnectedIcon.SetActive(true);
|
|
}
|
|
private void OnNetPing(NetClientPingCommand obj)
|
|
{
|
|
pingLabel.Set(obj.Ping.ToString());
|
|
}
|
|
}
|
|
|
|
}
|