Fix player components injection. Add lobby reloading when clients change
This commit is contained in:
@@ -5,6 +5,7 @@ using UnityEngine;
|
||||
using Zenject;
|
||||
using ParrelSync;
|
||||
using UnityEngine.Events;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class GameManager : NetworkBehaviour
|
||||
{
|
||||
@@ -27,10 +28,13 @@ public class GameManager : NetworkBehaviour
|
||||
[SerializeField]
|
||||
private bool autoConnectOrHost = true;
|
||||
|
||||
public bool IsMultiplayer => networkManager.IsHost || networkManager.IsClient;
|
||||
public bool IsMultiplayer => networkManager.IsConnectedClient;
|
||||
|
||||
public NetworkClient LocalClient => networkManager.LocalClient;
|
||||
|
||||
public UnityEvent OnConnected;
|
||||
public UnityEvent OnDisconnected;
|
||||
public UnityEvent<IReadOnlyList<NetworkClient>> OnClientsChanged;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
@@ -78,11 +82,13 @@ public class GameManager : NetworkBehaviour
|
||||
private void OnClientStarted()
|
||||
{
|
||||
OnConnected?.Invoke();
|
||||
OnClientsChanged.Invoke(networkManager.ConnectedClientsList);
|
||||
}
|
||||
|
||||
private void OnClientStopped(bool wasHost)
|
||||
{
|
||||
OnDisconnected?.Invoke();
|
||||
OnClientsChanged.Invoke(networkManager.ConnectedClientsList);
|
||||
}
|
||||
|
||||
private void OnClientConnectedCallback(ulong clientId)
|
||||
@@ -93,6 +99,8 @@ public class GameManager : NetworkBehaviour
|
||||
{
|
||||
StartCoroutine(SwitchSoloMultiplayerRig(false));
|
||||
}
|
||||
|
||||
OnClientsChanged.Invoke(networkManager.ConnectedClientsList);
|
||||
}
|
||||
|
||||
private IEnumerator SwitchSoloMultiplayerRig(bool toSolo)
|
||||
@@ -126,5 +134,7 @@ public class GameManager : NetworkBehaviour
|
||||
{
|
||||
StartCoroutine(SwitchSoloMultiplayerRig(true));
|
||||
}
|
||||
|
||||
OnClientsChanged.Invoke(networkManager.ConnectedClientsList);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user