2024-02-19 21:00:36 +03:00
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
using UnityEngine.UI;
|
|
|
|
using Mirror;
|
2024-03-19 17:42:38 +03:00
|
|
|
using Characters;
|
2024-02-19 21:00:36 +03:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|