Case files are now loaded via the case list, as originally intended.

This commit is contained in:
Jamie Greunbaum
2025-06-28 04:31:27 -04:00
parent 6c9a1d5608
commit cb0709a60e
7 changed files with 519 additions and 229 deletions
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 7
Data: 8
- Name:
Entry: 7
Data:
@@ -428,13 +428,13 @@ MonoBehaviour:
Data: 28|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
Data: CaseManagerListEntry, Assembly-CSharp
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 28
Data: 8
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -465,6 +465,60 @@ MonoBehaviour:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _CaseFileDictionary
- Name: $v
Entry: 7
Data: 30|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseFileDictionary
- Name: <UserType>k__BackingField
Entry: 7
Data: 31|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 31
- 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: false
- Name: _fieldAttributes
Entry: 7
Data: 32|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:
+18 -18
View File
@@ -37,16 +37,16 @@ public class CaseManager : UdonSharpBehaviour
[SerializeField] private Texture[] CrookPortraits;
private DataDictionary _CaseFile;
private CaseManagerListEntry _CaseFile;
private DataDictionary _CaseFileDictionary;
void Start()
public void LoadCaseFile(CaseManagerListEntry CaseFile)
{
// Download our test question.
VRCStringDownloader.LoadUrl(_QuestionURL, (IUdonEventReceiver)this);
_CaseFile = CaseFile;
VRCStringDownloader.LoadUrl(_CaseFile.CaseFileURL, (IUdonEventReceiver)this);
}
public override void OnStringLoadSuccess(IVRCStringDownload DownloadedString)
{
string ErrorString = "";
@@ -55,14 +55,14 @@ public class CaseManager : UdonSharpBehaviour
{
if (JSONResult.TokenType == TokenType.DataDictionary)
{
_CaseFile = JSONResult.DataDictionary;
_CaseFileDictionary = JSONResult.DataDictionary;
if (_CaseFile.ContainsKey("Round 1") && _CaseFile.ContainsKey("Round 2") && _CaseFile.ContainsKey("Round 3"))
if (_CaseFileDictionary.ContainsKey("Round 1") && _CaseFileDictionary.ContainsKey("Round 2") && _CaseFileDictionary.ContainsKey("Round 3"))
{
// Attempt to load Round 1 data
if (_CaseFile["Round 1"].TokenType == TokenType.DataList)
if (_CaseFileDictionary["Round 1"].TokenType == TokenType.DataList)
{
_Round1Manager.LoadQuestionData(_CaseFile["Round 1"]);
_Round1Manager.LoadQuestionData(_CaseFileDictionary["Round 1"]);
}
else
{
@@ -70,9 +70,9 @@ public class CaseManager : UdonSharpBehaviour
}
// Attempt to load Round 2 data
if (_CaseFile["Round 2"].TokenType == TokenType.DataDictionary)
if (_CaseFileDictionary["Round 2"].TokenType == TokenType.DataDictionary)
{
_Round2Manager.LoadQuestionData(_CaseFile["Round 2"]);
_Round2Manager.LoadQuestionData(_CaseFileDictionary["Round 2"]);
}
else
{
@@ -80,9 +80,9 @@ public class CaseManager : UdonSharpBehaviour
}
// Attempt to load Round 3 data
if (_CaseFile["Round 3"].TokenType == TokenType.DataDictionary)
if (_CaseFileDictionary["Round 3"].TokenType == TokenType.DataDictionary)
{
_Round3Manager.LoadQuestionData(_CaseFile["Round 3"].DataDictionary);
_Round3Manager.LoadQuestionData(_CaseFileDictionary["Round 3"].DataDictionary);
}
else
{
@@ -135,15 +135,15 @@ public class CaseManager : UdonSharpBehaviour
public string GetCaseTitle()
{
return _CaseFile["Case Title"].ToString();
return _CaseFileDictionary["Case Title"].ToString();
}
public string GetLoot()
{
return _CaseFile["Stolen Loot"].ToString();
return _CaseFileDictionary["Stolen Loot"].ToString();
}
public AccusedCrook GetCrook()
{
return (AccusedCrook)_CaseFile["Accused Crook"].Number;
return (AccusedCrook)_CaseFileDictionary["Accused Crook"].Number;
}
@@ -167,11 +167,11 @@ public class CaseManager : UdonSharpBehaviour
public string GetAccusedCrook()
{
return CrookToString((AccusedCrook)(int)_CaseFile["Accused Crook"].Number);
return CrookToString((AccusedCrook)(int)_CaseFileDictionary["Accused Crook"].Number);
}
public Texture GetAccusedCrookPortrait()
{
return CrookPortraits[(int)_CaseFile["Accused Crook"].Number];
return CrookPortraits[(int)_CaseFileDictionary["Accused Crook"].Number];
}
}
@@ -50,16 +50,82 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CaseFileURL
Data: _CaseManager
- Name: $v
Entry: 7
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseFileURL
Data: _CaseManager
- Name: <UserType>k__BackingField
Entry: 7
Data: 3|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: CaseManager, Assembly-CSharp
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 7
Data: 4|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.Udon.UdonBehaviour, VRC.Udon
- Name:
Entry: 8
Data:
- 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: 5|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 6|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: CaseFileURL
- Name: $v
Entry: 7
Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: CaseFileURL
- Name: <UserType>k__BackingField
Entry: 7
Data: 8|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDKBase.VRCUrl, VRCSDKBase
@@ -68,7 +134,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 3
Data: 8
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -83,16 +149,10 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 9|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 5|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
Data: 0
- Name:
Entry: 13
Data:
@@ -110,79 +170,25 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CaseNameText
- Name: $v
Entry: 7
Data: 6|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseNameText
- Name: <UserType>k__BackingField
Entry: 7
Data: 7|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: TMPro.TextMeshProUGUI, Unity.TextMeshPro
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 7
- 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: 8|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 9|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: _CrookNameText
Data: MapFiles
- Name: $v
Entry: 7
Data: 10|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CrookNameText
Data: MapFiles
- Name: <UserType>k__BackingField
Entry: 9
Data: 7
Entry: 7
Data: 11|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDKBase.VRCUrl[], VRCSDKBase
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 7
Data: 11
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -197,16 +203,10 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 11|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 12|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 12|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
Data: 0
- Name:
Entry: 13
Data:
@@ -224,19 +224,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _StolenLootText
Data: VideoFiles
- Name: $v
Entry: 7
Data: 13|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StolenLootText
Data: VideoFiles
- Name: <UserType>k__BackingField
Entry: 9
Data: 7
Data: 11
- Name: <SystemType>k__BackingField
Entry: 9
Data: 7
Data: 11
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -254,13 +254,7 @@ MonoBehaviour:
Data: 14|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 15|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
Data: 0
- Name:
Entry: 13
Data:
@@ -281,13 +275,13 @@ MonoBehaviour:
Data: _DeserialisedData
- Name: $v
Entry: 7
Data: 16|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 15|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _DeserialisedData
- Name: <UserType>k__BackingField
Entry: 7
Data: 17|System.RuntimeType, mscorlib
Data: 16|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
@@ -296,7 +290,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 17
Data: 16
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -311,7 +305,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 18|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 17|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -1,61 +1,23 @@
using TMPro;
using UdonSharp;
using UnityEngine;
using VRC.SDK3.Data;
using VRC.SDK3.Image;
using VRC.SDK3.StringLoading;
using VRC.SDKBase;
using VRC.Udon;
using VRC.Udon.Common.Interfaces;
public class CaseManagerListEntry : UdonSharpBehaviour
{
[SerializeField] private VRCUrl _CaseFileURL;
[SerializeField] private CaseManager _CaseManager;
[SerializeField] private TextMeshProUGUI _CaseNameText;
[SerializeField] private TextMeshProUGUI _CrookNameText;
[SerializeField] private TextMeshProUGUI _StolenLootText;
public VRCUrl CaseFileURL;
public VRCUrl[] MapFiles;
public VRCUrl[] VideoFiles;
private DataDictionary _DeserialisedData;
private void Start()
public void LoadCaseFile()
{
//VRCStringDownloader.LoadUrl(_CaseFileURL, (IUdonEventReceiver)this);
}
public override void OnStringLoadSuccess(IVRCStringDownload DownloadedString)
{
string ErrorString = "";
string JSONString = DownloadedString.Result;
if (VRCJson.TryDeserializeFromJson(JSONString, out DataToken JSONResult))
{
if (JSONResult.TokenType == TokenType.DataDictionary)
{
_DeserialisedData = JSONResult.DataDictionary;
if (_DeserialisedData.ContainsKey("Case Title") &&
_DeserialisedData.ContainsKey("Accused Crook") &&
_DeserialisedData.ContainsKey("Stolen Loot"))
{
_CaseNameText.text = _DeserialisedData["Case Title"].ToString();
_CrookNameText.text = _DeserialisedData["Accused Crook"].ToString();
_StolenLootText.text = _DeserialisedData["Stolen Loot"].ToString();
}
else
{
ErrorString = "Metadata is missing.";
}
}
else
{
ErrorString = "Ensure the first element is a dictionary";
}
}
if (ErrorString != "")
{
Debug.LogError("Malformed case file: " + _CaseFileURL.Get() + ". " + ErrorString);
}
_CaseManager.LoadCaseFile(this);
}
}