79 lines
2 KiB
C#
79 lines
2 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using System;
|
|
using TMPro;
|
|
|
|
namespace SimpleTools.Timer{
|
|
public class Timer : MonoBehaviour{
|
|
|
|
float elapsedTime;
|
|
public float ElapsedTime { get { return elapsedTime; } }
|
|
bool isPaused;
|
|
public bool IsPaused { get { return isPaused; } }
|
|
TimeSpan timePlaying;
|
|
public TimeSpan TimePlaying { get { return timePlaying; } }
|
|
TMP_Text timer;
|
|
public TMP_Text TimerText { get { return timer; } }
|
|
TimerType timerType;
|
|
public TimerType TimerType { get { return timerType; } }
|
|
|
|
public void Setup(float elapsedTime, bool isPaused, TimeSpan timePlaying, TMP_Text timer, TimerType timerType, string text){
|
|
this.elapsedTime = elapsedTime;
|
|
this.isPaused = isPaused;
|
|
this.timePlaying = timePlaying;
|
|
this.timer = timer;
|
|
this.timerType = timerType;
|
|
timer.text = text;
|
|
}
|
|
|
|
IEnumerator UpdateTimer(){
|
|
while (!isPaused){
|
|
if(timerType == TimerType.Clock){
|
|
timer.text = DateTime.Now.ToString("HH:mm:ss");
|
|
}else{
|
|
switch (timerType){
|
|
case TimerType.Countdown:
|
|
elapsedTime -= Time.deltaTime;
|
|
if(elapsedTime < 0f){
|
|
elapsedTime = 0f;
|
|
isPaused = true;
|
|
}
|
|
break;
|
|
case TimerType.Stopwatch:
|
|
elapsedTime += Time.deltaTime;
|
|
break;
|
|
}
|
|
timePlaying = TimeSpan.FromSeconds(elapsedTime);
|
|
timer.text = timePlaying.ToString("m':'ss'.'ff");
|
|
}
|
|
yield return null;
|
|
}
|
|
}
|
|
|
|
public void Play(){
|
|
isPaused = false;
|
|
StartCoroutine(UpdateTimer());
|
|
}
|
|
|
|
public void Stop(){
|
|
isPaused = true;
|
|
}
|
|
|
|
public void ResetTimer(){
|
|
isPaused = true;
|
|
elapsedTime = 0f;
|
|
timePlaying = TimeSpan.FromSeconds(elapsedTime);
|
|
timer.text = timePlaying.ToString("m':'ss'.'ff");
|
|
}
|
|
|
|
public void Restart(){
|
|
isPaused = false;
|
|
elapsedTime = 0f;
|
|
timePlaying = TimeSpan.FromSeconds(elapsedTime);
|
|
timer.text = timePlaying.ToString("m':'ss'.'ff");
|
|
StopAllCoroutines();
|
|
StartCoroutine(UpdateTimer());
|
|
}
|
|
}
|
|
}
|