- Lightning round is essentially complete, with scoring fully implemented.

- Podium name tag can no longer be blocked by score card.
- Choice cards don't display text for anyone but the owner until locked in.
- Minor corrections to the ACME Crimenet logo.
This commit is contained in:
Jamie Greunbaum 2025-06-04 19:28:17 -04:00
parent a27223e2b2
commit de0a866e6d
14 changed files with 91 additions and 134 deletions

View File

@ -901,9 +901,6 @@ GameObject:
- component: {fileID: 7566631391838123814}
- component: {fileID: 415553858303482294}
- component: {fileID: 3808374455794859097}
- component: {fileID: 8534878074050672754}
- component: {fileID: 1851584972264354275}
- component: {fileID: 2783200975854623427}
m_Layer: 0
m_Name: Player Score
m_TagString: Untagged
@ -977,92 +974,6 @@ MonoBehaviour:
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 1
--- !u!114 &8534878074050672754
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5278643753074928947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!114 &1851584972264354275
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5278643753074928947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -1533785930, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
m_Name:
m_EditorClassIdentifier:
AllowFocusView: 1
--- !u!114 &2783200975854623427
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5278643753074928947}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 0}
m_OnClick:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 2656281140157091124}
m_TargetAssemblyTypeName:
m_MethodName: SendCustomEvent
m_Mode: 5
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument: SetPlayerName
m_BoolArgument: 0
m_CallState: 2
--- !u!1 &5471866996204686013
GameObject:
m_ObjectHideFlags: 0

View File

@ -2407,7 +2407,7 @@ BoxCollider:
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.27337545, y: 0.16053903, z: 0.00031471252}
m_Size: {x: 0.2725, y: 0.16, z: 0.0001}
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &379391078
MonoBehaviour:
@ -10538,25 +10538,25 @@ MonoBehaviour:
useAssignedLayers: 0
DynamicPrefabs: []
DynamicMaterials:
- {fileID: 2100000, guid: a793cd1d5fe89c440900d816c7b8c323, type: 2}
- {fileID: 2100000, guid: d1244b908a4cccd4397cc9cad45fe846, type: 2}
- {fileID: 2100000, guid: 9cdc0250a4c9b534fae68ae6aa90bf31, type: 2}
- {fileID: 2100000, guid: faae26a849699fc4b804b74882a344df, type: 2}
- {fileID: 2100000, guid: bd8b723337ae5824fa61f693f76e943f, type: 2}
- {fileID: 2100000, guid: 7eb7cd9bfc12d4c4198d1874ca5a1aa4, type: 2}
- {fileID: 2100000, guid: 79cb8dae66bc60241b5964b24ff1ac7e, type: 2}
- {fileID: 2100000, guid: c4382cc6d54262b46913ae6fe8a3740e, type: 2}
- {fileID: 2100000, guid: 82bace4c334919c4f92e87905c39fdf8, type: 2}
- {fileID: 2100000, guid: d811246c848733b4c8310b4dec5a5fdf, type: 2}
- {fileID: 2100000, guid: f025bfafc9ecec74aa3aab468ef837d7, type: 2}
- {fileID: 2100000, guid: 50e427994e5b0224f966b200c577b78b, type: 2}
- {fileID: 2100000, guid: 5a56ded101f363e46861c8fe1c4f360e, type: 2}
- {fileID: 2100000, guid: 49170bf20870c7c45873b3c1966d86af, type: 2}
- {fileID: 2100000, guid: 95dd396b63c6ad4429ad37eedc63f20c, type: 2}
- {fileID: 2100000, guid: 74aa3dbc50df9464e8d9d11815b389a7, type: 2}
- {fileID: 2100000, guid: 220d5a1f1701e674794a1083cc2f0bac, type: 2}
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 2100000, guid: 50e427994e5b0224f966b200c577b78b, type: 2}
- {fileID: 2100000, guid: f025bfafc9ecec74aa3aab468ef837d7, type: 2}
- {fileID: 2100000, guid: d811246c848733b4c8310b4dec5a5fdf, type: 2}
- {fileID: 2100000, guid: 82bace4c334919c4f92e87905c39fdf8, type: 2}
- {fileID: 2100000, guid: c4382cc6d54262b46913ae6fe8a3740e, type: 2}
- {fileID: 2100000, guid: 7eb7cd9bfc12d4c4198d1874ca5a1aa4, type: 2}
- {fileID: 2100000, guid: bd8b723337ae5824fa61f693f76e943f, type: 2}
- {fileID: 2100000, guid: faae26a849699fc4b804b74882a344df, type: 2}
- {fileID: 2100000, guid: a793cd1d5fe89c440900d816c7b8c323, type: 2}
- {fileID: 2100000, guid: 9cdc0250a4c9b534fae68ae6aa90bf31, type: 2}
- {fileID: 2100000, guid: d1244b908a4cccd4397cc9cad45fe846, type: 2}
- {fileID: 2100000, guid: 9ae5e187a5d8f4e4893d37b62cbf0959, type: 2}
- {fileID: 2100000, guid: ff135f18e14d9a94287191652767f722, type: 2}
- {fileID: 2100000, guid: 220d5a1f1701e674794a1083cc2f0bac, type: 2}
- {fileID: 2100000, guid: 341141e903fac3e4ca54a62259c6d01d, type: 2}
LightMapsNear: []
LightMapsFar: []

Binary file not shown.

Before

Width:  |  Height:  |  Size: 456 KiB

After

Width:  |  Height:  |  Size: 431 KiB

View File

@ -110,14 +110,20 @@ public class ChoiceCardGroup : UdonSharpBehaviour
public void SetChoices(string[] Choices, int[] Indices)
{
_ChoiceCards[Indices[0]].ChoiceNumber = 1;
_ChoiceCardText[Indices[0]].text = Choices[0];
for (int i = 0; i < _ChoiceCards.Length && i < _ChoiceCardText.Length; i++)
{
_ChoiceCards[Indices[i]].ChoiceNumber = (i + 1);
_ChoiceCardText[Indices[i]].text = Choices[i];
}
}
_ChoiceCards[Indices[1]].ChoiceNumber = 2;
_ChoiceCardText[Indices[1]].text = Choices[1];
_ChoiceCards[Indices[2]].ChoiceNumber = 3;
_ChoiceCardText[Indices[2]].text = Choices[2];
[NetworkCallable]
public void MakeChoiceTextVisible()
{
for (int i = 0; i < _ChoiceCards.Length && i < _ChoiceCardText.Length; i++)
{
_ChoiceCardText[i].gameObject.SetActive(true);
}
}
public void LockInChoice()
@ -147,6 +153,7 @@ public class ChoiceCardGroup : UdonSharpBehaviour
Card.ResetPosition();
_ChoiceCardText[i].text = "";
_ChoiceCardText[i].gameObject.SetActive(false);
Card.DisableInteractive = IsInVR;

View File

@ -222,7 +222,10 @@ public class GameManager : UdonSharpBehaviour
for (int i = 0; i < _PlayerPodiums.Length; i++)
{
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)_PlayerPodiums[i], NetworkEventTarget.All, "VerifyResponse", _QuestionCorrectResponse);
NetworkCalling.SendCustomNetworkEvent(
(IUdonEventReceiver)_PlayerPodiums[i],
NetworkEventTarget.All,
"VerifyMultipleChoiceResponse", _QuestionCorrectResponse);
}
EnableInteraction("Next Question");
@ -232,9 +235,18 @@ public class GameManager : UdonSharpBehaviour
private void BeginLightningRound()
{
_LightningRoundQuestionIndex = 0;
_LightningRoundInterface.HeaderUI.text = "Lightning Round | " + _CurrentQuestion["Location"].ToString();
_LightningRoundInterface.QuestionUI.text = "";
for (int i = 0; i < _LightningRoundInterface.ChoiceUI.Length && i < _LightningRoundInterface.ChoiceButtons.Length; i++)
{
_LightningRoundInterface.ChoiceUI[i].text = "";
_LightningRoundInterface.ChoiceButtonImages[i].color = Color.red;
}
EnableHostCardDisplay(QuestionType.LightningRound);
EnableBuzzers();
EnableInteraction("Next Question");
}
@ -265,17 +277,23 @@ public class GameManager : UdonSharpBehaviour
private void LightningRoundCheckAnswer(int Answer)
{
if (_BuzzedInPlayer > 0 && _QuestionCorrectResponse == Answer)
if (_QuestionCorrectResponse == Answer)
{
for (int i = 0; i < _LightningRoundInterface.ChoiceButtons.Length; i++)
{
_LightningRoundInterface.ChoiceButtons[i].interactable = false;
}
_PlayerPodiums[_BuzzedInPlayer - 1].IncreaseScoreBy5();
int PodiumIndex = _BuzzedInPlayer - 1;
if (PodiumIndex >= 0 && PodiumIndex < _PlayerPodiums.Length)
{
NetworkCalling.SendCustomNetworkEvent(
(IUdonEventReceiver)_PlayerPodiums[PodiumIndex],
NetworkEventTarget.All,
"IncreaseScoreBy5");
}
EndBuzzInPeriod();
EnableInteraction("Next Question");
}
else
@ -382,12 +400,16 @@ public class GameManager : UdonSharpBehaviour
public void WaitForBuzzInsWithoutLastPlayer() {
_BuzzInAllowed = true;
NetworkCalling.SendCustomNetworkEvent(
(IUdonEventReceiver)_PlayerPodiums[_BuzzedInPlayer - 1],
NetworkEventTarget.All,
"EnableBuzzInEffect", false);
_BuzzedInPlayer = -1;
RequestSerialization();
int PodiumIndex = _BuzzedInPlayer - 1;
if (PodiumIndex >= 0 && PodiumIndex < _PlayerPodiums.Length)
{
NetworkCalling.SendCustomNetworkEvent(
(IUdonEventReceiver)_PlayerPodiums[_BuzzedInPlayer - 1],
NetworkEventTarget.All,
"EnableBuzzInEffect", false);
_BuzzedInPlayer = -1;
RequestSerialization();
}
}
[NetworkCallable]

View File

@ -1,10 +1,10 @@

using UdonSharp;
using UnityEngine;
using TMPro;
using VRC.SDKBase;
using VRC.SDK3.UdonNetworkCalling;
using TMPro;
using UnityEngine;
using VRC.SDK3.Components;
using VRC.Udon.Common.Interfaces;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class PlayerPodium : UdonSharpBehaviour
@ -35,22 +35,31 @@ public class PlayerPodium : UdonSharpBehaviour
public void SetPlayerName()
{
Debug.LogWarning("Player name is being set here");
if (_PlayerID != -1) { return; }
if (_PlayerID != -1)
{
return;
}
Networking.SetOwner(Networking.LocalPlayer, gameObject);
Networking.SetOwner(Networking.LocalPlayer, _ChoiceCards.gameObject);
Networking.SetOwner(Networking.LocalPlayer, _Buzzer.gameObject);
PlayerName = Networking.LocalPlayer.displayName;
_PlayerID = Networking.LocalPlayer.playerId;
RequestSerialization();
}
public int GetPlayerID() { return _PlayerID; }
[NetworkCallable]
public void DecreaseScoreBy5()
{
PlayerScore -= 5;
}
[NetworkCallable]
public void IncreaseScoreBy5()
{
PlayerScore += 5;
@ -68,6 +77,10 @@ public class PlayerPodium : UdonSharpBehaviour
{
_ChoiceCards.gameObject.SetActive(Enable);
_ChoiceCards.ResetCards();
NetworkCalling.SendCustomNetworkEvent(
(IUdonEventReceiver)_ChoiceCards,
NetworkEventTarget.Owner,
"MakeChoiceTextVisible");
}
[NetworkCallable]
@ -80,10 +93,14 @@ public class PlayerPodium : UdonSharpBehaviour
public void LockInChoice()
{
_ChoiceCards.LockInChoice();
NetworkCalling.SendCustomNetworkEvent(
(IUdonEventReceiver)_ChoiceCards,
NetworkEventTarget.All,
"MakeChoiceTextVisible");
}
[NetworkCallable]
public void VerifyResponse(int CorrectResponse)
public void VerifyMultipleChoiceResponse(int CorrectResponse)
{
if (_ChoiceCards.GetSelectedChoice() == CorrectResponse)
{

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: BoneFollower
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: ccbda9bf23e2f714c9226283c77a92e5,
serializedUdonProgramAsset: {fileID: 11400000, guid: 52ecc8a73071e8e40928c3609699fcf4,
type: 2}
udonAssembly:
assemblyError:

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: InteractToggle
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: 405e38d3dfb2f514daeed0e28fbb4864,
serializedUdonProgramAsset: {fileID: 11400000, guid: 873dfce61b1514e429c92e0d2fded7de,
type: 2}
udonAssembly:
assemblyError:

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: PlayerModSetter
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: f938e6c4ff027a74da405a1f9353fd2b,
serializedUdonProgramAsset: {fileID: 11400000, guid: e81558796a212ab4d88e305e2010f24b,
type: 2}
udonAssembly:
assemblyError:

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: GlobalToggleObject
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: c49c9265a3ef24642a6a4465d0a78872,
serializedUdonProgramAsset: {fileID: 11400000, guid: 2fe8ced6184000f49bca526cd2c5891c,
type: 2}
udonAssembly:
assemblyError:

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: MasterToggleObject
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: 04024a76ab1924042ba521e11cb76d91,
serializedUdonProgramAsset: {fileID: 11400000, guid: a2d01d9f36ac6df49831be249e48ecc4,
type: 2}
udonAssembly:
assemblyError:

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: TrackingDataFollower
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: 17f8fbbe6cc186d4f8dbb057b01a4ec2,
serializedUdonProgramAsset: {fileID: 11400000, guid: 1b89d4552983c0448a7389decec3b555,
type: 2}
udonAssembly:
assemblyError:

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: WorldAudioSettings
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: 128d924a3066b7546b2d1c73e61006ab,
serializedUdonProgramAsset: {fileID: 11400000, guid: 994b559b0f158b4499f8937980ed8694,
type: 2}
udonAssembly:
assemblyError:

Binary file not shown.