Jamie Greunbaum 15f263ec44 - Added a home position for the phone to reset to.
- Improved round 2 explanations during the chain and phone call segments.
- Improved functionality of the phone call.
2025-08-26 18:07:34 -04:00

68 lines
1.3 KiB
C#

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon.Common.Interfaces;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class JailPhone : UdonSharpBehaviour
{
[SerializeField] private GameManagerRound2 _GameManager;
[UdonSynced, FieldChangeCallback(nameof(Activate))] private bool _Activate = false;
private VRCPlayerApi _CurrentOwner;
public void Initialise()
{
_CurrentOwner = _GameManager.GetHostOwner();
transform.localPosition = Vector3.zero;
transform.localRotation = Quaternion.identity;
}
public override void OnPickupUseDown()
{
if (Activate && _CurrentOwner == _GameManager.GetHostOwner())
{
PlayJailCall();
}
base.OnPickupUseDown();
}
public override void OnOwnershipTransferred(VRCPlayerApi Player)
{
_CurrentOwner = Player;
if (Activate && Player != _GameManager.GetHostOwner())
{
PlayJailCall();
}
base.OnOwnershipTransferred(Player);
}
private void PlayJailCall()
{
_GameManager.SendCustomEventDelayedSeconds("PlayJailCall", 0.75f);
Activate = false;
}
public bool Activate
{
set
{
_Activate = value;
if (_Activate)
{
_CurrentOwner = _GameManager.GetHostOwner();
_GameManager.PhoneRing();
}
RequestSerialization();
}
get => _Activate;
}
}