72 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|