Files
QuizzinMk5.1/Assets/Quiz/Scripts/UC/PlayerSeat.cs
2025-12-05 21:57:51 +00:00

72 lines
1.7 KiB
C#

using System;
using UdonSharp;
using UnityEngine;
using VRC.SDK3.UdonNetworkCalling;
using VRC.SDKBase;
using VRC.Udon;
public class PlayerSeat : UdonSharpBehaviour
{
public TMPro.TextMeshProUGUI seatLabel;
public TMPro.TMP_Dropdown playerDropdown;
public string[] dropdownOptions;
public string deskTeam;
public AudioSource audioSource;
[UdonSynced] public string seatPlayerName;
public AudioClip[] announcerSounds;
public AudioClip buzzerSound;
public float announcerDelay = 0.8f;
public void OnDropdownChanged()
{
int selectedIndex = playerDropdown.value;
seatPlayerName = dropdownOptions[selectedIndex];
SetSeatLabel();
RequestSerialization();
}
public override void OnDeserialization()
{
SetSeatLabel();
}
public void SetSeatLabel()
{
seatLabel.text = seatPlayerName;
}
[NetworkCallable]
public void PlayBuzzerSound()
{
if (audioSource != null && buzzerSound != null)
{
audioSource.PlayOneShot(buzzerSound);
SendCustomEventDelayedSeconds(nameof(PlayAnnouncerSound), announcerDelay);
}
}
public void PlayAnnouncerSound()
{
string requiredName = deskTeam + "_" + seatPlayerName;
AudioClip announcerSound = null;
for (int i = 0; i < announcerSounds.Length; i++)
{
AudioClip clip = announcerSounds[i];
if (clip != null && clip.name == requiredName)
{
announcerSound = clip;
break;
}
}
if (audioSource != null && announcerSound != null)
{
audioSource.PlayOneShot(announcerSound);
}
}
}