2023-07-24 16:38:13 +03:00
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.Events;
|
|
|
|
|
using UnityEngine.SceneManagement;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public enum GameState
|
|
|
|
|
{
|
|
|
|
|
None,
|
|
|
|
|
Started,
|
|
|
|
|
Ended,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class GameManager : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
public static GameManager Instance { get; private set; }
|
|
|
|
|
|
2023-08-15 17:38:54 +03:00
|
|
|
|
private vTimerCounter _timerCounter;
|
|
|
|
|
private EndGameModule _endGameModule;
|
|
|
|
|
|
|
|
|
|
private bool _successEnd;
|
2023-07-24 16:38:13 +03:00
|
|
|
|
|
2023-10-11 11:58:06 +03:00
|
|
|
|
public UnityEvent OnGameInit;
|
2023-07-26 14:13:07 +03:00
|
|
|
|
public UnityEvent OnGameStarted;
|
|
|
|
|
public UnityEvent OnGameEnded;
|
|
|
|
|
|
|
|
|
|
public GameState CurrentGameState = GameState.None;
|
2023-07-24 16:38:13 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
|
{
|
2023-10-17 12:37:34 +03:00
|
|
|
|
if (Instance == null)
|
2023-07-24 16:38:13 +03:00
|
|
|
|
{
|
|
|
|
|
Instance = this;
|
|
|
|
|
}
|
2023-10-17 12:37:34 +03:00
|
|
|
|
else if (Instance != this)
|
2023-07-24 16:38:13 +03:00
|
|
|
|
{
|
|
|
|
|
Destroy(gameObject);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
InitReferences();
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-15 17:38:54 +03:00
|
|
|
|
private void OnEnable()
|
|
|
|
|
{
|
|
|
|
|
_timerCounter.OnTimeEnded.AddListener(OnEndTime);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnDisable()
|
|
|
|
|
{
|
|
|
|
|
_timerCounter.OnTimeEnded.AddListener(OnEndTime);
|
|
|
|
|
}
|
|
|
|
|
|
2023-10-17 12:37:34 +03:00
|
|
|
|
private void Start()
|
|
|
|
|
{
|
|
|
|
|
LeaderboardController.Instance.RefreshEntries();
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-24 16:38:13 +03:00
|
|
|
|
private void InitReferences()
|
|
|
|
|
{
|
2023-08-15 17:38:54 +03:00
|
|
|
|
_endGameModule = FindObjectOfType<EndGameModule>();
|
|
|
|
|
_timerCounter = FindObjectOfType<vTimerCounter>();
|
2023-10-17 12:37:34 +03:00
|
|
|
|
|
2023-10-11 11:58:06 +03:00
|
|
|
|
OnGameInit?.Invoke();
|
2023-07-24 16:38:13 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void ChangeState(GameState newState)
|
|
|
|
|
{
|
2023-08-15 17:38:54 +03:00
|
|
|
|
if (CurrentGameState == newState)
|
|
|
|
|
return;
|
|
|
|
|
|
2023-07-24 16:38:13 +03:00
|
|
|
|
CurrentGameState = newState;
|
|
|
|
|
switch (CurrentGameState)
|
|
|
|
|
{
|
|
|
|
|
case GameState.Started:
|
|
|
|
|
{
|
2023-09-04 12:48:24 +03:00
|
|
|
|
OnGameStarted?.Invoke();
|
2023-07-24 16:38:13 +03:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case GameState.Ended:
|
|
|
|
|
{
|
2023-07-26 14:13:07 +03:00
|
|
|
|
OnGameEnded?.Invoke();
|
2023-08-15 17:38:54 +03:00
|
|
|
|
_endGameModule.ShowEndMenu(_successEnd);
|
2023-07-24 16:38:13 +03:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-15 17:38:54 +03:00
|
|
|
|
private bool _startedOnce = false;
|
|
|
|
|
|
2023-10-02 19:12:35 +03:00
|
|
|
|
public UITextShow TextShow;
|
|
|
|
|
|
2023-07-28 11:48:57 +03:00
|
|
|
|
[ContextMenu("Debug Start")]
|
2023-07-26 14:13:07 +03:00
|
|
|
|
public void OnStartGame()
|
2023-07-24 16:38:13 +03:00
|
|
|
|
{
|
2023-08-15 17:38:54 +03:00
|
|
|
|
if (_startedOnce)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
_startedOnce = true;
|
2023-10-17 15:49:10 +03:00
|
|
|
|
TextShow.ShowTimer(3, "<22><><EFBFBD><EFBFBD><EFBFBD>!", 1, null, ()=> ChangeState(GameState.Started));
|
2023-07-24 16:38:13 +03:00
|
|
|
|
}
|
2023-08-15 17:38:54 +03:00
|
|
|
|
|
2023-09-04 12:48:24 +03:00
|
|
|
|
[ContextMenu("Debug End")]
|
2023-08-15 17:38:54 +03:00
|
|
|
|
public void OnEndTime()
|
|
|
|
|
{
|
2023-10-17 12:37:34 +03:00
|
|
|
|
//_successEnd = false;
|
|
|
|
|
//ChangeState(GameState.Ended);
|
|
|
|
|
BNG.SceneLoader.Instance.LoadStartScene();
|
2023-08-15 17:38:54 +03:00
|
|
|
|
}
|
|
|
|
|
|
2023-09-04 12:48:24 +03:00
|
|
|
|
[ContextMenu("Debug Finish")]
|
2023-08-15 17:38:54 +03:00
|
|
|
|
public void OnFinish()
|
|
|
|
|
{
|
2023-10-17 12:37:34 +03:00
|
|
|
|
//_successEnd = true;
|
|
|
|
|
//ChangeState(GameState.Ended);
|
|
|
|
|
BNG.SceneLoader.Instance.LoadStartScene();
|
2023-08-15 17:38:54 +03:00
|
|
|
|
}
|
2023-07-24 16:38:13 +03:00
|
|
|
|
}
|