- Permissions panel is fully functional.

- Host card can only be picked up by players with "Host" permission.
- Podiums no longer reset on case load.
- Auxiliary screens now disappear during answer reveal in final round.
- Risk card placement area no longer blocks UI interaction on desktop mode.
- Video player in round 2 now changes ownership and syncs correctly.
This commit is contained in:
2025-09-08 00:26:03 -04:00
parent 168d814ad9
commit b028a0a6d4
11 changed files with 212 additions and 55 deletions
+13 -12
View File
@@ -91,6 +91,19 @@ public class CaseManager : UdonSharpBehaviour
}
public void HostEnabled()
{
_CaseManagerList.gameObject.SetActive(true);
_HostCard.EnablePickup(true);
}
public void HostDisabled()
{
_CaseManagerList.gameObject.SetActive(false);
_HostCard.EnablePickup(false);
}
public void LoadCaseFile(CaseManagerListEntry CaseFile)
{
Networking.SetOwner(Networking.LocalPlayer, gameObject);
@@ -208,11 +221,7 @@ public class CaseManager : UdonSharpBehaviour
public string ContinueToRound1()
{
_Round3Manager.DeinitialiseGameMode();
_Round2Manager.DeinitialiseGameMode();
_Round1Manager.DeinitialiseGameMode();
_HostCard.SetGameManager(_Round1Manager);
_Round1Manager.InitialiseGameMode();
return "";
@@ -220,12 +229,8 @@ public class CaseManager : UdonSharpBehaviour
public string ContinueToRound2()
{
_Round3Manager.DeinitialiseGameMode();
_Round2Manager.DeinitialiseGameMode();
_Round1Manager.DeinitialiseGameMode();
_HostCard.SetGameManager(_Round2Manager);
_Round2Manager.InitialiseGameMode();
return "";
@@ -233,12 +238,8 @@ public class CaseManager : UdonSharpBehaviour
public string ContinueToRound3()
{
_Round3Manager.DeinitialiseGameMode();
_Round2Manager.DeinitialiseGameMode();
_Round1Manager.DeinitialiseGameMode();
_HostCard.SetGameManager(_Round3Manager);
_Round3Manager.InitialiseGameMode();
return "";
@@ -960,6 +960,7 @@ public class GameManagerRound1 : GameManagerBase
for (int i = 0; i < _PlayerPodiums.Length; i++)
{
_PlayerPodiums[i].SendCustomNetworkEvent(NetworkEventTarget.All, "LockInChoice");
_PlayerPodiums[i].SendCustomNetworkEvent(NetworkEventTarget.Owner, "ShowAuxiliaryMapScreen", false);
}
HostCardMultipleChoiceInterface Interface =
@@ -85,6 +85,7 @@ public class GameManagerRound2 : GameManagerBase
Networking.SetOwner(NewOwner, _ArrivalDisplay.gameObject);
Networking.SetOwner(NewOwner, _LocationBoard.gameObject);
Networking.SetOwner(NewOwner, _JailChain.gameObject);
Networking.SetOwner(NewOwner, _JailPlayer.gameObject);
Networking.SetOwner(NewOwner, _JailPhone.gameObject);
base.SetOwnershipOfObjects(NewOwner);
@@ -49,8 +49,6 @@ public class HostCardManager : UdonSharpBehaviour
void Start()
{
_PickupComponent = GetComponent<VRCPickup>();
ResetPickupable();
}
@@ -94,9 +92,9 @@ public class HostCardManager : UdonSharpBehaviour
}
public void ResetPickupable()
public void EnablePickup(bool Enable)
{
_PickupComponent.pickupable = (Networking.GetOwner(gameObject) == Networking.LocalPlayer);
_PickupComponent.pickupable = Enable;
}
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 8
Data: 10
- Name:
Entry: 7
Data:
@@ -458,19 +458,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: CameraConsole
Data: _AdminEventListeners
- Name: $v
Entry: 7
Data: 28|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: CameraConsole
Data: _AdminEventListeners
- Name: <UserType>k__BackingField
Entry: 7
Data: 29|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: CameraSystem.CameraSystem_Console, Assembly-CSharp
Data: VRC.Udon.UdonBehaviour[], VRC.Udon
- Name:
Entry: 8
Data:
@@ -479,7 +479,7 @@ MonoBehaviour:
Data: 30|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.Udon.UdonBehaviour, VRC.Udon
Data: UnityEngine.Component[], UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -498,12 +498,129 @@ MonoBehaviour:
- Name: _fieldAttributes
Entry: 7
Data: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 2
- Name:
Entry: 7
Data: 32|UnityEngine.SpaceAttribute, UnityEngine.CoreModule
- Name: height
Entry: 4
Data: 8
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 33|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _HostEventListeners
- Name: $v
Entry: 7
Data: 34|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _HostEventListeners
- Name: <UserType>k__BackingField
Entry: 9
Data: 29
- Name: <SystemType>k__BackingField
Entry: 9
Data: 30
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 35|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 32|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 36|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _CameraEventListeners
- Name: $v
Entry: 7
Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CameraEventListeners
- Name: <UserType>k__BackingField
Entry: 9
Data: 29
- Name: <SystemType>k__BackingField
Entry: 9
Data: 30
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 38|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 39|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -4,6 +4,7 @@ using UdonSharp;
using UnityEngine;
using VRC.SDK3.Data;
using VRC.SDKBase;
using VRC.Udon;
using VRC.Udon.Common;
@@ -19,7 +20,11 @@ public class PermissionsPanel : UdonSharpBehaviour
[SerializeField] private RectTransform _ListContainer;
[SerializeField] private GameObject _PlayerItemTemplate;
[SerializeField] private CameraSystem_Console CameraConsole;
[Space]
[SerializeField] private UdonBehaviour[] _AdminEventListeners = new UdonBehaviour[0];
[SerializeField] private UdonBehaviour[] _HostEventListeners = new UdonBehaviour[0];
[SerializeField] private UdonBehaviour[] _CameraEventListeners = new UdonBehaviour[0];
private const int MAX_PLAYERS_IN_LIST = 100;
@@ -231,6 +236,18 @@ public class PermissionsPanel : UdonSharpBehaviour
PlayerListItem.HostToggle.interactable = true;
PlayerListItem.CameraToggle.interactable = true;
}
for (int i = 0; i < _AdminEventListeners.Length; i++)
{
_AdminEventListeners[i].SendCustomEvent("AdminEnabled");
}
}
else
{
for (int i = 0; i < _AdminEventListeners.Length; i++)
{
_AdminEventListeners[i].SendCustomEvent("AdminDisabled");
}
}
if (IsPlayerHost(Networking.LocalPlayer))
@@ -240,6 +257,18 @@ public class PermissionsPanel : UdonSharpBehaviour
PermissionsPanelPlayerEntry PlayerListItem = _ListContainer.GetChild(i).GetComponent<PermissionsPanelPlayerEntry>();
PlayerListItem.HostToggle.interactable = true;
}
for (int i = 0; i < _HostEventListeners.Length; i++)
{
_HostEventListeners[i].SendCustomEvent("HostEnabled");
}
}
else
{
for (int i = 0; i < _HostEventListeners.Length; i++)
{
_HostEventListeners[i].SendCustomEvent("HostDisabled");
}
}
if (IsPlayerCameraOperator(Networking.LocalPlayer))
@@ -250,11 +279,17 @@ public class PermissionsPanel : UdonSharpBehaviour
PlayerListItem.CameraToggle.interactable = true;
}
CameraConsole.Authorize();
for (int i = 0; i < _CameraEventListeners.Length; i++)
{
_CameraEventListeners[i].SendCustomEvent("CameraEnabled");
}
}
else
{
CameraConsole.Deauthorize();
for (int i = 0; i < _CameraEventListeners.Length; i++)
{
_CameraEventListeners[i].SendCustomEvent("CameraDisabled");
}
}
}
}