using TMPro; using UdonSharp; using UnityEngine; using VRC.SDK3.UdonNetworkCalling; using VRC.SDKBase; [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] public class CaptureCarmenNewspaper : UdonSharpBehaviour { [SerializeField] private TextMeshProUGUI _Date; [SerializeField] private TextMeshProUGUI _Headline; [SerializeField] private MeshRenderer _CarmenPortrait; [SerializeField] private AudioManager _AudioManager; private Animator _Animator; public void Start() { _Animator = GetComponent(); } [NetworkCallable] public void PlayWinAnimation(string WinningPlayer) { GetCurrentDate(); SetHeadline(true, WinningPlayer); _Animator.SetBool("Speen", true); SendCustomEventDelayedSeconds(nameof(ApplyJailEffect), 2.0f); SendCustomEventDelayedSeconds(nameof(ResetAnimation), 5.0f); } [NetworkCallable] public void PlayLoseAnimation() { GetCurrentDate(); SetHeadline(false); _Animator.SetBool("Speen", true); SendCustomEventDelayedSeconds(nameof(ApplyEscapeEffect), 2.0f); SendCustomEventDelayedSeconds(nameof(ResetAnimation), 5.0f); } public void ApplyJailEffect() { _AudioManager.PlaySFX(SFXEventType.JailDoorSlam); _CarmenPortrait.material.SetVector("_MainTex_ST", new Vector4(0.5f, 0.5f, 0.0f, 0.0f)); } public void ApplyEscapeEffect() { _AudioManager.PlaySFX(SFXEventType.CarmenEscape); _CarmenPortrait.material.SetVector("_MainTex_ST", new Vector4(0.5f, 0.5f, 0.5f, 0.5f)); } public void ResetAnimation() { _Animator.SetBool("Speen", false); _CarmenPortrait.material.SetVector("_MainTex_ST", new Vector4(0.5f, 0.5f, 0.0f, 0.5f)); } private void GetCurrentDate() { System.DateTime CurrentDate = Networking.GetNetworkDateTime(); _Date.text = DayOfWeekToString(CurrentDate.DayOfWeek) + ", " + MonthToString(CurrentDate.Month) + " " + CurrentDate.Day + ", " + CurrentDate.Year; } private void SetHeadline(bool PlayerWon, string PlayerName = "") { _Headline.text = PlayerWon ? (PlayerName + "\nCaptures Carmen!") : "Carmen Sandiego\nEvades Capture"; } private string MonthToString(int Month) { switch (Month) { case 1: return "January"; case 2: return "February"; case 3: return "March"; case 4: return "April"; case 5: return "May"; case 6: return "June"; case 7: return "July"; case 8: return "August"; case 9: return "September"; case 10: return "October"; case 11: return "November"; case 12: return "December"; } return "[[ERROR]]"; } private string DayOfWeekToString(System.DayOfWeek Day) { switch (Day) { case System.DayOfWeek.Sunday: return "Sunday"; case System.DayOfWeek.Monday: return "Monday"; case System.DayOfWeek.Tuesday: return "Tuesday"; case System.DayOfWeek.Wednesday: return "Wednesday"; case System.DayOfWeek.Thursday: return "Thursday"; case System.DayOfWeek.Friday: return "Friday"; case System.DayOfWeek.Saturday: return "Saturday"; } return "[[ERROR]]"; } }