Space-Smash-Out/Assets/Scripts/Multiplayer/StartUp.cs

58 lines
1.6 KiB
C#

using System.Reflection;
using FishNet.Managing;
using FishNet.Object;
using FishNet.Transporting;
using FishNet.Transporting.Multipass;
using FishNet.Transporting.Tugboat;
using log4net;
using UnityEngine;
using UnityEngine.SceneManagement;
public class StartUp : MonoBehaviour
{
#region Fields
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
[SerializeField] private NetworkObject lobbyNetworkPrefab;
private NetworkManager networkManager;
#endregion
private void Start()
{
//SceneManager.SetActiveScene(SceneManager.GetSceneByName("OnlineLobby"));
networkManager = GetComponent<NetworkManager>();
Multipass mp = GetComponent<Multipass>();
#if UNITY_WEBGL && !UNITY_EDITOR
mp.SetClientTransport<Bayou>();
#else
mp.SetClientTransport<Tugboat>();
#endif
//networkManager.ServerManager.OnServerConnectionState += ServerStateChanged;
networkManager.ServerManager.StartConnection();
networkManager.ClientManager.StartConnection();
}
#region Events
private void ServerStateChanged(ServerConnectionStateArgs args)
{
if (args.ConnectionState != LocalConnectionState.Started)
{
Log.Debug("Server not yet started.");
return;
}
if (!networkManager.ServerManager.OneServerStarted())
{
Log.Info("More than one server available.");
return;
}
Log.Debug("Instantiating networked lobby.");
NetworkObject nob = Instantiate(lobbyNetworkPrefab);
// TODO: Might not be necessary
Scene scene = SceneManager.GetSceneByName("OnlineLobby");
SceneManager.MoveGameObjectToScene(nob.gameObject, scene);
networkManager.ServerManager.Spawn(nob.gameObject);
}
#endregion
}