- 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
@@ -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;