chip-game/Assets/Scripts/TimerManager.cs
2026-01-12 09:36:17 +03:00

93 lines
2.2 KiB
C#

using UnityEngine;
public class TimerManager : MonoBehaviour
{
[SerializeField] Timer player1Timer, player2Timer;
[SerializeField] float vsBotTime = 180;
[SerializeField] float pvpTime = 90; //время для каждого отдельного игрока
private void Start()
{
player1Timer.OnTimerEnded.AddListener(ExitByTime);
player2Timer.OnTimerEnded.AddListener(ExitByTime);
}
public void SetupTimers(GameMode gameMode)
{
if (gameMode == GameMode.pve)
{
float timeToSet = vsBotTime;
player1Timer.SetupTimer(timeToSet);
}
if (gameMode == GameMode.pvp)
{
player1Timer.SetupTimer(pvpTime);
player2Timer.SetupTimer(pvpTime);
}
SetTimersActivity(gameMode);
}
void ExitByTime()
{
GameManager.instance.stateMachine.ChangeState(new CheckState(true));
}
public void SetTimersActivity(GameMode gameMode)
{
if (gameMode == GameMode.pve)
{
player1Timer.gameObject.SetActive(true);
player2Timer.gameObject.SetActive(false);
}
if (gameMode == GameMode.pvp)
{
player1Timer.gameObject.SetActive(true);
player2Timer.gameObject.SetActive(true);
}
}
void StartTimer(CellState player)
{
if (player == CellState.Player1)
player1Timer.StartTimer();
if (player == CellState.Player2)
player2Timer.StartTimer();
}
void StopTimer(CellState player)
{
if (player == CellState.Player1)
player1Timer.StopTimer();
if (player == CellState.Player2)
player2Timer.StopTimer();
}
public void StopAllTimers()
{
player1Timer.StopTimer();
player2Timer.StopTimer();
}
public void SetActiveTimer(CellState currentPlayer)
{
if (currentPlayer == CellState.Player1)
{
player1Timer.StartTimer();
player2Timer.StopTimer();
}
if (currentPlayer == CellState.Player2)
{
player2Timer.StartTimer();
player1Timer.StopTimer();
}
}
}