Fix player components injection. Add lobby reloading when clients change

This commit is contained in:
2024-09-11 21:03:47 +02:00
parent 9250b7b5dd
commit e428d3a9f9
10 changed files with 284 additions and 86 deletions

View File

@@ -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);
}
}