92 lines
1.9 KiB
C#

using TMPro;
using UdonSharp;
using UnityEngine;
using VRC.SDK3.UdonNetworkCalling;
using VRC.Udon.Common.Interfaces;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class RiskCard : UdonSharpBehaviour
{
[UdonSynced] public int RiskAmount = 0;
[SerializeField] private RiskCardGroup CardGroup = null;
[SerializeField] private Collider _Holder;
[SerializeField] private TextMeshProUGUI _RiskCardText;
[SerializeField] private Transform _SpawnPosition;
[SerializeField] private Transform _HeldPosition;
private bool _IsInHeldCollider = false;
void Start()
{
_RiskCardText.text = RiskAmount.ToString();
}
void OnTriggerEnter(Collider OtherCollider)
{
if (OtherCollider == _Holder)
{
_IsInHeldCollider = true;
}
}
private void OnTriggerExit(Collider OtherCollider)
{
if (OtherCollider == _Holder)
{
_IsInHeldCollider = false;
}
}
public override void OnPickup()
{
CardGroup.SendCustomNetworkEvent(NetworkEventTarget.All, "RiskCardPickedUp", RiskAmount);
base.OnPickup();
}
public override void Interact()
{
CardGroup.SendCustomNetworkEvent(NetworkEventTarget.All, "RiskCardInteract", RiskAmount);
base.Interact();
}
public override void OnDrop()
{
if (_IsInHeldCollider)
{
transform.position = _Holder.transform.position;
transform.rotation = _Holder.transform.rotation;
}
base.OnDrop();
}
public void SetCardGroup(RiskCardGroup ParentCardGroup)
{
CardGroup = ParentCardGroup;
}
[NetworkCallable]
public void SetToHeldPosition()
{
transform.SetParent(_HeldPosition, false);
transform.localPosition = Vector3.zero;
transform.localEulerAngles = Vector3.zero;
InteractionText = "Reveal";
}
[NetworkCallable]
public void ResetPosition()
{
transform.SetParent(_SpawnPosition, false);
transform.localPosition = Vector3.zero;
transform.localEulerAngles = Vector3.zero;
InteractionText = "Choose";
}
}