- Improved round 2 explanations during the chain and phone call segments. - Improved functionality of the phone call.
68 lines
1.3 KiB
C#
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;
|
|
}
|
|
}
|