Sync issues were resolved enough to continue development.

This commit is contained in:
2025-07-15 23:39:05 -04:00
parent c3c6c51f47
commit 2f6a6a37d0
32 changed files with 6892 additions and 8767 deletions
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 11
Data: 15
- Name:
Entry: 7
Data:
@@ -638,16 +638,250 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CaseFileDictionary
Data: _CaseTitle
- Name: $v
Entry: 7
Data: 40|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseFileDictionary
Data: _CaseTitle
- Name: <UserType>k__BackingField
Entry: 7
Data: 41|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
- 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: 42|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 43|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: _CaseDescription
- Name: $v
Entry: 7
Data: 44|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseDescription
- Name: <UserType>k__BackingField
Entry: 9
Data: 41
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
- 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: 45|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 46|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: _StolenLoot
- Name: $v
Entry: 7
Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StolenLoot
- Name: <UserType>k__BackingField
Entry: 9
Data: 41
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
- 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: 48|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 49|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: 50|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _AccusedCrook
- Name: <UserType>k__BackingField
Entry: 7
Data: 51|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: AccusedCrook, Assembly-CSharp
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 7
Data: 52|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
- Name:
Entry: 8
Data:
- 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: 53|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 54|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: _CaseFileDictionary
- Name: $v
Entry: 7
Data: 55|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CaseFileDictionary
- Name: <UserType>k__BackingField
Entry: 7
Data: 56|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
@@ -656,7 +890,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 41
Data: 56
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -671,7 +905,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 42|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 57|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
+53 -34
View File
@@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
using UdonSharp;
using UnityEngine;
using VRC.SDK3.Data;
@@ -41,6 +42,11 @@ public class CaseManager : UdonSharpBehaviour
[UdonSynced] private VRCUrl _CaseFileLootImage;
[UdonSynced] private VRCUrl[] _CaseFileMaps;
[UdonSynced] private VRCUrl[] _CaseFileVideos;
[UdonSynced] private string _CaseTitle = "";
[UdonSynced] private string _CaseDescription = "";
[UdonSynced] private string _StolenLoot = "";
[UdonSynced] private AccusedCrook _AccusedCrook = AccusedCrook.INDEX_MAX;
private DataDictionary _CaseFileDictionary;
@@ -65,43 +71,56 @@ public class CaseManager : UdonSharpBehaviour
{
_CaseFileDictionary = JSONResult.DataDictionary;
if (_CaseFileDictionary.ContainsKey("Round 1") && _CaseFileDictionary.ContainsKey("Round 2") && _CaseFileDictionary.ContainsKey("Round 3"))
if (_CaseFileDictionary.ContainsKey("Case Title") && _CaseFileDictionary.ContainsKey("Case Description") &&
_CaseFileDictionary.ContainsKey("Stolen Loot") && _CaseFileDictionary.ContainsKey("Accused Crook"))
{
// Attempt to load Round 1 data
if (_CaseFileDictionary["Round 1"].TokenType == TokenType.DataList)
_CaseTitle = _CaseFileDictionary["Case Title"].ToString();
_CaseDescription = _CaseFileDictionary["Case Description"].ToString();
_StolenLoot = _CaseFileDictionary["Stolen Loot"].ToString();
_AccusedCrook = (AccusedCrook)(int)_CaseFileDictionary["Accused Crook"].Number;
if (_CaseFileDictionary.ContainsKey("Round 1") && _CaseFileDictionary.ContainsKey("Round 2") && _CaseFileDictionary.ContainsKey("Round 3"))
{
_Round1Manager.LoadQuestionData(_CaseFileDictionary["Round 1"]);
// Attempt to load Round 1 data
if (_CaseFileDictionary["Round 1"].TokenType == TokenType.DataList)
{
_Round1Manager.LoadQuestionData(_CaseFileDictionary["Round 1"]);
}
else
{
ErrorString = "Ensure the 'Round 1' entry is an array of dictionaries.";
}
// Attempt to load Round 2 data
if (_CaseFileDictionary["Round 2"].TokenType == TokenType.DataDictionary)
{
_Round2Manager.LoadQuestionData(_CaseFileDictionary["Round 2"]);
}
else
{
ErrorString = "Ensure the 'Round 2' entry is a dictionary with a location name and a list of landmarks.";
}
// Attempt to load Round 3 data
if (_CaseFileDictionary["Round 3"].TokenType == TokenType.DataDictionary)
{
_Round3Manager.LoadQuestionData(_CaseFileDictionary["Round 3"]);
}
else
{
ErrorString = "Ensure the 'Round 3' dictionary entry is a dictionary with a key called 'Continent' and an integer value.";
}
ContinueToRound3();
}
else
{
ErrorString = "Ensure the 'Round 1' entry is an array of dictionaries.";
ErrorString = "Could not find all the necessary keys for game rounds.";
}
// Attempt to load Round 2 data
if (_CaseFileDictionary["Round 2"].TokenType == TokenType.DataDictionary)
{
_Round2Manager.LoadQuestionData(_CaseFileDictionary["Round 2"]);
}
else
{
ErrorString = "Ensure the 'Round 2' entry is a dictionary with a location name and a list of landmarks.";
}
// Attempt to load Round 3 data
if (_CaseFileDictionary["Round 3"].TokenType == TokenType.DataDictionary)
{
_Round3Manager.LoadQuestionData(_CaseFileDictionary["Round 3"].DataDictionary);
}
else
{
ErrorString = "Ensure the 'Round 3' dictionary entry is a dictionary with a key called 'Continent' and an integer value.";
}
ContinueToRound1();
}
else
{
ErrorString = "Could not find all the necessary keys for game rounds.";
ErrorString = "All case files must include a case title and description, plus the stolen loot and accused crook.";
}
}
else
@@ -145,19 +164,19 @@ public class CaseManager : UdonSharpBehaviour
public string GetCaseTitle()
{
return _CaseFileDictionary["Case Title"].ToString();
return _CaseTitle;
}
public string GetCaseDescription()
{
return _CaseFileDictionary["Case Description"].ToString();
return _CaseDescription;
}
public string GetLoot()
{
return _CaseFileDictionary["Stolen Loot"].ToString();
return _StolenLoot;
}
public AccusedCrook GetCrook()
{
return (AccusedCrook)_CaseFileDictionary["Accused Crook"].Number;
return _AccusedCrook;
}
public VRCUrl GetMap(int MapIndex)
@@ -205,11 +224,11 @@ public class CaseManager : UdonSharpBehaviour
public string GetAccusedCrook()
{
return CrookToString((AccusedCrook)(int)_CaseFileDictionary["Accused Crook"].Number);
return CrookToString(_AccusedCrook);
}
public Texture GetAccusedCrookPortrait()
{
return CrookPortraits[(int)_CaseFileDictionary["Accused Crook"].Number];
return CrookPortraits[(int)_AccusedCrook];
}
}
@@ -626,124 +626,16 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _QuestionsList
Data: _CurrentQuestionType
- Name: $v
Entry: 7
Data: 38|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _QuestionsList
Data: _CurrentQuestionType
- Name: <UserType>k__BackingField
Entry: 7
Data: 39|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataList, VRCSDK3
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 39
- 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: 40|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: _CurrentQuestion
- Name: $v
Entry: 7
Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CurrentQuestion
- Name: <UserType>k__BackingField
Entry: 7
Data: 42|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 42
- 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: 43|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: _CurrentQuestionType
- Name: $v
Entry: 7
Data: 44|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CurrentQuestionType
- Name: <UserType>k__BackingField
Entry: 7
Data: 45|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: RoundSegmentType, Assembly-CSharp
@@ -756,6 +648,66 @@ MonoBehaviour:
- 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: 40|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 41|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: _QuestionsList
- Name: $v
Entry: 7
Data: 42|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _QuestionsList
- Name: <UserType>k__BackingField
Entry: 7
Data: 43|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataList, VRCSDK3
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 43
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
@@ -767,7 +719,61 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 46|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 44|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: _CurrentQuestion
- Name: $v
Entry: 7
Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CurrentQuestion
- Name: <UserType>k__BackingField
Entry: 7
Data: 46|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 46
- 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: 47|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -791,7 +797,7 @@ MonoBehaviour:
Data: _BuzzInAllowed
- Name: $v
Entry: 7
Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 48|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _BuzzInAllowed
@@ -815,13 +821,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 48|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 49|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 49|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 50|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -845,13 +851,13 @@ MonoBehaviour:
Data: _PlayerBuzzInAllowed
- Name: $v
Entry: 7
Data: 50|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 51|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _PlayerBuzzInAllowed
- Name: <UserType>k__BackingField
Entry: 7
Data: 51|System.RuntimeType, mscorlib
Data: 52|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Boolean[], mscorlib
@@ -860,7 +866,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 51
Data: 52
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -875,13 +881,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 52|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 53|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 53|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 54|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -905,7 +911,7 @@ MonoBehaviour:
Data: _BuzzedInPlayer
- Name: $v
Entry: 7
Data: 54|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 55|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _BuzzedInPlayer
@@ -929,13 +935,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 55|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: 56|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 57|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -959,13 +965,13 @@ MonoBehaviour:
Data: _FinalRoundPlayersSortedByScore
- Name: $v
Entry: 7
Data: 57|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 58|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _FinalRoundPlayersSortedByScore
- Name: <UserType>k__BackingField
Entry: 7
Data: 58|System.RuntimeType, mscorlib
Data: 59|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32[], mscorlib
@@ -974,13 +980,13 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 58
Data: 59
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
@@ -989,10 +995,16 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 59|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 60|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
Data: 1
- Name:
Entry: 7
Data: 61|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
@@ -1011,63 +1023,69 @@ MonoBehaviour:
- Name: $k
Entry: 1
Data: _TiebreakerPlayerNumbers
- Name: $v
Entry: 7
Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _TiebreakerPlayerNumbers
- Name: <UserType>k__BackingField
Entry: 9
Data: 58
- Name: <SystemType>k__BackingField
Entry: 9
Data: 58
- 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: 61|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: _PlayerPodiums
- Name: $v
Entry: 7
Data: 62|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _TiebreakerPlayerNumbers
- Name: <UserType>k__BackingField
Entry: 9
Data: 59
- Name: <SystemType>k__BackingField
Entry: 9
Data: 59
- 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: 63|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 64|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: _PlayerPodiums
- Name: $v
Entry: 7
Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _PlayerPodiums
- Name: <UserType>k__BackingField
Entry: 7
Data: 63|System.RuntimeType, mscorlib
Data: 66|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: PlayerPodium[], Assembly-CSharp
@@ -1076,7 +1094,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 7
Data: 64|System.RuntimeType, mscorlib
Data: 67|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Component[], UnityEngine.CoreModule
@@ -1097,13 +1115,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 65|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 68|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 66|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 69|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -1127,13 +1145,13 @@ MonoBehaviour:
Data: _AudioManager
- Name: $v
Entry: 7
Data: 67|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 70|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _AudioManager
- Name: <UserType>k__BackingField
Entry: 7
Data: 68|System.RuntimeType, mscorlib
Data: 71|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: AudioManager, Assembly-CSharp
@@ -1157,13 +1175,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 69|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 72|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 70|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 73|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -5,10 +5,7 @@ using VRC.SDK3.Data;
using VRC.SDK3.UdonNetworkCalling;
using VRC.Udon.Common.Interfaces;
using VRC.SDKBase;
using Newtonsoft.Json.Converters;
using VRC.Udon.Wrapper.Modules;
using VRC.SDK3.StringLoading;
using System.Collections.Generic;
public enum PresentationMedium
@@ -33,16 +30,16 @@ public class GameManagerRound1 : GameManagerBase
[UdonSynced] private int _QuestionStage = 0;
[UdonSynced] private int _QuestionSubstage = 0;
[UdonSynced] private int _QuestionCorrectResponse = 0;
[UdonSynced] private RoundSegmentType _CurrentQuestionType = RoundSegmentType.BetweenSegments;
private DataList _QuestionsList = new DataList();
private DataDictionary _CurrentQuestion;
private RoundSegmentType _CurrentQuestionType = RoundSegmentType.BetweenSegments;
[UdonSynced] private bool _BuzzInAllowed = false;
[UdonSynced] private bool[] _PlayerBuzzInAllowed;
[UdonSynced] private int _BuzzedInPlayer = 0;
private int[] _FinalRoundPlayersSortedByScore;
private int[] _TiebreakerPlayerNumbers;
[UdonSynced] private int[] _FinalRoundPlayersSortedByScore;
[UdonSynced] private int[] _TiebreakerPlayerNumbers;
[SerializeField] private PlayerPodium[] _PlayerPodiums;
@@ -57,6 +54,7 @@ public class GameManagerRound1 : GameManagerBase
_PlayerBuzzInAllowed = new bool[_PlayerPodiums.Length];
RequestSerialization();
base.InitialiseGameMode();
}
@@ -230,19 +230,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _LocationBoard
Data: _AudioManager
- Name: $v
Entry: 7
Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _LocationBoard
Data: _AudioManager
- Name: <UserType>k__BackingField
Entry: 7
Data: 15|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: LocationBoard, Assembly-CSharp
Data: AudioManager, Assembly-CSharp
- Name:
Entry: 8
Data:
@@ -290,19 +290,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _AudioManager
Data: _LocationBoard
- Name: $v
Entry: 7
Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _AudioManager
Data: _LocationBoard
- Name: <UserType>k__BackingField
Entry: 7
Data: 19|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: AudioManager, Assembly-CSharp
Data: LocationBoard, Assembly-CSharp
- Name:
Entry: 8
Data:
@@ -350,19 +350,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _LandmarkData
Data: _Landmarks
- Name: $v
Entry: 7
Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _LandmarkData
Data: _Landmarks
- Name: <UserType>k__BackingField
Entry: 7
Data: 23|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
Data: System.String[], mscorlib
- Name:
Entry: 8
Data:
@@ -373,8 +373,8 @@ MonoBehaviour:
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
@@ -386,7 +386,19 @@ MonoBehaviour:
Data: 24|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
Data: 2
- Name:
Entry: 7
Data: 25|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 26|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
@@ -407,13 +419,13 @@ MonoBehaviour:
Data: _StageIndex
- Name: $v
Entry: 7
Data: 25|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 27|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StageIndex
- Name: <UserType>k__BackingField
Entry: 7
Data: 26|System.RuntimeType, mscorlib
Data: 28|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
@@ -422,13 +434,13 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 26
Data: 28
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
Entry: 3
Data: 1
- Name:
Entry: 8
Data:
@@ -437,10 +449,16 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 27|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 29|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
Data: 1
- Name:
Entry: 7
Data: 30|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
@@ -5,7 +5,6 @@ using VRC.SDK3.Data;
using VRC.SDK3.UdonNetworkCalling;
using VRC.Udon.Common.Interfaces;
using VRC.SDKBase;
using VRC.SDK3.Image;
public enum PanelType
@@ -21,31 +20,59 @@ public enum PanelType
public class GameManagerRound2 : GameManagerBase
{
[SerializeField] private CaseManager _CaseManager;
[SerializeField] private AudioManager _AudioManager;
[SerializeField] private LocationBoard _LocationBoard;
[SerializeField] private AudioManager _AudioManager;
[UdonSynced, FieldChangeCallback(nameof(Landmarks))] private string[] _Landmarks;
private DataDictionary _LandmarkData;
private int _StageIndex = 0;
[UdonSynced] private int _StageIndex = 0;
public override void InitialiseGameMode()
{
_StageIndex = 0;
base.InitialiseGameMode();
}
public override void LoadQuestionData(DataToken Data)
{
DataDictionary LandmarkDictionary = Data.DataDictionary;
_LandmarkData = Data.DataDictionary;
if (_LandmarkData.ContainsKey("Location") && _LandmarkData.ContainsKey("Landmarks"))
if (LandmarkDictionary.ContainsKey("Location") && LandmarkDictionary.ContainsKey("Landmarks"))
{
if (_LandmarkData["Landmarks"].TokenType == TokenType.DataList && _LandmarkData["Landmarks"].DataList.Count >= 15)
if (LandmarkDictionary["Landmarks"].TokenType == TokenType.DataList && LandmarkDictionary["Landmarks"].DataList.Count >= 15)
{
PopulateLandmarkDataOnLocationBoard();
DataList LandmarksList = LandmarkDictionary["Landmarks"].DataList;
string[] NewLandmarks = new string[LandmarksList.Count];
for (int i = 0; i < LandmarksList.Count; i++)
{
if (LandmarksList[i].TokenType == TokenType.DataDictionary)
{
DataDictionary LandmarkEntry = LandmarksList[i].DataDictionary;
if (LandmarkEntry.ContainsKey("Landmark"))
{
NewLandmarks[i] = LandmarkEntry["Landmark"].String;
}
else
{
Debug.LogError("Malformed landmark entry. Ensure the 'Landmark' key exists.");
}
}
else
{
Debug.LogError("Malformed landmark entry. Ensure each landmark is a dictionary containing a 'Landmark' key.");
}
}
Landmarks = NewLandmarks;
RequestSerialization();
_LocationBoard.RandomiseMaterials();
_LocationBoard.RandomiseLocations();
_LocationBoard.RequestSerialization();
}
else
{
@@ -70,44 +97,14 @@ public class GameManagerRound2 : GameManagerBase
EnableInteraction("Begin Round");
}
private void PopulateLandmarkDataOnLocationBoard()
{
DataList Landmarks = _LandmarkData["Landmarks"].DataList;
for (int i = 0; i < Landmarks.Count; i++)
{
if (Landmarks[i].TokenType == TokenType.DataDictionary)
{
DataDictionary LandmarkEntry = Landmarks[i].DataDictionary;
if (LandmarkEntry.ContainsKey("Landmark"))
{
_LocationBoard.LocationPanelText[i].text = LandmarkEntry["Landmark"].ToString();
}
else
{
Debug.LogError("Malformed landmark entry. Ensure the 'Landmark' key exists.");
}
}
else
{
Debug.LogError("Malformed landmark entry. Ensure each landmark is a dictionary containing a 'Landmark' key.");
}
}
_LocationBoard.RandomiseLocations();
}
private void BeginRound()
{
HostCardRecoverTheLootInterface RecoverTheLootInterface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
DataList Landmarks = _LandmarkData["Landmarks"].DataList;
for (int i = 0; i < Landmarks.Count; i++)
for (int i = 0; i < Landmarks.Length; i++)
{
if (Landmarks[i].TokenType == TokenType.DataDictionary)
{
RecoverTheLootInterface.AddLandmarkName(i, Landmarks[i].DataDictionary["Landmark"].ToString());
}
RecoverTheLootInterface.AddLandmarkName(i, Landmarks[i]);
}
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)_AudioManager, NetworkEventTarget.All,
@@ -307,4 +304,15 @@ public class GameManagerRound2 : GameManagerBase
default: return "[[ERROR]]";
}
}
public string[] Landmarks
{
set
{
_Landmarks = value;
_LocationBoard.PopulateBoard(_Landmarks);
}
get => _Landmarks;
}
}
@@ -416,13 +416,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _ActiveMap
Data: _CurrentlyActiveMap
- Name: $v
Entry: 7
Data: 27|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _ActiveMap
Data: _CurrentlyActiveMap
- Name: <UserType>k__BackingField
Entry: 7
Data: 28|System.RuntimeType, mscorlib
@@ -458,7 +458,7 @@ MonoBehaviour:
Data: 30|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
Data: 2
- Name:
Entry: 7
Data: 31|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
@@ -466,59 +466,11 @@ MonoBehaviour:
Entry: 8
Data:
- Name:
Entry: 13
Data:
Entry: 7
Data: 32|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _ContinentData
- Name: $v
Entry: 7
Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _ContinentData
- Name: <UserType>k__BackingField
Entry: 7
Data: 33|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 33
- 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: 34|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
@@ -539,7 +491,7 @@ MonoBehaviour:
Data: _StageIndex
- Name: $v
Entry: 7
Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 33|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StageIndex
@@ -563,13 +515,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 36|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 34|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 37|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 35|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -588,18 +540,72 @@ MonoBehaviour:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _ContinentData
- Name: $v
Entry: 7
Data: 36|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _ContinentData
- Name: <UserType>k__BackingField
Entry: 7
Data: 37|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 37
- 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: 38|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: _GameStatus
- Name: $v
Entry: 7
Data: 38|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 39|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _GameStatus
- Name: <UserType>k__BackingField
Entry: 7
Data: 39|System.RuntimeType, mscorlib
Data: 40|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: GameStatus, Assembly-CSharp
@@ -623,13 +629,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 40|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: 41|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 42|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -653,7 +659,7 @@ MonoBehaviour:
Data: _Timer
- Name: $v
Entry: 7
Data: 42|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _Timer
@@ -677,13 +683,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 43|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 44|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 44|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 45|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -707,7 +713,7 @@ MonoBehaviour:
Data: _SuccessCounter
- Name: $v
Entry: 7
Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 46|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _SuccessCounter
@@ -731,13 +737,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 46|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 47|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 47|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 48|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -761,7 +767,7 @@ MonoBehaviour:
Data: _FailureCounter
- Name: $v
Entry: 7
Data: 48|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 49|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _FailureCounter
@@ -785,13 +791,13 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 49|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 50|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 50|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 51|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -3,6 +3,8 @@ using UdonSharp;
using UnityEngine;
using VRC.SDK3.Data;
using VRC.SDK3.UdonNetworkCalling;
using VRC.SDKBase;
using VRC.Udon.Common;
using VRC.Udon.Common.Interfaces;
@@ -13,7 +15,9 @@ public enum ContinentMap
Europe,
NorthAmerica,
Oceania,
SouthAmerica
SouthAmerica,
INDEX_MAX
}
public enum GameStatus
@@ -36,9 +40,9 @@ public class GameManagerRound3 : GameManagerBase
[SerializeField] private AudioManager _AudioManager;
[UdonSynced] private ContinentMap _ActiveMap = ContinentMap.Africa;
private DataDictionary _ContinentData;
[UdonSynced, FieldChangeCallback(nameof(CurrentlyActiveMap))] private ContinentMap _CurrentlyActiveMap = ContinentMap.INDEX_MAX;
[UdonSynced] private int _StageIndex = 0;
private DataDictionary _ContinentData;
[UdonSynced] private GameStatus _GameStatus = GameStatus.Pregame;
[UdonSynced] private int _Timer = TIMER_LENGTH;
@@ -54,8 +58,13 @@ public class GameManagerRound3 : GameManagerBase
public override void InitialiseGameMode()
{
_StageIndex = 0;
_SuccessCounter = 0;
_FailureCounter = 0;
_Timer = TIMER_LENGTH;
// We'll need to reset the markers and regenerate the map here, too.
// We'll need to reset the markers here, too.
RequestSerialization();
base.InitialiseGameMode();
}
@@ -67,19 +76,10 @@ public class GameManagerRound3 : GameManagerBase
if (_ContinentData.ContainsKey("Continent"))
{
_ActiveMap = (ContinentMap)(int)_ContinentData["Continent"].Number;
for (int i = 0; i < _Maps.Length; i++)
{
FloorMap Map = _Maps[i];
if (Map != null)
{
Map.gameObject.SetActive(i == (int)_ActiveMap);
}
}
CurrentlyActiveMap = (ContinentMap)(int)_ContinentData["Continent"].Number;
RequestSerialization();
FloorMap CurrentMap = GetCurrentMap();
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)CurrentMap, NetworkEventTarget.Owner,
"RandomiseCountries");
SendCustomEventDelayedSeconds(nameof(GenerateRandomMapLocations), 1.0f);
}
else
{
@@ -88,6 +88,29 @@ public class GameManagerRound3 : GameManagerBase
EnableInteraction("Display Briefing");
}
public void GenerateRandomMapLocations()
{
FloorMap Map = GetCurrentMap();
Map.RandomiseCountries();
}
private void ActivateMap()
{
for (int i = 0; i < _Maps.Length; i++)
{
FloorMap Map = _Maps[i];
if (Map != null)
{
Map.gameObject.SetActive(false);
}
}
FloorMap CurrentMap = _Maps[(int)CurrentlyActiveMap];
if (CurrentMap != null)
{
CurrentMap.gameObject.SetActive(true);
}
}
private void DisplayBriefing()
{
@@ -102,10 +125,9 @@ public class GameManagerRound3 : GameManagerBase
public void BeginRound()
{
UpdateInterface();
GetCurrentMarker().Activated(true);
FloorMapMarker Marker = GetCurrentMarker();
Marker.EnablePickup(true);
UpdateInterface();
StartTimer();
}
@@ -141,8 +163,7 @@ public class GameManagerRound3 : GameManagerBase
{
PlayCorrectSound();
FloorMapMarker Marker = GetCurrentMarker();
Marker.EnablePickup(false);
GetCurrentMarker().Activated(false);
_FailureCounter = 0;
_SuccessCounter++;
@@ -165,8 +186,7 @@ public class GameManagerRound3 : GameManagerBase
if (_FailureCounter >= MAX_FAILURE_COUNT)
{
_FailureCounter = 0;
FloorMapMarker Marker = GetCurrentMarker();
Marker.EnablePickup(false);
GetCurrentMarker().Activated(false);
SetUpNextCountry();
}
@@ -177,7 +197,7 @@ public class GameManagerRound3 : GameManagerBase
public FloorMap GetCurrentMap()
{
return _Maps[(int)_ActiveMap];
return _Maps[(int)CurrentlyActiveMap];
}
public FloorMapMarker GetCurrentMarker()
@@ -205,8 +225,7 @@ public class GameManagerRound3 : GameManagerBase
nameof(GameHasBeenLost), true);
return;
}
FloorMapMarker Marker = GetCurrentMarker();
Marker.EnablePickup(true);
GetCurrentMarker().Activated(true);
UpdateInterface();
}
@@ -253,7 +272,7 @@ public class GameManagerRound3 : GameManagerBase
{
for (int i = 0; i < _Markers.Length; i++)
{
_Markers[i].EnablePickup(false);
_Markers[i].Activated(false);
}
GameStatusUpdate(RanOutOfMarkers ? GameStatus.RanOutOfMarkers : GameStatus.RanOutOfTime);
@@ -345,4 +364,15 @@ public class GameManagerRound3 : GameManagerBase
case 4: EndGame(); break;
}
}
public ContinentMap CurrentlyActiveMap
{
set
{
_CurrentlyActiveMap = value;
ActivateMap();
}
get => _CurrentlyActiveMap;
}
}