- Finally added a thunder sound before the Lightning Round.

- Made many improvements to the host interface so things can run more smoothly.
This commit is contained in:
2025-08-14 21:37:46 -04:00
parent 27da1f5bf4
commit 799e5a8955
21 changed files with 579 additions and 141 deletions
+108 -53
View File
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 40
Data: 41
- Name:
Entry: 7
Data:
@@ -1610,13 +1610,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_Contessa
Data: _Thunder
- Name: $v
Entry: 7
Data: 92|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_Contessa
Data: _Thunder
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -1640,28 +1640,10 @@ MonoBehaviour:
Data: 93|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 3
Data: 1
- Name:
Entry: 7
Data: 94|UnityEngine.SpaceAttribute, UnityEngine.CoreModule
- Name: height
Entry: 4
Data: 8
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 95|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- Name: header
Entry: 1
Data: Crook Themes
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 96|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 94|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -1682,13 +1664,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_DoubleTrouble
Data: _CrookTheme_Contessa
- Name: $v
Entry: 7
Data: 97|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 95|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_DoubleTrouble
Data: _CrookTheme_Contessa
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -1709,10 +1691,28 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 98|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 96|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
Data: 3
- Name:
Entry: 7
Data: 97|UnityEngine.SpaceAttribute, UnityEngine.CoreModule
- Name: height
Entry: 4
Data: 8
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 98|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- Name: header
Entry: 1
Data: Crook Themes
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 99|UnityEngine.SerializeField, UnityEngine.CoreModule
@@ -1736,13 +1736,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_EarthaBrute
Data: _CrookTheme_DoubleTrouble
- Name: $v
Entry: 7
Data: 100|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_EarthaBrute
Data: _CrookTheme_DoubleTrouble
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -1791,13 +1791,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_Kneemoi
Data: _CrookTheme_EarthaBrute
- Name: $v
Entry: 7
Data: 103|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_Kneemoi
Data: _CrookTheme_EarthaBrute
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -1846,13 +1846,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_PattyLarceny
Data: _CrookTheme_Kneemoi
- Name: $v
Entry: 7
Data: 106|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_PattyLarceny
Data: _CrookTheme_Kneemoi
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -1901,13 +1901,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_Robocrook
Data: _CrookTheme_PattyLarceny
- Name: $v
Entry: 7
Data: 109|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_Robocrook
Data: _CrookTheme_PattyLarceny
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -1956,13 +1956,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_SarahNade
Data: _CrookTheme_Robocrook
- Name: $v
Entry: 7
Data: 112|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_SarahNade
Data: _CrookTheme_Robocrook
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -2011,13 +2011,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_TopGrunge
Data: _CrookTheme_SarahNade
- Name: $v
Entry: 7
Data: 115|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_TopGrunge
Data: _CrookTheme_SarahNade
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -2066,13 +2066,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_VicTheSlick
Data: _CrookTheme_TopGrunge
- Name: $v
Entry: 7
Data: 118|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_VicTheSlick
Data: _CrookTheme_TopGrunge
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -2121,13 +2121,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookTheme_WonderRat
Data: _CrookTheme_VicTheSlick
- Name: $v
Entry: 7
Data: 121|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookTheme_WonderRat
Data: _CrookTheme_VicTheSlick
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -2176,13 +2176,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CrookJailCall_Patty_Africa
Data: _CrookTheme_WonderRat
- Name: $v
Entry: 7
Data: 124|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookJailCall_Patty_Africa
Data: _CrookTheme_WonderRat
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
@@ -2205,12 +2205,67 @@ MonoBehaviour:
Entry: 7
Data: 125|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 126|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: _CrookJailCall_Patty_Africa
- Name: $v
Entry: 7
Data: 127|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookJailCall_Patty_Africa
- Name: <UserType>k__BackingField
Entry: 9
Data: 10
- Name: <SystemType>k__BackingField
Entry: 9
Data: 10
- 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: 128|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data: 126|UnityEngine.SpaceAttribute, UnityEngine.CoreModule
Data: 129|UnityEngine.SpaceAttribute, UnityEngine.CoreModule
- Name: height
Entry: 4
Data: 8
@@ -2219,7 +2274,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 7
Data: 127|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
Data: 130|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- Name: header
Entry: 1
Data: Crook Jail Calls
@@ -2228,7 +2283,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 7
Data: 128|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 131|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -2252,13 +2307,13 @@ MonoBehaviour:
Data: _FadeOutMusic
- Name: $v
Entry: 7
Data: 129|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 132|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _FadeOutMusic
- Name: <UserType>k__BackingField
Entry: 7
Data: 130|System.RuntimeType, mscorlib
Data: 133|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Boolean, mscorlib
@@ -2267,7 +2322,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 130
Data: 133
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -2282,7 +2337,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 131|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
Data: 134|System.Collections.Generic.List`1[[System.Attribute, mscorlib]],
mscorlib
- Name:
Entry: 12
+4 -1
View File
@@ -44,7 +44,8 @@ public enum SFXEventType
LeverCartoon,
Boing,
Printer
Printer,
Thunder
}
@@ -90,6 +91,7 @@ public class AudioManager : UdonSharpBehaviour
[SerializeField] private AudioClip _LeverCartoon = null;
[SerializeField] private AudioClip _Boing = null;
[SerializeField] private AudioClip _Printer = null;
[SerializeField] private AudioClip _Thunder = null;
[Space][Header("Crook Themes")]
[SerializeField] private AudioClip _CrookTheme_Contessa = null;
@@ -237,6 +239,7 @@ public class AudioManager : UdonSharpBehaviour
case SFXEventType.LeverCartoon: _SFXPlayer.clip = _LeverCartoon; break;
case SFXEventType.Boing: _SFXPlayer.clip = _Boing; break;
case SFXEventType.Printer: _SFXPlayer.clip = _Printer; break;
case SFXEventType.Thunder: _SFXPlayer.clip = _Thunder; break;
default: _SFXPlayer.clip = null; break;
}
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 17
Data: 18
- Name:
Entry: 7
Data:
@@ -806,13 +806,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _StolenLoot
Data: _CaseIntroVideoTranscript
- Name: $v
Entry: 7
Data: 50|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StolenLoot
Data: _CaseIntroVideoTranscript
- Name: <UserType>k__BackingField
Entry: 9
Data: 44
@@ -860,16 +860,70 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _AccusedCrook
Data: _StolenLoot
- Name: $v
Entry: 7
Data: 53|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StolenLoot
- Name: <UserType>k__BackingField
Entry: 9
Data: 44
- Name: <SystemType>k__BackingField
Entry: 9
Data: 44
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 54|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 55|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- 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: _AccusedCrook
- Name: $v
Entry: 7
Data: 56|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _AccusedCrook
- Name: <UserType>k__BackingField
Entry: 7
Data: 54|System.RuntimeType, mscorlib
Data: 57|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: AccusedCrook, Assembly-CSharp
@@ -878,7 +932,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 7
Data: 55|System.RuntimeType, mscorlib
Data: 58|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
@@ -899,13 +953,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 56|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 59|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 57|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 60|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -929,13 +983,13 @@ MonoBehaviour:
Data: _CurrentWinningPlayers
- Name: $v
Entry: 7
Data: 58|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 61|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CurrentWinningPlayers
- Name: <UserType>k__BackingField
Entry: 7
Data: 59|System.RuntimeType, mscorlib
Data: 62|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String[], mscorlib
@@ -944,7 +998,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 59
Data: 62
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -959,13 +1013,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 60|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 63|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 61|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 64|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -989,13 +1043,13 @@ MonoBehaviour:
Data: _CaseFileDictionary
- Name: $v
Entry: 7
Data: 62|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseFileDictionary
- Name: <UserType>k__BackingField
Entry: 7
Data: 63|System.RuntimeType, mscorlib
Data: 66|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
@@ -1004,7 +1058,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 63
Data: 66
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1019,7 +1073,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 64|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 67|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
+15 -5
View File
@@ -45,6 +45,7 @@ public class CaseManager : UdonSharpBehaviour
[UdonSynced] private string _CaseTitle = "";
[UdonSynced] private string _CaseDescription = "";
[UdonSynced] private string _CaseIntroVideoTranscript = "";
[UdonSynced] private string _StolenLoot = "";
[UdonSynced] private AccusedCrook _AccusedCrook = AccusedCrook.INDEX_MAX;
@@ -74,12 +75,13 @@ public class CaseManager : UdonSharpBehaviour
{
_CaseFileDictionary = JSONResult.DataDictionary;
if (_CaseFileDictionary.ContainsKey("Case Title") && _CaseFileDictionary.ContainsKey("Case Description") &&
if (_CaseFileDictionary.ContainsKey("Case Title") && _CaseFileDictionary.ContainsKey("Case Description") && _CaseFileDictionary.ContainsKey("Intro Video Transcript") &&
_CaseFileDictionary.ContainsKey("Stolen Loot") && _CaseFileDictionary.ContainsKey("Accused Crook"))
{
_CaseTitle = _CaseFileDictionary["Case Title"].ToString();
_CaseDescription = _CaseFileDictionary["Case Description"].ToString();
_StolenLoot = _CaseFileDictionary["Stolen Loot"].ToString();
_CaseTitle = _CaseFileDictionary["Case Title"].String;
_CaseDescription = _CaseFileDictionary["Case Description"].String;
_CaseIntroVideoTranscript = _CaseFileDictionary["Intro Video Transcript"].String;
_StolenLoot = _CaseFileDictionary["Stolen Loot"].String;
_AccusedCrook = (AccusedCrook)(int)_CaseFileDictionary["Accused Crook"].Number;
if (_CaseFileDictionary.ContainsKey("Round 1") && _CaseFileDictionary.ContainsKey("Round 2") && _CaseFileDictionary.ContainsKey("Round 3"))
@@ -131,10 +133,14 @@ public class CaseManager : UdonSharpBehaviour
ErrorString = "Ensure the first element is a dictionary";
}
}
else
{
ErrorString = "JSON failed to parse.";
}
if (ErrorString != "")
{
Debug.LogError("Malformed case file. " + ErrorString);
Debug.LogError("[CaseManager] Malformed case file. " + ErrorString);
}
RequestSerialization();
@@ -174,6 +180,10 @@ public class CaseManager : UdonSharpBehaviour
{
return _CaseDescription;
}
public string GetIntroVideoTranscript()
{
return _CaseIntroVideoTranscript;
}
public string GetLoot()
{
return _StolenLoot;
@@ -89,12 +89,14 @@ public class GameManagerRound1 : GameManagerBase
if (_QuestionsList.Count == 0)
{
Interface.HeaderUI.text =
Interface.HeaderUI.text = "Error loading case file";
Interface.CommentUI.text =
"Unable to find any questions. Ensure the root array elements are all objects.";
return;
}
Interface.HeaderUI.text = "Case has been loaded.";
Interface.HeaderUI.text = _CaseManager.GetCaseTitle() + " has been loaded.";
Interface.CommentUI.text = _CaseManager.GetCaseDescription();
_GameHasBegun = false;
EnableInteraction("Start Game");
@@ -108,6 +110,7 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Playing intro video...";
Interface.CommentUI.text = _CaseManager.GetIntroVideoTranscript();
_VideoPlayer.VideoURL = _CaseManager.GetIntroVideo();
for (int i = 0; i < _PlayerPodiums.Length; i++)
@@ -156,13 +159,11 @@ public class GameManagerRound1 : GameManagerBase
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All,
"PlaySFXAtPitch", SFXEventType.Ding, AudioManager.D6);
ShowBetweenQuestionsInterface();
DisableChoiceCards();
DisableRiskCards();
DisableBuzzers();
EnableInteraction("Show First Question");
ShowBetweenQuestionsInterface();
_GameHasBegun = true;
}
@@ -182,6 +183,7 @@ public class GameManagerRound1 : GameManagerBase
{
Interface = (HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "No special presentation available. Continuing on...";
Interface.CommentUI.text = "";
EnableInteraction("Reveal Question");
return;
@@ -204,7 +206,14 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Playing video...";
if (Presentation.ContainsKey("Video Transcripts"))
{
Interface.CommentUI.text = Presentation["Video Transcripts"].DataList[_QuestionSubstage].String;
}
else
{
Interface.CommentUI.text = "";
}
_VideoPlayer.VideoURL = _CaseManager.GetVideo((int)Videos[_QuestionSubstage].Number);
_QuestionSubstage++;
@@ -236,10 +245,10 @@ public class GameManagerRound1 : GameManagerBase
string Header = "Error Reading Data";
string Clue = "just wing it i guess idk";
if (Presentation.ContainsKey("Video Artist") && Presentation.ContainsKey("Clue Description"))
if (Presentation.ContainsKey("Video Artist") && Presentation.ContainsKey("Note"))
{
Header = Presentation["Video Artist"].String;
Clue = Presentation["Clue Description"].String;
Clue = Presentation["Note"].String;
}
_VideoMusicClueSkateboard.SendCustomNetworkEvent(NetworkEventTarget.All,
"SetCardTexts", Header, Clue);
@@ -255,6 +264,14 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Playing video...";
if (Presentation.ContainsKey("Video Artist"))
{
Interface.CommentUI.text = "Artist: " + Presentation["Video Artist"].String;
}
else
{
Interface.CommentUI.text = "";
}
DataList Videos = Presentation["Videos"].DataList;
_VideoPlayer.VideoURL = _CaseManager.GetVideo((int)Videos[0].Number);
@@ -281,13 +298,14 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Check the computer for clues that need translating.";
Interface.CommentUI.text = "";
string UntranslatedText = "";
string TranslatedText = "";
if (Presentation.ContainsKey("Clue Description") && Presentation.ContainsKey("Original Text Placeholder"))
if (Presentation.ContainsKey("Untranslated Text Placeholder") && Presentation.ContainsKey("Translated Text"))
{
UntranslatedText = Presentation["Original Text Placeholder"].String;
TranslatedText = Presentation["Clue Description"].String;
UntranslatedText = Presentation["Untranslated Text Placeholder"].String;
TranslatedText = Presentation["Translated Text"].String;
}
_ACMECrimenetComputer.SendCustomNetworkEvent(NetworkEventTarget.All,
@@ -484,6 +502,8 @@ public class GameManagerRound1 : GameManagerBase
private void BeginLightningRound()
{
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "PlaySFX", SFXEventType.Thunder);
HostCardLightningRoundInterface Interface =
(HostCardLightningRoundInterface)GetHostCardInterface(RoundSegmentType.LightningRound);
@@ -492,7 +512,7 @@ public class GameManagerRound1 : GameManagerBase
{
Interface.ChoiceUI[i].text = "";
}
Interface.QuestionUI.text = "All of these questions are worth 5 Acme Crimebucks. These questions are all about [[CROOK]]'s most recent whereabouts, which is " + _CurrentQuestion["Location"].ToString() + ". Hands on your buzzers. Here's the first question...";
Interface.QuestionUI.text = "All of these questions are worth 5 Acme Crimebucks. These questions are all about " + _CaseManager.GetCrookName() + "'s most recent whereabouts, which is " + _CurrentQuestion["Location"].ToString() + ". Hands on your buzzers. Here's the first question...";
EnableBuzzers();
@@ -602,14 +622,14 @@ public class GameManagerRound1 : GameManagerBase
private void PlayTheChaseMusic()
{
HostCardTheChaseInterface Interface =
(HostCardTheChaseInterface)GetHostCardInterface(RoundSegmentType.TheChase);
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All,
"PlayMusic", MusicEventType.TheChase);
Interface.HeaderUI.text = RoundSegmentTypeToString(RoundSegmentType.TheChase);
Interface.ClueUI.text = "All of these questions are worth 5 Acme Crimebucks. Hands on your buzzers. Listen carefully. Here we go.";
Interface.CommentUI.text = "All of these questions are worth 5 Acme Crimebucks. Hands on your buzzers. Listen carefully. Here we go.";
EnableBuzzers();
@@ -635,7 +655,7 @@ public class GameManagerRound1 : GameManagerBase
HostCardTheChaseInterface Interface =
(HostCardTheChaseInterface)GetHostCardInterface(RoundSegmentType.TheChase);
Interface.HeaderUI.text = "The Chase" + (_CurrentQuestion.ContainsKey("Location") ? (" | " + _CurrentQuestion["Location"].String) : "");
Interface.ClueUI.text = CurrentClue["Clue"].ToString();
DataList Choices = CurrentClue["Choices"].DataList;
@@ -713,12 +733,18 @@ public class GameManagerRound1 : GameManagerBase
}
private void BeginFinalRound()
private void IntroduceFinalRound()
{
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Introduce the round here.";
Interface.HeaderUI.text = "The Final Round";
Interface.CommentUI.text =
"- Now it's time for the final clue of this round, which means you have to decide how many of your ACME Crimebucks you want to risk.\n" +
"- If you're right, we'll add that amount to your score.\n" +
"- If you're not right, we'll subtract that amount from your score.\n" +
"- You can risk 0, 10, 20, 30, 40, or 50 ACME Crimebucks.\n\n" +
"- Choose how much to risk by placing your wager to the other side of your podium.";
LoadMapsIntoQueue();
@@ -734,7 +760,12 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Introduce the round here.";
Interface.HeaderUI.text = "Show The Map Preview";
Interface.CommentUI.text =
"- Here's a portion of the world where we think " + _CaseManager.GetCrookName() + " is headed with " + _CaseManager.GetLoot() + ".\n" +
"- If you think you know a lot about this part of the world, you may want to risk a lot.\n" +
"- If you don't know very much about it, though, you may not want to risk quite so much.\n\n" +
"So, take a look at the map, and think about it.";
EnableInteraction("Think About It");
}
@@ -744,6 +775,7 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Think about it...";
Interface.CommentUI.text = "";
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All,
"PlayMusic", MusicEventType.ThinkAboutIt);
@@ -780,7 +812,9 @@ public class GameManagerRound1 : GameManagerBase
_PlayerPodiums[i].SendCustomNetworkEvent(NetworkEventTarget.All, "LockInRisk");
}
EnableInteraction("Present Clues");
ShowBetweenQuestionsInterface();
CreateClueSpecificHostInteractionText(_CurrentQuestion["Presentation"].DataDictionary);
}
private void FinalRoundRevealChoices()
@@ -921,6 +955,9 @@ public class GameManagerRound1 : GameManagerBase
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Player: " + _PlayerPodiums[PlayerNumber - 1].PlayerName;
Interface.CommentUI.text =
"- Before you show us your answer, how much did you risk?\n" +
"- What is your answer?";
_PlayerPodiums[PlayerNumber - 1].EnableBuzzInEffect(true);
EnableInteraction("Assign Points");
@@ -975,11 +1012,15 @@ public class GameManagerRound1 : GameManagerBase
{
if (SortedPlayerScores[0] == SortedPlayerScores[1])
{
Interface.HeaderUI.text = "We have a three-way tie. We'll start with a tiebreaker between " + Number2.displayName + " and " + Number3.displayName + ".";
Interface.HeaderUI.text = "We have a three-way tie.";
Interface.CommentUI.text = "We'll start with a tiebreaker between " + Number2.displayName + " and " + Number3.displayName + ".";
}
else
{
Interface.HeaderUI.text = Number1.displayName + " is in first place and will be moving on to the next round. There is a tie for second place between " + Number2.displayName + " and " + Number3.displayName + ", so we will move on to a tiebreaker.";
Interface.HeaderUI.text = Number1.displayName + " is in first place";
Interface.CommentUI.text =
"- " + Number1.displayName + " will be moving on to the next round.\n" +
"- There is a tie for second place between " + Number2.displayName + " and " + Number3.displayName + ", so we will move on to a tiebreaker.";
}
TiebreakerNeeded = true;
PrepareTiebreakerRound(Number2Podium.PlayerNumber, Number3Podium.PlayerNumber);
@@ -1046,9 +1087,18 @@ public class GameManagerRound1 : GameManagerBase
private void PrepareNextQuestion()
{
InitialiseQuestion();
ShowBetweenQuestionsInterface();
EnableInteraction("Show Next Question");
if (_CurrentQuestionType == RoundSegmentType.FinalRound)
{
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "The Final Round";
Interface.CommentUI.text = "";
AdvanceQuestion();
}
else
{
ShowBetweenQuestionsInterface();
}
}
private void PrepareEndGame()
{
@@ -1063,7 +1113,8 @@ public class GameManagerRound1 : GameManagerBase
{
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Round is over. Move to the loot recovery area.";
Interface.HeaderUI.text = "Round is over.";
Interface.CommentUI.text = "Move to the loot recovery area.";
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All,
"PlayMusicLoop", MusicEventType.CapitalLoop);
@@ -1075,7 +1126,7 @@ public class GameManagerRound1 : GameManagerBase
_CaseManager.ContinueToRound2();
EnableInteraction("End Game");
EnableInteraction("Advance To Round 2");
}
}
@@ -1085,6 +1136,7 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Preparing tiebreaker...";
Interface.CommentUI.text = "";
VRCStringDownloader.LoadUrl(_TiebreakerData, (IUdonEventReceiver)this);
}
@@ -1423,7 +1475,7 @@ public class GameManagerRound1 : GameManagerBase
{
switch (_QuestionStage)
{
case 1: BeginFinalRound(); break;
case 1: IntroduceFinalRound(); break;
case 2: FinalRoundShowMapPreview(); break;
case 3: FinalRoundPlayThinkingMusic(); break;
case 4: InitialiseCluePresentation(); break;
@@ -1478,11 +1530,27 @@ public class GameManagerRound1 : GameManagerBase
return _HostCard.EnableHostCardDisplay(RoundType.LocateTheCrook, Question);
}
private void CreateClueSpecificHostInteractionText(DataDictionary Presentation)
{
switch ((PresentationMedium)(int)Presentation["Medium"].Number)
{
case PresentationMedium.VideoClue:
case PresentationMedium.VideoMusicClue:
EnableInteraction("Play Video"); break;
case PresentationMedium.ACMECrimenetComputer:
EnableInteraction("ACME Crimenet Computer"); break;
default:
EnableInteraction("Present Next Clue"); break;
}
}
private HostCardBetweenRoundsInterface ShowBetweenQuestionsInterface()
{
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.CommentUI.text = "";
string PresentationMediumString = "";
if (_CurrentQuestion.ContainsKey("Presentation"))
{
@@ -1496,12 +1564,31 @@ public class GameManagerRound1 : GameManagerBase
{
PresentationMediumString = PresentationMediumToString((PresentationMedium)(int)Presentation["Medium"].Number);
}
if (_CurrentQuestionType == RoundSegmentType.FinalRound)
{
EnableInteraction("Introduce Final Round");
}
else
{
CreateClueSpecificHostInteractionText(Presentation);
}
if (Presentation.ContainsKey("Clue Description"))
{
Interface.CommentUI.text = Presentation["Clue Description"].String;
}
}
else
{
PresentationMediumString = RoundSegmentTypeToString(_CurrentQuestionType);
EnableInteraction("Begin " + PresentationMediumString);
if (_CurrentQuestion.ContainsKey("Clue Description"))
{
Interface.CommentUI.text = _CurrentQuestion["Clue Description"].String;
}
}
Interface.HeaderUI.text = "Upcoming Question: " + PresentationMediumString;
return Interface;
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 4
Data: 5
- Name:
Entry: 7
Data:
@@ -261,6 +261,54 @@ MonoBehaviour:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: CommentUI
- Name: $v
Entry: 7
Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: CommentUI
- Name: <UserType>k__BackingField
Entry: 9
Data: 3
- Name: <SystemType>k__BackingField
Entry: 9
Data: 3
- 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: 15|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
@@ -1,4 +1,5 @@
using TMPro;
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
@@ -8,4 +9,5 @@ using VRC.Udon;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class HostCardBetweenRoundsInterface : HostCardInterfaceBase
{
public TextMeshProUGUI CommentUI;
}
@@ -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:
@@ -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:
@@ -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:
@@ -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:
@@ -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:
@@ -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:
@@ -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: