Question by
lefk36 · Feb 02 at 02:36 PM ·
enumturn-basedtimer countdown
TIme based battle Turn System
Hello, I am trying to make a turn based system that relies on timers but Icannot get it to work. Can someone explain to me why the the enum states are not changing?
public enum TurnState
{
Start,
playerTurn,
enemyTurn,
winState,
loseState
}
public class TurnSystem : MonoBehaviour
{
public TurnState m_turnState;
//Counts the turn number
[SerializeField]
public /*static*/ int TurnCounter;
//Counters for Enemy and player turns
[Header("Turn Timers")]
[SerializeField]
private float enemyTurn_Time;
private float enemy_startTime;
[SerializeField]
private float enemyTimeReset;
[SerializeField]
private float playerTurn_Time;
private float player_startTime;
[SerializeField]
private float playerTimeReset;
private bool useTimerEnemy;
private bool useTimerPlayer;
[Header("Player and enemy Prefabs and Positions")]
[SerializeField]
private Transform playerStart_Position;
[SerializeField]
private Transform enemyStart_Position;
[SerializeField]
private GameObject PlayerPref;
[SerializeField]
private GameObject EnemyPref;
private void Awake()
{
useTimerEnemy = true;
useTimerPlayer = true;
TurnCounter = 0;
m_turnState = TurnState.Start;
enemy_startTime = Time.time;
player_startTime = Time.time;
}
private void Update()
{
if(m_turnState == TurnState.Start)
{
m_turnState = TurnState.playerTurn;
}
if(m_turnState == TurnState.enemyTurn)
{
m_turnState = TurnState.enemyTurn;
if (useTimerEnemy)
{
enemyTurn_Time = enemyTimeReset;
TurnTime_Count_Enemy();
}
}
else if (m_turnState == TurnState.playerTurn)
{
m_turnState = TurnState.playerTurn;
if (useTimerPlayer)
{
playerTurn_Time = playerTimeReset;
TurnTime_Count_Player();
}
}
}
private void TurnTime_Count_Enemy()
{
float elapsedTime = Time.time - enemy_startTime;
//Converting actual Time
int minutes = (int)((enemyTurn_Time - elapsedTime) / 60) % 60;
int seconds = (int)((enemyTurn_Time - elapsedTime) % 60);
//Displaying Time
string gameTimerString = string.Format("{0:0}:{1:00}", minutes, seconds);
Debug.Log(gameTimerString);
//Calculating Countdown
if (elapsedTime >= enemyTurn_Time)
{
TurnCounter++;
Debug.Log("Time is up for enemy");
}
if(minutes <=0 && seconds <= 0)
{
elapsedTime = enemyTimeReset;
m_turnState = TurnState.playerTurn;
useTimerEnemy = false;
}
}
private void TurnTime_Count_Player()
{
float elapsedTime = Time.time - player_startTime;
//Converting actual Time
int minutes = (int)((playerTurn_Time - elapsedTime) / 60) % 60;
int seconds = (int)((playerTurn_Time - elapsedTime) % 60);
//Displaying Time
string gameTimerString = string.Format("{0:0}:{1:00}", minutes, seconds);
Debug.Log(gameTimerString);
//Calculating CountDown
if (elapsedTime >= playerTurn_Time)
{
TurnCounter++;
Debug.Log("Time is up for player");
}
if(minutes <=0 && seconds <=0)
{
m_turnState = TurnState.enemyTurn;
useTimerPlayer = false;
}
}
Comment
Your answer
