mirror of
https://github.com/DerTyp7/defrain-shooter-unity.git
synced 2025-10-30 21:17:09 +01:00
CHANGED TO MIRROR
This commit is contained in:
148
Assets/Mirror/Runtime/NetworkManagerHUD.cs
Normal file
148
Assets/Mirror/Runtime/NetworkManagerHUD.cs
Normal file
@@ -0,0 +1,148 @@
|
||||
// vis2k: GUILayout instead of spacey += ...; removed Update hotkeys to avoid
|
||||
// confusion if someone accidentally presses one.
|
||||
using UnityEngine;
|
||||
|
||||
namespace Mirror
|
||||
{
|
||||
/// <summary>Shows NetworkManager controls in a GUI at runtime.</summary>
|
||||
[DisallowMultipleComponent]
|
||||
[AddComponentMenu("Network/NetworkManagerHUD")]
|
||||
[RequireComponent(typeof(NetworkManager))]
|
||||
[HelpURL("https://mirror-networking.gitbook.io/docs/components/network-manager-hud")]
|
||||
public class NetworkManagerHUD : MonoBehaviour
|
||||
{
|
||||
NetworkManager manager;
|
||||
|
||||
public int offsetX;
|
||||
public int offsetY;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
manager = GetComponent<NetworkManager>();
|
||||
}
|
||||
|
||||
void OnGUI()
|
||||
{
|
||||
GUILayout.BeginArea(new Rect(10 + offsetX, 40 + offsetY, 215, 9999));
|
||||
if (!NetworkClient.isConnected && !NetworkServer.active)
|
||||
{
|
||||
StartButtons();
|
||||
}
|
||||
else
|
||||
{
|
||||
StatusLabels();
|
||||
}
|
||||
|
||||
// client ready
|
||||
if (NetworkClient.isConnected && !NetworkClient.ready)
|
||||
{
|
||||
if (GUILayout.Button("Client Ready"))
|
||||
{
|
||||
NetworkClient.Ready();
|
||||
if (NetworkClient.localPlayer == null)
|
||||
{
|
||||
NetworkClient.AddPlayer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StopButtons();
|
||||
|
||||
GUILayout.EndArea();
|
||||
}
|
||||
|
||||
void StartButtons()
|
||||
{
|
||||
if (!NetworkClient.active)
|
||||
{
|
||||
// Server + Client
|
||||
if (Application.platform != RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
if (GUILayout.Button("Host (Server + Client)"))
|
||||
{
|
||||
manager.StartHost();
|
||||
}
|
||||
}
|
||||
|
||||
// Client + IP
|
||||
GUILayout.BeginHorizontal();
|
||||
if (GUILayout.Button("Client"))
|
||||
{
|
||||
manager.StartClient();
|
||||
}
|
||||
manager.networkAddress = GUILayout.TextField(manager.networkAddress);
|
||||
GUILayout.EndHorizontal();
|
||||
|
||||
// Server Only
|
||||
if (Application.platform == RuntimePlatform.WebGLPlayer)
|
||||
{
|
||||
// cant be a server in webgl build
|
||||
GUILayout.Box("( WebGL cannot be server )");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GUILayout.Button("Server Only")) manager.StartServer();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Connecting
|
||||
GUILayout.Label($"Connecting to {manager.networkAddress}..");
|
||||
if (GUILayout.Button("Cancel Connection Attempt"))
|
||||
{
|
||||
manager.StopClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void StatusLabels()
|
||||
{
|
||||
// host mode
|
||||
// display separately because this always confused people:
|
||||
// Server: ...
|
||||
// Client: ...
|
||||
if (NetworkServer.active && NetworkClient.active)
|
||||
{
|
||||
GUILayout.Label($"<b>Host</b>: running via {Transport.activeTransport}");
|
||||
}
|
||||
// server only
|
||||
else if (NetworkServer.active)
|
||||
{
|
||||
GUILayout.Label($"<b>Server</b>: running via {Transport.activeTransport}");
|
||||
}
|
||||
// client only
|
||||
else if (NetworkClient.isConnected)
|
||||
{
|
||||
GUILayout.Label($"<b>Client</b>: connected to {manager.networkAddress} via {Transport.activeTransport}");
|
||||
}
|
||||
}
|
||||
|
||||
void StopButtons()
|
||||
{
|
||||
// stop host if host mode
|
||||
if (NetworkServer.active && NetworkClient.isConnected)
|
||||
{
|
||||
if (GUILayout.Button("Stop Host"))
|
||||
{
|
||||
manager.StopHost();
|
||||
}
|
||||
}
|
||||
// stop client if client-only
|
||||
else if (NetworkClient.isConnected)
|
||||
{
|
||||
if (GUILayout.Button("Stop Client"))
|
||||
{
|
||||
manager.StopClient();
|
||||
}
|
||||
}
|
||||
// stop server if server-only
|
||||
else if (NetworkServer.active)
|
||||
{
|
||||
if (GUILayout.Button("Stop Server"))
|
||||
{
|
||||
manager.StopServer();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user