Files

135 lines
3.3 KiB
C#
Raw Permalink Normal View History

2025-05-13 05:19:58 +03:00
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
public enum GameState {
Gameplay,
InventoryUI,
GameOverUI,
PauseUI
}
public class GameController : MonoBehaviour {
public HudController hud;
public GameOverUIController gameOverScreen;
public InventoryUIController inventoryController;
public PauseUiController pauseUi;
private GameState _state;
private float _tenseState = 100;
public float _tenseReleaseSpeed = 5;
private HorizontalProgressBar _tenseBar;
private UiController _currentUi;
private UiController _previousUi;
public AudioClip gameOverClip;
public GameState State {
get { return _state; }
}
public void OnSuspiciousSound(HumanController source) {
}
public void OnCanSeePlayer(HumanController source) {
}
public void ShowUI(UiController ui) {
if (_currentUi == ui) {
return;
}
_previousUi = _currentUi;
if (_previousUi != null) {
_previousUi.gameObject.SetActive(false);
}
_currentUi = ui;
if (_currentUi != null) {
_currentUi.gameObject.SetActive(true);
}
if (_currentUi == null || _currentUi == hud || _currentUi == gameOverScreen) {
Time.timeScale = 1;
}
else {
Time.timeScale = 0;
}
if (_currentUi == hud) {
_state = GameState.Gameplay;
}
}
public void ShowPreviousUi(bool removeCurrentFromHistory = false) {
ShowUI(_previousUi);
if (removeCurrentFromHistory) {
_previousUi = null;
}
}
void Start () {
_tenseBar = new HorizontalProgressBar();
ShowUI(hud);
}
public void GameOver(){
_state = GameState.GameOverUI;
ShowUI(gameOverScreen);
if (gameOverClip != null) {
AudioSource.PlayClipAtPoint(gameOverClip, Vector3.zero);
}
//hud.gameObject.SetActive(false);
//gameOverScreen.gameObject.SetActive(true);
}
public void PauseGame(bool pause) {
Time.timeScale = pause ? 0 : 1;
}
void Update () {
if (_state == GameState.GameOverUI) {
return;
}
if (Input.GetKeyDown(KeyCode.I)) {
var playerController = FindObjectOfType<PlayerController>();
// bool menuVisible = inventoryController.gameObject.activeInHierarchy;
if (_state == GameState.InventoryUI) {
// inventoryController.gameObject.SetActive(false);
_state = GameState.Gameplay;
// hud.gameObject.SetActive(true);
ShowUI(hud);
// PauseGame(false);
}
else if (_state == GameState.Gameplay) {
// PauseGame(true);
inventoryController.inventory = playerController.GetComponent<Inventory>();
//inventoryController.gameObject.SetActive(true);
ShowUI(inventoryController);
inventoryController.Rebuild();
_state = GameState.InventoryUI;
//hud.gameObject.SetActive(false);
}
}
if (Input.GetKeyDown(KeyCode.Escape)) {
if (_state != GameState.PauseUI) {
ShowUI(pauseUi);
}
else {
ShowPreviousUi();
}
}
}
}