aha
This commit is contained in:
121
Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyStatus.cs
Normal file
121
Assets/Mirror/Examples/EdgegapLobby/Scripts/UILobbyStatus.cs
Normal file
@ -0,0 +1,121 @@
|
||||
using System;
|
||||
using Edgegap;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
namespace Mirror.Examples.EdgegapLobby
|
||||
{
|
||||
public class UILobbyStatus : MonoBehaviour
|
||||
{
|
||||
public GameObject[] ShowDisconnected;
|
||||
public GameObject[] ShowServer;
|
||||
public GameObject[] ShowHost;
|
||||
public GameObject[] ShowClient;
|
||||
public Button StopServer;
|
||||
public Button StopHost;
|
||||
public Button StopClient;
|
||||
public Text StatusText;
|
||||
private Status _status;
|
||||
private EdgegapLobbyKcpTransport _transport;
|
||||
enum Status
|
||||
{
|
||||
Offline,
|
||||
Server,
|
||||
Host,
|
||||
Client
|
||||
}
|
||||
void Awake()
|
||||
{
|
||||
Refresh();
|
||||
StopServer.onClick.AddListener(() =>
|
||||
{
|
||||
NetworkManager.singleton.StopServer();
|
||||
});
|
||||
StopHost.onClick.AddListener(() =>
|
||||
{
|
||||
NetworkManager.singleton.StopHost();
|
||||
});
|
||||
StopClient.onClick.AddListener(() =>
|
||||
{
|
||||
NetworkManager.singleton.StopClient();
|
||||
});
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
_transport = (EdgegapLobbyKcpTransport)NetworkManager.singleton.transport;
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
var status = GetStatus();
|
||||
if (_status != status)
|
||||
{
|
||||
_status = status;
|
||||
Refresh();
|
||||
}
|
||||
if (_transport)
|
||||
{
|
||||
StatusText.text = _transport.Status.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
StatusText.text = "";
|
||||
}
|
||||
}
|
||||
private void Refresh()
|
||||
{
|
||||
switch (_status)
|
||||
{
|
||||
|
||||
case Status.Offline:
|
||||
SetUI(ShowServer, false);
|
||||
SetUI(ShowHost, false);
|
||||
SetUI(ShowClient, false);
|
||||
SetUI(ShowDisconnected, true);
|
||||
break;
|
||||
case Status.Server:
|
||||
SetUI(ShowDisconnected, false);
|
||||
SetUI(ShowHost, false);
|
||||
SetUI(ShowClient, false);
|
||||
SetUI(ShowServer, true);
|
||||
break;
|
||||
case Status.Host:
|
||||
SetUI(ShowDisconnected, false);
|
||||
SetUI(ShowServer, false);
|
||||
SetUI(ShowClient, false);
|
||||
SetUI(ShowHost, true);
|
||||
break;
|
||||
case Status.Client:
|
||||
SetUI(ShowDisconnected, false);
|
||||
SetUI(ShowServer, false);
|
||||
SetUI(ShowHost, false);
|
||||
SetUI(ShowClient, true);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetUI(GameObject[] gos, bool active)
|
||||
{
|
||||
foreach (GameObject go in gos)
|
||||
{
|
||||
go.SetActive(active);
|
||||
}
|
||||
}
|
||||
private Status GetStatus()
|
||||
{
|
||||
if (NetworkServer.active && NetworkClient.active)
|
||||
{
|
||||
return Status.Host;
|
||||
}
|
||||
if (NetworkServer.active)
|
||||
{
|
||||
return Status.Server;
|
||||
}
|
||||
if (NetworkClient.active)
|
||||
{
|
||||
return Status.Client;
|
||||
}
|
||||
return Status.Offline;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user