58 lines
1.2 KiB
C#

using TMPro;
using UdonSharp;
using UnityEngine;
using UnityEngine.UI;
using VRC.Udon.Common;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class TimerDisplay : UdonSharpBehaviour
{
[SerializeField] private RawImage _Timer;
[SerializeField] private Material _TimerMaterial;
[SerializeField] private int _MaxSeconds = 45;
[SerializeField] private TextMeshProUGUI _CounterText;
private int _ElapsedSeconds = 0;
private int _CorrectMarkers = 0;
public override void OnDeserialization(DeserializationResult Result)
{
_SyncedValues();
base.OnDeserialization(Result);
}
public void Initialise()
{
_ElapsedSeconds = 0;
_CorrectMarkers = 0;
_SyncedValues();
RequestSerialization();
}
public void SecondsElapsed(int ElapsedSeconds)
{
_ElapsedSeconds = ElapsedSeconds;
_SyncedValues();
RequestSerialization();
}
public void NewCorrectMarker()
{
_CorrectMarkers++;
_SyncedValues();
RequestSerialization();
}
private void _SyncedValues()
{
Debug.Log("[TimerDisplay] Elapsed seconds: " + _ElapsedSeconds);
_Timer.material.SetFloat("_WiperProgress", (float)_ElapsedSeconds / (float)_MaxSeconds);
_CounterText.text = _CorrectMarkers.ToString();
}
}