2024-02-19 21:00:36 +03:00

142 lines
3.4 KiB
C#

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<PersonController>().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<PersonController>().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();
}
}
}