BITKit/Packages/Runtime~/Unity/Scripts/NetProvider/UX/UXNetState.cs

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());
}
}
}