- Functions for changing host ownership were added to game and case managers. - Updated Patty's Africa call. - Due to issues, this reverts commit 5f19645feec3487853ef3da1bdc8d3513fe2be82.
194 lines
5.1 KiB
C#
194 lines
5.1 KiB
C#
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
using VRC.SDK3.Components;
|
|
using VRC.Udon.Common;
|
|
using TMPro;
|
|
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
|
|
public class HostCardManager : UdonSharpBehaviour
|
|
{
|
|
[SerializeField] private GameManagerBase _GameManager;
|
|
|
|
[Header("UI")]
|
|
[SerializeField] private HostCardBetweenRoundsInterface _BetweenRoundsInterface;
|
|
|
|
[Space]
|
|
|
|
[SerializeField] private HostCardMultipleChoiceInterface _MultipleChoiceInterface;
|
|
[SerializeField] private HostCardLightningRoundInterface _LightningRoundInterface;
|
|
[SerializeField] private HostCardTheChaseInterface _TheChaseInterface;
|
|
[SerializeField] private HostCardTiebreakerInterface _TiebreakerInterface;
|
|
|
|
[Space]
|
|
|
|
[SerializeField] private HostCardRecoverTheLootExplainerInterface _RecoverTheLootExplainerInterface;
|
|
[SerializeField] private HostCardRecoverTheLootInterface _RecoverTheLootInterface;
|
|
|
|
[Space]
|
|
|
|
[SerializeField] private HostCardCaptureCarmenExplainerInterface _CaptureCarmenExplainerInterface;
|
|
[SerializeField] private HostCardCaptureCarmenInterface _CaptureCarmenInterface;
|
|
|
|
[Space]
|
|
|
|
[SerializeField] private HostPanelInterface _AdminPanelInterface;
|
|
|
|
[Space]
|
|
|
|
[SerializeField] private TextMeshProUGUI _InteractionText;
|
|
|
|
private VRCPickup _PickupComponent;
|
|
private bool _IsBeingHeld = false;
|
|
private float _StoredJumpImpulse = 0.0f;
|
|
|
|
|
|
void Start()
|
|
{
|
|
_PickupComponent = GetComponent<VRCPickup>();
|
|
|
|
ResetPickupable();
|
|
}
|
|
|
|
|
|
public override void OnPickup()
|
|
{
|
|
_StoredJumpImpulse = Networking.LocalPlayer.GetJumpImpulse();
|
|
Networking.LocalPlayer.SetJumpImpulse(0.0f);
|
|
_IsBeingHeld = true;
|
|
|
|
_InteractionText.gameObject.SetActive(true);
|
|
|
|
base.OnPickup();
|
|
}
|
|
|
|
public override void OnDrop()
|
|
{
|
|
Networking.LocalPlayer.SetJumpImpulse(_StoredJumpImpulse);
|
|
_StoredJumpImpulse = 0.0f;
|
|
_IsBeingHeld = false;
|
|
|
|
_InteractionText.gameObject.SetActive(false);
|
|
|
|
base.OnDrop();
|
|
}
|
|
|
|
public override void InputJump(bool Value, UdonInputEventArgs Args)
|
|
{
|
|
if (Value && _IsBeingHeld)
|
|
{
|
|
_AdminPanelInterface.gameObject.SetActive(!_AdminPanelInterface.gameObject.activeSelf);
|
|
}
|
|
|
|
base.InputJump(Value, Args);
|
|
}
|
|
|
|
|
|
public override void OnPickupUseDown()
|
|
{
|
|
if (_GameManager) _GameManager.HostCardUseButtonDown();
|
|
base.OnPickupUseDown();
|
|
}
|
|
|
|
|
|
public void ResetPickupable()
|
|
{
|
|
_PickupComponent.pickupable = (Networking.GetOwner(gameObject) == Networking.LocalPlayer);
|
|
}
|
|
|
|
|
|
public void SetNextInteractionText(string NextInteractionText)
|
|
{
|
|
if (NextInteractionText != "")
|
|
{
|
|
DisableInteractive = false;
|
|
_InteractionText.text = "Next: " + NextInteractionText;
|
|
}
|
|
else
|
|
{
|
|
_InteractionText.text = "Please wait...";
|
|
}
|
|
}
|
|
|
|
|
|
public void SetGameManager(GameManagerBase Manager)
|
|
{
|
|
_GameManager = Manager;
|
|
}
|
|
|
|
|
|
public HostCardInterfaceBase EnableHostCardDisplay(RoundType Game, RoundSegmentType Question)
|
|
{
|
|
_BetweenRoundsInterface.gameObject.SetActive(false);
|
|
|
|
_MultipleChoiceInterface.gameObject.SetActive(false);
|
|
_LightningRoundInterface.gameObject.SetActive(false);
|
|
_TheChaseInterface.gameObject.SetActive(false);
|
|
_TiebreakerInterface.gameObject.SetActive(false);
|
|
|
|
_RecoverTheLootExplainerInterface.gameObject.SetActive(false);
|
|
_RecoverTheLootInterface.gameObject.SetActive(false);
|
|
|
|
_CaptureCarmenExplainerInterface.gameObject.SetActive(false);
|
|
_CaptureCarmenInterface.gameObject.SetActive(false);
|
|
|
|
switch (Game)
|
|
{
|
|
case RoundType.LocateTheCrook:
|
|
{
|
|
switch (Question)
|
|
{
|
|
case RoundSegmentType.MultipleChoice:
|
|
_MultipleChoiceInterface.gameObject.SetActive(true);
|
|
return _MultipleChoiceInterface;
|
|
case RoundSegmentType.LightningRound:
|
|
_LightningRoundInterface.gameObject.SetActive(true);
|
|
return _LightningRoundInterface;
|
|
case RoundSegmentType.DumpsterDive: break;
|
|
case RoundSegmentType.TheChase:
|
|
_TheChaseInterface.gameObject.SetActive(true);
|
|
return _TheChaseInterface;
|
|
case RoundSegmentType.FinalRound:
|
|
_MultipleChoiceInterface.gameObject.SetActive(true);
|
|
return _MultipleChoiceInterface;
|
|
case RoundSegmentType.Tiebreaker:
|
|
_TiebreakerInterface.gameObject.SetActive(true);
|
|
return _TiebreakerInterface;
|
|
}
|
|
} break;
|
|
case RoundType.RecoverTheLoot:
|
|
{
|
|
switch(Question)
|
|
{
|
|
case RoundSegmentType.RecoverTheLootExplainer:
|
|
_RecoverTheLootExplainerInterface.gameObject.SetActive(true);
|
|
return _RecoverTheLootExplainerInterface;
|
|
case RoundSegmentType.RecoverTheLoot:
|
|
_RecoverTheLootInterface.gameObject.SetActive(true);
|
|
return _RecoverTheLootInterface;
|
|
}
|
|
} break;
|
|
case RoundType.CaptureCarmen:
|
|
{
|
|
switch (Question)
|
|
{
|
|
case RoundSegmentType.CaptureCarmenExplainer:
|
|
_CaptureCarmenExplainerInterface.gameObject.SetActive(true);
|
|
return _CaptureCarmenExplainerInterface;
|
|
case RoundSegmentType.CaptureCarmen:
|
|
_CaptureCarmenInterface.gameObject.SetActive(true);
|
|
return _CaptureCarmenInterface;
|
|
}
|
|
} break;
|
|
default:
|
|
_BetweenRoundsInterface.gameObject.SetActive(true);
|
|
return _BetweenRoundsInterface;
|
|
}
|
|
|
|
_BetweenRoundsInterface.gameObject.SetActive(true);
|
|
return _BetweenRoundsInterface;
|
|
}
|
|
}
|