CarmenSandiego/Assets/UdonSharp/CaptureCarmenNewspaper.cs

117 lines
2.9 KiB
C#

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<Animator>();
}
[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]]";
}
}