- Implemented the Video Music Clue skateboard.

- Added image clues to the ACME Crimenet Computer.
- Improved functionality of the ACME Crimenet Computer.
This commit is contained in:
2025-08-13 02:09:47 -04:00
parent 1e8b000b41
commit 29b690029b
72 changed files with 9086 additions and 6178 deletions
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 16
Data: 17
- Name:
Entry: 7
Data:
@@ -638,25 +638,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CaseTitle
Data: _CaseFileClueImages
- Name: $v
Entry: 7
Data: 40|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseTitle
Data: _CaseFileClueImages
- Name: <UserType>k__BackingField
Entry: 7
Data: 41|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String, mscorlib
- Name:
Entry: 8
Data:
Entry: 9
Data: 34
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
Data: 34
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -671,13 +665,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 42|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 41|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 43|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 42|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -698,19 +692,25 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CaseDescription
Data: _CaseTitle
- Name: $v
Entry: 7
Data: 44|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseDescription
Data: _CaseTitle
- Name: <UserType>k__BackingField
Entry: 9
Data: 41
Entry: 7
Data: 44|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
Data: 44
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -752,19 +752,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _StolenLoot
Data: _CaseDescription
- Name: $v
Entry: 7
Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StolenLoot
Data: _CaseDescription
- Name: <UserType>k__BackingField
Entry: 9
Data: 41
Data: 44
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
Data: 44
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -806,16 +806,70 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _AccusedCrook
Data: _StolenLoot
- Name: $v
Entry: 7
Data: 50|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: 51|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 52|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: 53|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _AccusedCrook
- Name: <UserType>k__BackingField
Entry: 7
Data: 51|System.RuntimeType, mscorlib
Data: 54|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: AccusedCrook, Assembly-CSharp
@@ -824,7 +878,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 7
Data: 52|System.RuntimeType, mscorlib
Data: 55|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
@@ -845,13 +899,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 53|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 56|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 54|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 57|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -875,13 +929,13 @@ MonoBehaviour:
Data: _CurrentWinningPlayers
- Name: $v
Entry: 7
Data: 55|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 58|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CurrentWinningPlayers
- Name: <UserType>k__BackingField
Entry: 7
Data: 56|System.RuntimeType, mscorlib
Data: 59|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String[], mscorlib
@@ -890,7 +944,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 56
Data: 59
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -905,13 +959,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 57|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 60|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 58|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 61|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -935,13 +989,13 @@ MonoBehaviour:
Data: _CaseFileDictionary
- Name: $v
Entry: 7
Data: 59|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 62|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseFileDictionary
- Name: <UserType>k__BackingField
Entry: 7
Data: 60|System.RuntimeType, mscorlib
Data: 63|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
@@ -950,7 +1004,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 60
Data: 63
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -965,7 +1019,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 61|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 64|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -41,6 +41,7 @@ public class CaseManager : UdonSharpBehaviour
[UdonSynced] private VRCUrl _CaseFileLootImage;
[UdonSynced] private VRCUrl[] _CaseFileMaps;
[UdonSynced] private VRCUrl[] _CaseFileVideos;
[UdonSynced] private VRCUrl[] _CaseFileClueImages;
[UdonSynced] private string _CaseTitle = "";
[UdonSynced] private string _CaseDescription = "";
@@ -58,6 +59,7 @@ public class CaseManager : UdonSharpBehaviour
_CaseFileLootImage = CaseFile.LootImage;
_CaseFileMaps = CaseFile.MapFiles;
_CaseFileVideos = CaseFile.VideoFiles;
_CaseFileClueImages = CaseFile.ClueImages;
VRCStringDownloader.LoadUrl(_CaseFileCluesURL, (IUdonEventReceiver)this);
}
@@ -208,6 +210,11 @@ public class CaseManager : UdonSharpBehaviour
return _CaseFileVideos.Length;
}
public VRCUrl GetClueImage(int ImageIndex)
{
return _CaseFileClueImages[ImageIndex];
}
public void SetCurrentWinningPlayers(string[] NewWinners)
{
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 10
Data: 11
- Name:
Entry: 7
Data:
@@ -455,16 +455,64 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CaseTitleText
Data: ClueImages
- Name: $v
Entry: 7
Data: 27|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: ClueImages
- Name: <UserType>k__BackingField
Entry: 9
Data: 23
- Name: <SystemType>k__BackingField
Entry: 9
Data: 23
- 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: 28|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: 7
Data:
- Name: $k
Entry: 1
Data: _CaseTitleText
- Name: $v
Entry: 7
Data: 29|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseTitleText
- Name: <UserType>k__BackingField
Entry: 7
Data: 28|System.RuntimeType, mscorlib
Data: 30|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: TMPro.TextMeshProUGUI, Unity.TextMeshPro
@@ -473,7 +521,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 28
Data: 30
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -488,13 +536,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 29|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 2
- Name:
Entry: 7
Data: 30|UnityEngine.SpaceAttribute, UnityEngine.CoreModule
Data: 32|UnityEngine.SpaceAttribute, UnityEngine.CoreModule
- Name: height
Entry: 4
Data: 8
@@ -503,7 +551,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 7
Data: 31|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 33|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -527,16 +575,16 @@ MonoBehaviour:
Data: _CrookNameText
- Name: $v
Entry: 7
Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 34|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookNameText
- Name: <UserType>k__BackingField
Entry: 9
Data: 28
Data: 30
- Name: <SystemType>k__BackingField
Entry: 9
Data: 28
Data: 30
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -551,13 +599,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 35|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 34|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 36|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -581,16 +629,16 @@ MonoBehaviour:
Data: _StolenLootText
- Name: $v
Entry: 7
Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StolenLootText
- Name: <UserType>k__BackingField
Entry: 9
Data: 28
Data: 30
- Name: <SystemType>k__BackingField
Entry: 9
Data: 28
Data: 30
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -605,13 +653,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 36|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 38|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 37|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 39|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -20,6 +20,7 @@ public class CaseManagerListEntry : UdonSharpBehaviour
public VRCUrl LootImage;
public VRCUrl[] MapFiles;
public VRCUrl[] VideoFiles;
public VRCUrl[] ClueImages;
[Space]
@@ -1202,19 +1202,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _VideoMusicClueNoteCard
Data: _VideoMusicClueSkateboard
- Name: $v
Entry: 7
Data: 74|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _VideoMusicClueNoteCard
Data: _VideoMusicClueSkateboard
- Name: <UserType>k__BackingField
Entry: 7
Data: 75|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VideoMusicClueNoteCard, Assembly-CSharp
Data: VideoMusicClueSkateboard, Assembly-CSharp
- Name:
Entry: 8
Data:
@@ -44,7 +44,7 @@ public class GameManagerRound1 : GameManagerBase
[SerializeField] private PlayerPodium[] _PlayerPodiums;
[Space, Header("Video Music Clue")]
[SerializeField] private VideoMusicClueNoteCard _VideoMusicClueNoteCard;
[SerializeField] private VideoMusicClueSkateboard _VideoMusicClueSkateboard;
[Space, Header("ACME Crimenet Computer")]
[SerializeField] private ACMECrimenetComputer _ACMECrimenetComputer;
@@ -226,33 +226,59 @@ public class GameManagerRound1 : GameManagerBase
}
else
{
_VideoMusicClueNoteCard.gameObject.SetActive(false);
MultipleChoiceRevealQuestion();
}
RequestSerialization();
}
private void InitialiseVideoMusicClue(DataDictionary Presentation)
{
// The full presentation is not ready yet, so temporarily treat it as
// a regular video clue with some additions.
switch (_QuestionSubstage)
{
case 0:
{
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "PlaySFX", SFXEventType.VideoMusicClue);
_VideoMusicClueSkateboard.SendCustomNetworkEvent(NetworkEventTarget.All, "SwooceRightIn");
if (Presentation.ContainsKey("Video Artist") && Presentation.ContainsKey("Clue Description"))
{
_VideoMusicClueNoteCard.Header.text = Presentation["Video Artist"].String;
_VideoMusicClueNoteCard.Comment.text = Presentation["Clue Description"].String;
}
else
{
_VideoMusicClueNoteCard.Header.text = "Error Reading Data";
_VideoMusicClueNoteCard.Comment.text = "just wing it i guess idk";
string Header = "Error Reading Data";
string Clue = "just wing it i guess idk";
if (Presentation.ContainsKey("Video Artist") && Presentation.ContainsKey("Clue Description"))
{
Header = Presentation["Video Artist"].String;
Clue = Presentation["Clue Description"].String;
}
_VideoMusicClueSkateboard.SendCustomNetworkEvent(NetworkEventTarget.All,
"SetCardTexts", Header, Clue);
_QuestionSubstage++;
EnableInteraction("Play Video");
} break;
case 1:
{
if (Presentation.ContainsKey("Videos"))
{
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Playing video...";
DataList Videos = Presentation["Videos"].DataList;
_VideoPlayer.VideoURL = _CaseManager.GetVideo((int)Videos[0].Number);
}
_QuestionSubstage++;
EnableInteraction("Reveal Question");
} break;
default:
{
_VideoMusicClueSkateboard.SendCustomNetworkEvent(NetworkEventTarget.All, "ResetSkateboard");
MultipleChoiceRevealQuestion();
} break;
}
_VideoMusicClueNoteCard.transform.localPosition = Vector3.zero;
_VideoMusicClueNoteCard.transform.localRotation = Quaternion.identity;
_VideoMusicClueNoteCard.gameObject.SetActive(true);
InitialiseVideoClue(Presentation);
RequestSerialization();
}
private void InitialiseACMECrimenetComputer(DataDictionary Presentation)
@@ -261,7 +287,7 @@ public class GameManagerRound1 : GameManagerBase
{
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "This part isn't done yet. This will eventually have a really cool computer give you the clue.";
Interface.HeaderUI.text = "Check the computer for clues that need translating.";
string UntranslatedText = "";
string TranslatedText = "";
@@ -283,6 +309,8 @@ public class GameManagerRound1 : GameManagerBase
_ACMECrimenetComputer.SendCustomNetworkEvent(NetworkEventTarget.All, "ResetComputer");
MultipleChoiceRevealQuestion();
}
RequestSerialization();
}
private void MultipleChoiceRevealQuestion()
@@ -1434,6 +1462,11 @@ public class GameManagerRound1 : GameManagerBase
return _CaseManager.GetMapCount();
}
public VRCUrl GetClueImageURL(int ImageIndex)
{
return _CaseManager.GetClueImage(ImageIndex);
}
protected override void _HostCardUseButtonDown_Internal()
{
@@ -1451,13 +1484,25 @@ public class GameManagerRound1 : GameManagerBase
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
string PresentationMediumString = "";
if (_CurrentQuestion.ContainsKey("Presentation") && _CurrentQuestion["Presentation"].DataDictionary.ContainsKey("Medium"))
if (_CurrentQuestion.ContainsKey("Presentation"))
{
DataDictionary Presentation = _CurrentQuestion["Presentation"].DataDictionary;
PresentationMediumString = PresentationMediumToString((PresentationMedium)(int)Presentation["Medium"].Number);
if (_CurrentQuestion["Presentation"].DataDictionary.ContainsKey("Clue Title"))
{
PresentationMediumString = Presentation["Clue Title"].String;
}
else if (_CurrentQuestion["Presentation"].DataDictionary.ContainsKey("Medium"))
{
PresentationMediumString = PresentationMediumToString((PresentationMedium)(int)Presentation["Medium"].Number);
}
else
{
PresentationMediumString = RoundSegmentTypeToString(_CurrentQuestionType);
}
}
Interface.HeaderUI.text = "Upcoming Question: " + ((PresentationMediumString == "") ? RoundSegmentTypeToString(_CurrentQuestionType) : PresentationMediumString);
Interface.HeaderUI.text = "Upcoming Question: " + PresentationMediumString;
return Interface;
}
@@ -1467,9 +1512,9 @@ public class GameManagerRound1 : GameManagerBase
{
switch (Type)
{
case PresentationMedium.VideoClue: return "Standard Video Clue";
case PresentationMedium.VideoMusicClue: return "Video Music Clue";
case PresentationMedium.ACMECrimenetComputer: return "ACME Crimenet Computer";
case PresentationMedium.VideoClue: return "Standard Video Clue";
case PresentationMedium.VideoMusicClue: return "Video Music Clue";
case PresentationMedium.ACMECrimenetComputer: return "ACME Crimenet Computer";
default: return "[[ERROR]]";
}