using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Mirror; using Player; using TMPro; using StarterAssets; public class GUI : MonoBehaviour { public Interactions interactions; public PersonController personController; public Pawn pawn; public Image crosshair; public TMP_Text energyText; public bool isCursoreHide = true; public GameObject menuUI; public GameObject looserUI; public GameObject restartUI; public GameObject winnerUI; public TMP_Text winnerText; private string _playerListText; private Vector3 _lerpCrosshairDist; private float _hitDistanceInversed; private CustomNetworkManager networkManager; private NetworkGameManager networkGameManager; void Update() { CrosshairSize(); energyText.text = personController.currentEnergy.ToString("N0"); if (Input.GetKeyDown(KeyCode.Escape)) { changeMenuState(); } } void Start() { networkManager = (CustomNetworkManager)CustomNetworkManager.singleton; networkGameManager = NetworkGameManager.singleton; Cursor.lockState = CursorLockMode.Locked; pawn.OnLiveState += OnLiveState; networkGameManager.RestartCallback += OnRestartUI; } private void OnLiveState(Pawn player, bool state) { if (!state) { looserUI.SetActive(true); } else { looserUI.SetActive(false); } } void OnRestartUI() { restartUI.SetActive(true); winnerUI.SetActive(true); if (networkGameManager.winner != null) { winnerText.text = "The winner is: " + networkGameManager.winner.GetComponent().playerName + " !"; } } public void Restart() { OnRestartUI(); networkGameManager.CmdRestartScene(); } void CrosshairSize() { _hitDistanceInversed = interactions.maxHitDistance + 2 - interactions.hitDistance; if (interactions.hitDistance < interactions.maxHitDistance && interactions.canInterract) { crosshair.color = Color.green; } else { crosshair.color = Color.white; } Vector3 crosshairDist = new Vector3(_hitDistanceInversed, _hitDistanceInversed, 0); _lerpCrosshairDist = Vector3.Lerp(_lerpCrosshairDist, crosshairDist, Time.deltaTime * 10); crosshair.rectTransform.localScale = _lerpCrosshairDist / 5; } public void changeMenuState() { isCursoreHide = !isCursoreHide; menuUI.SetActive(!isCursoreHide); crosshair.enabled = isCursoreHide; foreach (var player in networkManager.players) { name = player.GetComponent().playerName; } Cursor.lockState = isCursoreHide ? CursorLockMode.Locked : CursorLockMode.None; } public void BackToMenu() { // stop host if host mode if (NetworkServer.active && NetworkClient.isConnected) { networkManager.StopHost(); } // stop client if client-only else if (NetworkClient.isConnected) { networkManager.StopClient(); } // stop server if server-only else if (NetworkServer.active) { networkManager.StopServer(); } } }