sdsandbox-rl-scripts/Scripts/Timer.cs

105 lines
2.3 KiB
C#
Executable File

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Timer : MonoBehaviour
{
public TextMesh currentTotTimeDisp;
public TextMesh penaltiesDisp;
public bool enabled_timer = false;
public string racerName;
public float penalties = 0.0f; //seconds
public float currentStart = 0.0f; //seconds
bool freezed = false;
void Awake()
{
if(enabled_timer)
{
StartTimer();
}
else
{
DisableTimer();
}
}
public void StartTimer()
{
currentTotTimeDisp.gameObject.SetActive(true);
penaltiesDisp.gameObject.SetActive(true);
penalties = 0.0f;
currentStart = GetTime();
enabled_timer = true;
}
public void DisableTimer()
{
currentTotTimeDisp.gameObject.SetActive(false);
penaltiesDisp.gameObject.SetActive(false);
penalties = 0.0f;
currentStart = 0.0f;
enabled_timer = false;
freezed = false;
}
public void ResetTimer()
{
penalties = 0.0f;
currentStart = GetTime();
enabled_timer = true;
}
public void SplitTime()
{
freezed = true;
}
public void ContinueTime()
{
freezed = false;
}
float GetTime()
{
return Time.time;
}
float GetPenalties()
{
return penalties;
}
float GetCurrentTime()
{
return (GetTime() - currentStart) + GetPenalties();
}
public void OnCollideChallenge(float penalty)
{
if(enabled_timer == false)
return;
penalties += penalty;
if(penaltiesDisp.gameObject.activeSelf){
float penalties = GetPenalties();
penaltiesDisp.text = penalties.ToString("00.00");
Debug.Log("Added penalty");
}
}
// Update is called once per frame
void Update()
{
if(enabled_timer == false)
return;
if(currentTotTimeDisp.gameObject.activeSelf & !freezed)
{
float currentTime = GetCurrentTime();
currentTotTimeDisp.text = currentTime.ToString("00.00");
}
if(penaltiesDisp.text != penalties.ToString("00.00") & !freezed)
{
penaltiesDisp.text = penalties.ToString("00.00");
}
}
}