diff --git a/Assets/Fish-Networking-Discovery-main/NetworkDiscovery.cs b/Assets/Fish-Networking-Discovery-main/NetworkDiscovery.cs index fc384179..e4ec54f1 100644 --- a/Assets/Fish-Networking-Discovery-main/NetworkDiscovery.cs +++ b/Assets/Fish-Networking-Discovery-main/NetworkDiscovery.cs @@ -242,7 +242,7 @@ namespace FishNet.Discovery // // return; // } - // Debug.Log("NetworkDiscovery is searching on port " + port); + Debug.Log("NetworkDiscovery is searching"); if (InstanceFinder.IsClient) { diff --git a/Assets/Fish-Networking-Discovery-main/NetworkDiscoveryCanvasUI.cs b/Assets/Fish-Networking-Discovery-main/NetworkDiscoveryCanvasUI.cs new file mode 100644 index 00000000..6f4dbe75 --- /dev/null +++ b/Assets/Fish-Networking-Discovery-main/NetworkDiscoveryCanvasUI.cs @@ -0,0 +1,144 @@ +using FishNet; +using FishNet.Discovery; +using System.Collections; +using System.Collections.Generic; +using System.Net; +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class NetworkMenuUI : MonoBehaviour +{ + [Header("UI References")] + public Button startPlayingButton; + public Button joinMultiplayerButton; + public Transform serverListContainer; + public GameObject serverListItemPrefab; + public TMP_Text statusText; + + [Header("Networking")] + public NetworkDiscovery networkDiscovery; + public Camera uiCamera; // Optional, disable if connecting + + private readonly List foundServers = new(); + + private void Start() + { + if (networkDiscovery == null) + networkDiscovery = FindObjectOfType(); + + startPlayingButton.onClick.AddListener(OnStartPlaying); + joinMultiplayerButton.onClick.AddListener(OnJoinMultiplayer); + + networkDiscovery.ServerFoundCallback += OnServerFound; + } + + private void OnStartPlaying() + { + statusText.text = "Starting host..."; + StartCoroutine(HostAndSearchRoutine()); + } + + + private void OnJoinMultiplayer() + { + statusText.text = "Searching for servers..."; + ClearServerList(); + foundServers.Clear(); + networkDiscovery.StartSearchingForServers(); + } + + private void OnServerFound(IPEndPoint endPoint) + { + if (foundServers.Contains(endPoint)) return; + foundServers.Add(endPoint); + + // Auto-join if started as host + if (InstanceFinder.IsServer) + { + //networkDiscovery.StopAdvertisingServer(); + networkDiscovery.StopSearchingForServers(); + + uiCamera.enabled = false; + + InstanceFinder.ClientManager.StartConnection("192.168.42.212"); + statusText.text = $"Joined server: {endPoint.Address}"; + return; + } + + // Display in UI for manual joining + GameObject item = Instantiate(serverListItemPrefab, serverListContainer); + TMP_Text label = item.GetComponentInChildren(); + label.text = endPoint.Address.ToString(); + + Button btn = item.GetComponent