ProjectZ/Assets/Scripts/Network/NetworkGameManager.cs

81 lines
1.7 KiB
C#
Raw Normal View History

2024-02-19 21:00:36 +03:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;
using System;
using Player;
public class NetworkGameManager : NetworkBehaviour
{
public static NetworkGameManager singleton { get; private set; }
private CustomNetworkManager networkManager;
public GameObject winner;
// public List<Pawn> alive;
// public List<Pawn> dead;
public event Action RestartCallback;
void Awake()
{
if (singleton != null && singleton != this)
{
Destroy(this);
}
else
{
singleton = this;
}
}
void Start()
{
networkManager = NetworkManager.singleton.GetComponent<CustomNetworkManager>();
networkManager.OnLiveStateCallback += OnLiveStateCallback;
// foreach (var playerObject in networkManager.players)
// {
// var player = playerObject.GetComponent<Pawn>();
// player.OnLiveState += OnLiveState;
// }
}
[Server]
void OnLiveStateCallback()
{
if (networkManager.dead.Count == networkManager.players.Count)
{
CmdRestartScene();
}
// if (networkManager.alive.Count == 1)
// {
// SetWinner(networkManager.alive[0].gameObject);
// }
}
[ClientRpc]
public void SetWinner(GameObject gameObject)
{
winner = gameObject;
CmdRestartScene();
}
[ClientRpc]
void RpcResetScene()
{
RestartCallback?.Invoke();
}
[Command(requiresAuthority = false)]
public void CmdRestartScene()
{
RpcResetScene();
networkManager.RestartScene();
}
}