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
-3
View File
@@ -1,10 +1,7 @@
using System.Net.NetworkInformation;
using UdonSharp;
using UnityEngine;
using VRC.SDK3.UdonNetworkCalling;
using VRC.SDKBase;
using VRC.Udon;
public enum MusicEventType
{
@@ -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;
}
}
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,5 @@
using System.Linq;
using TMPro;
using UdonSharp;
using UnityEngine;
@@ -14,21 +15,22 @@ public class LocationBoard : UdonSharpBehaviour
[SerializeField] private GameManagerRound2 _GameManager;
[SerializeField] private AudioManager _AudioManager;
[SerializeField] private MeshRenderer[] _LocationPanelInfoSheets;
[SerializeField] private GameObject[] _LocationPanelsEmpty;
[SerializeField] private GameObject[] _LocationPanelsLoot;
[SerializeField] private GameObject[] _LocationPanelsWarrant;
[SerializeField] private GameObject[] _LocationPanelsCrook;
[SerializeField] private TextMeshProUGUI[] _LocationPanelText;
[UdonSynced, FieldChangeCallback(nameof(LootLocation))] private int _LootLocation = 0;
[UdonSynced, FieldChangeCallback(nameof(WarrantLocation))] private int _WarrantLocation = 0;
[UdonSynced, FieldChangeCallback(nameof(CrookLocation))] private int _CrookLocation = 0;
public MeshRenderer[] LocationPanelInfoSheets;
public GameObject[] LocationPanelsEmpty;
public GameObject[] LocationPanelsLoot;
public GameObject[] LocationPanelsWarrant;
public GameObject[] LocationPanelsCrook;
public TextMeshProUGUI[] LocationPanelText;
[SerializeField] private Material[] _LocationSheetMaterialSelections;
private Animator _Animator;
private VRCImageDownloader _LootImageDownloader;
private Material _LootMaterial;
[UdonSynced] private int _ActiveSpinners = 0;
[UdonSynced] private bool[] _OrderIsCorrect = new bool[3];
@@ -39,10 +41,14 @@ public class LocationBoard : UdonSharpBehaviour
void Start()
{
_HasBeenCheckedBefore = new bool[LocationPanelsEmpty.Length];
_Animator = GetComponent<Animator>();
_LootImageDownloader = new VRCImageDownloader();
MeshRenderer LootMesh;
if (LootMesh = _LocationPanelsLoot[0].GetComponent<MeshRenderer>())
{
_LootMaterial = LootMesh.sharedMaterial;
}
}
void OnDestroy()
@@ -50,6 +56,30 @@ public class LocationBoard : UdonSharpBehaviour
_LootImageDownloader.Dispose();
}
public void PopulateBoard(string[] Landmarks)
{
_HasBeenCheckedBefore = new bool[_LocationPanelsEmpty.Length];
for (int i = 0; i < Landmarks.Length; i++)
{
_LocationPanelText[i].text = Landmarks[i];
}
}
private void GetLootImage()
{
if (_LootMaterial)
{
TextureInfo AdditionalTextureInfo = new TextureInfo();
AdditionalTextureInfo.WrapModeU = TextureWrapMode.Clamp;
AdditionalTextureInfo.WrapModeV = TextureWrapMode.Clamp;
AdditionalTextureInfo.GenerateMipMaps = true;
_LootImageDownloader.DownloadImage(
_GameManager.GetLootImageURL(), _LootMaterial,
null, AdditionalTextureInfo);
}
}
[NetworkCallable]
public void RevealPanel(int Panel)
@@ -215,55 +245,37 @@ public class LocationBoard : UdonSharpBehaviour
{
Random.InitState(Networking.GetServerTimeInMilliseconds());
LootLocation = Random.Range(0, LocationPanelsLoot.Length) + 1;
LootLocation = Random.Range(0, _LocationPanelsLoot.Length) + 1;
int TempWarrantLocation = _LootLocation;
while (TempWarrantLocation == _LootLocation)
{
TempWarrantLocation = Random.Range(0, LocationPanelsWarrant.Length) + 1;
TempWarrantLocation = Random.Range(0, _LocationPanelsWarrant.Length) + 1;
}
WarrantLocation = TempWarrantLocation;
int TempCrookLocation = _WarrantLocation;
while (TempCrookLocation == _WarrantLocation || TempCrookLocation == _LootLocation)
{
TempCrookLocation = Random.Range(0, LocationPanelsCrook.Length) + 1;
TempCrookLocation = Random.Range(0, _LocationPanelsCrook.Length) + 1;
}
CrookLocation = TempCrookLocation;
for (int i = 0; i < LocationPanelsEmpty.Length; i++)
for (int i = 0; i < _LocationPanelsEmpty.Length; i++)
{
_HasBeenCheckedBefore[i] = false;
}
MeshRenderer LootMesh;
if (LootMesh = LocationPanelsLoot[LootLocation - 1].GetComponent<MeshRenderer>())
{
TextureInfo AdditionalTextureInfo = new TextureInfo();
AdditionalTextureInfo.WrapModeU = TextureWrapMode.Clamp;
AdditionalTextureInfo.WrapModeV = TextureWrapMode.Clamp;
AdditionalTextureInfo.GenerateMipMaps = true;
_LootImageDownloader.DownloadImage(
_GameManager.GetLootImageURL(),
LootMesh.sharedMaterial,
(IUdonEventReceiver)this,
AdditionalTextureInfo);
}
MeshRenderer CrookMesh;
if (CrookMesh = LocationPanelsCrook[CrookLocation - 1].GetComponent<MeshRenderer>())
if (CrookMesh = _LocationPanelsCrook[CrookLocation - 1].GetComponent<MeshRenderer>())
{
CrookMesh.sharedMaterial.SetTexture("_MainTex", _GameManager.GetCrookPortrait());
}
RandomiseMaterials();
RequestSerialization();
}
private void RandomiseMaterials()
public void RandomiseMaterials()
{
int[] MaterialsArray = new int[LocationPanelInfoSheets.Length];
int[] MaterialsArray = new int[_LocationPanelInfoSheets.Length];
int PreviousMaterial = 0;
for (int i = 0; i < MaterialsArray.Length; i++)
{
@@ -278,16 +290,14 @@ public class LocationBoard : UdonSharpBehaviour
}
RandomMaterialSettings = MaterialsArray;
RequestSerialization();
}
private void ApplyRandomMaterials()
{
for (int i = 0; i < RandomMaterialSettings.Length; i++)
{
Material[] Materials = LocationPanelInfoSheets[i].materials;
Material[] Materials = _LocationPanelInfoSheets[i].materials;
Materials[1] = _LocationSheetMaterialSelections[RandomMaterialSettings[i]];
LocationPanelInfoSheets[i].materials = Materials;
_LocationPanelInfoSheets[i].materials = Materials;
}
}
@@ -295,11 +305,11 @@ public class LocationBoard : UdonSharpBehaviour
{
if (Panel > 0)
{
LocationPanelsLoot[Panel - 1].SetActive(false);
LocationPanelsWarrant[Panel - 1].SetActive(false);
LocationPanelsCrook[Panel - 1].SetActive(false);
_LocationPanelsLoot[Panel - 1].SetActive(false);
_LocationPanelsWarrant[Panel - 1].SetActive(false);
_LocationPanelsCrook[Panel - 1].SetActive(false);
LocationPanelsEmpty[Panel - 1].SetActive(true);
_LocationPanelsEmpty[Panel - 1].SetActive(true);
}
}
@@ -307,11 +317,11 @@ public class LocationBoard : UdonSharpBehaviour
{
if (Panel > 0)
{
LocationPanelsEmpty[Panel - 1].SetActive(false);
LocationPanelsWarrant[Panel - 1].SetActive(false);
LocationPanelsCrook[Panel - 1].SetActive(false);
_LocationPanelsEmpty[Panel - 1].SetActive(false);
_LocationPanelsWarrant[Panel - 1].SetActive(false);
_LocationPanelsCrook[Panel - 1].SetActive(false);
LocationPanelsLoot[Panel - 1].SetActive(true);
_LocationPanelsLoot[Panel - 1].SetActive(true);
}
}
@@ -319,11 +329,11 @@ public class LocationBoard : UdonSharpBehaviour
{
if (Panel > 0)
{
LocationPanelsEmpty[Panel - 1].SetActive(false);
LocationPanelsLoot[Panel - 1].SetActive(false);
LocationPanelsCrook[Panel - 1].SetActive(false);
_LocationPanelsEmpty[Panel - 1].SetActive(false);
_LocationPanelsLoot[Panel - 1].SetActive(false);
_LocationPanelsCrook[Panel - 1].SetActive(false);
LocationPanelsWarrant[Panel - 1].SetActive(true);
_LocationPanelsWarrant[Panel - 1].SetActive(true);
}
}
@@ -331,11 +341,11 @@ public class LocationBoard : UdonSharpBehaviour
{
if (Panel > 0)
{
LocationPanelsEmpty[Panel - 1].SetActive(false);
LocationPanelsLoot[Panel - 1].SetActive(false);
LocationPanelsWarrant[Panel - 1].SetActive(false);
_LocationPanelsEmpty[Panel - 1].SetActive(false);
_LocationPanelsLoot[Panel - 1].SetActive(false);
_LocationPanelsWarrant[Panel - 1].SetActive(false);
LocationPanelsCrook[Panel - 1].SetActive(true);
_LocationPanelsCrook[Panel - 1].SetActive(true);
}
}
@@ -347,6 +357,8 @@ public class LocationBoard : UdonSharpBehaviour
PlaceEmpty(_LootLocation);
_LootLocation = value;
PlaceLoot(value);
GetLootImage();
}
get => _LootLocation;
}
+10 -7
View File
@@ -1,7 +1,9 @@
using System.Linq;
using UdonSharp;
using VRC.SDK3.UdonNetworkCalling;
using VRC.SDKBase;
using VRC.Udon.Common.Interfaces;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
@@ -20,7 +22,6 @@ public class FloorMap : UdonSharpBehaviour
public void RandomiseCountries()
{
_CurrentCountry = 0;
for (int i = 0; i < Countries.Length; i++)
{
Countries[i].gameObject.SetActive(false);
@@ -52,11 +53,11 @@ public class FloorMap : UdonSharpBehaviour
// We're syncing the countries and cities as one array to keep
// things simple to sync all at once.
// Array format is all countries first, then all cities.
int[] NewRandomCountriesAndCities = new int[MAX_SELECTED_COUNTRIES * 2];
NewRandomCountries.CopyTo(NewRandomCountriesAndCities, 0);
NewRandomCities.CopyTo(NewRandomCountriesAndCities, MAX_SELECTED_COUNTRIES);
int[] RandomCountriesAndCities = new int[MAX_SELECTED_COUNTRIES * 2];
NewRandomCountries.CopyTo(RandomCountriesAndCities, 0);
NewRandomCities.CopyTo(RandomCountriesAndCities, MAX_SELECTED_COUNTRIES);
RandomisedCountriesAndCities = NewRandomCountriesAndCities;
RandomisedCountriesAndCities = RandomCountriesAndCities;
RequestSerialization();
}
private bool CountryIsAlreadyInArray(int[] Countries, int IndexToCheck)
@@ -71,7 +72,7 @@ public class FloorMap : UdonSharpBehaviour
return false;
}
private void AssignRandomCountriesAndCities()
public void AssignRandomCountriesAndCities(int[] RandomisedCountriesAndCities)
{
DisableAllLocations();
@@ -99,6 +100,8 @@ public class FloorMap : UdonSharpBehaviour
return -1;
}
RequestSerialization();
return _CurrentCountry;
}
@@ -138,7 +141,7 @@ public class FloorMap : UdonSharpBehaviour
set
{
_RandomisedCountriesAndCities = value;
AssignRandomCountriesAndCities();
AssignRandomCountriesAndCities(_RandomisedCountriesAndCities);
}
get => _RandomisedCountriesAndCities;
}
+432 -222
View File
@@ -44,202 +44,22 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 8
Data: 12
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _Enabled
Data: _GameManager
- Name: $v
Entry: 7
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _Enabled
Data: _GameManager
- Name: <UserType>k__BackingField
Entry: 7
Data: 3|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Boolean, mscorlib
- Name:
Entry: 8
Data:
- 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: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 5|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: _LocationFindingEnabled
- Name: $v
Entry: 7
Data: 6|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _LocationFindingEnabled
- 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: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 7|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 2
- Name:
Entry: 7
Data: 8|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 9|UdonSharp.FieldChangeCallbackAttribute, 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: _IsGrabbed
- Name: $v
Entry: 7
Data: 10|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _IsGrabbed
- 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: 3
Data: 1
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 11|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 2
- Name:
Entry: 7
Data: 12|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 13|UdonSharp.FieldChangeCallbackAttribute, 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: _GameManager
- Name: $v
Entry: 7
Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _GameManager
- Name: <UserType>k__BackingField
Entry: 7
Data: 15|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: GameManagerRound3, Assembly-CSharp
@@ -248,7 +68,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 7
Data: 16|System.RuntimeType, mscorlib
Data: 4|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.Udon.UdonBehaviour, VRC.Udon
@@ -269,13 +89,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 17|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 5|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 18|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 6|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -296,16 +116,16 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _LitLampMaterial
Data: _UnlitLampMaterial
- Name: $v
Entry: 7
Data: 19|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _LitLampMaterial
Data: _UnlitLampMaterial
- Name: <UserType>k__BackingField
Entry: 7
Data: 20|System.RuntimeType, mscorlib
Data: 8|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Material, UnityEngine.CoreModule
@@ -314,7 +134,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 20
Data: 8
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -329,13 +149,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 21|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: 22|UnityEngine.SerializeField, UnityEngine.CoreModule
Data: 10|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -356,25 +176,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CollidingLocations
Data: _LitLampMaterial
- Name: $v
Entry: 7
Data: 23|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CollidingLocations
Data: _LitLampMaterial
- Name: <UserType>k__BackingField
Entry: 7
Data: 24|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataList, VRCSDK3
- Name:
Entry: 8
Data:
Entry: 9
Data: 8
- Name: <SystemType>k__BackingField
Entry: 9
Data: 24
Data: 8
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -386,13 +200,19 @@ MonoBehaviour:
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 25|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 12|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
Data: 1
- Name:
Entry: 7
Data: 13|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
@@ -410,25 +230,91 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _CollisionCheckCounter
Data: _Active
- Name: $v
Entry: 7
Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CollisionCheckCounter
Data: _Active
- Name: <UserType>k__BackingField
Entry: 7
Data: 27|System.RuntimeType, mscorlib
Data: 15|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
Data: System.Boolean, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 27
Data: 15
- 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: true
- Name: _fieldAttributes
Entry: 7
Data: 16|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data: 17|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 18|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 19|UdonSharp.FieldChangeCallbackAttribute, 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: _IsGrabbed
- Name: $v
Entry: 7
Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _IsGrabbed
- Name: <UserType>k__BackingField
Entry: 9
Data: 15
- Name: <SystemType>k__BackingField
Entry: 9
Data: 15
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -443,13 +329,73 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 28|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 21|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 2
- Name:
Entry: 7
Data: 22|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 23|UdonSharp.FieldChangeCallbackAttribute, 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: _LocationFindingEnabled
- Name: $v
Entry: 7
Data: 24|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _LocationFindingEnabled
- Name: <UserType>k__BackingField
Entry: 9
Data: 15
- Name: <SystemType>k__BackingField
Entry: 9
Data: 15
- 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: 25|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 29|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 26|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -468,6 +414,60 @@ MonoBehaviour:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _CollisionCheckCounter
- Name: $v
Entry: 7
Data: 27|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CollisionCheckCounter
- Name: <UserType>k__BackingField
Entry: 7
Data: 28|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 28
- 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: 29|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: _NoCollisionCounter
@@ -479,16 +479,16 @@ MonoBehaviour:
Data: _NoCollisionCounter
- Name: <UserType>k__BackingField
Entry: 9
Data: 27
Data: 28
- Name: <SystemType>k__BackingField
Entry: 9
Data: 27
Data: 28
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 3
Data: 1
Entry: 6
Data:
- Name:
Entry: 8
Data:
@@ -500,13 +500,223 @@ MonoBehaviour:
Data: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 32|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data:
- Name: $k
Entry: 1
Data: _CollidingLocations
- Name: $v
Entry: 7
Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CollidingLocations
- Name: <UserType>k__BackingField
Entry: 7
Data: 33|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Data.DataList, 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:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _RigidBodyComponent
- Name: $v
Entry: 7
Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _RigidBodyComponent
- Name: <UserType>k__BackingField
Entry: 7
Data: 36|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Rigidbody, UnityEngine.PhysicsModule
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 36
- 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: 37|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: _PickupComponent
- Name: $v
Entry: 7
Data: 38|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _PickupComponent
- Name: <UserType>k__BackingField
Entry: 7
Data: 39|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: VRC.SDK3.Components.VRCPickup, 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: _MarkerMesh
- Name: $v
Entry: 7
Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _MarkerMesh
- Name: <UserType>k__BackingField
Entry: 7
Data: 42|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.MeshRenderer, UnityEngine.CoreModule
- 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:
+73 -58
View File
@@ -11,23 +11,35 @@ using VRC.Udon.Common.Interfaces;
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class FloorMapMarker : UdonSharpBehaviour
{
[UdonSynced] private bool _Enabled = false;
[UdonSynced, FieldChangeCallback(nameof(LocationFindingEnabled))] public bool _LocationFindingEnabled = false;
[UdonSynced, FieldChangeCallback(nameof(IsGrabbed))] private bool _IsGrabbed = false;
[SerializeField] private GameManagerRound3 _GameManager;
[SerializeField] private Material _UnlitLampMaterial;
[SerializeField] private Material _LitLampMaterial;
[UdonSynced, SerializeField, FieldChangeCallback(nameof(Active))] private bool _Active = false;
[UdonSynced, FieldChangeCallback(nameof(IsGrabbed))] private bool _IsGrabbed = false;
[UdonSynced] private bool _LocationFindingEnabled = false;
private int _CollisionCheckCounter = 0;
private int _NoCollisionCounter = 0;
private DataList _CollidingLocations = new DataList();
[UdonSynced] private int _CollisionCheckCounter = 0;
[UdonSynced] private int _NoCollisionCounter = 0;
private Rigidbody _RigidBodyComponent;
private VRCPickup _PickupComponent;
private MeshRenderer _MarkerMesh;
private const int MAX_REPEAT_COLLISION_CHECKS = 3;
private const int MAX_TIME_WITH_NO_COLLISIONS = 8;
private const float TIME_BETWEEN_REPEAT_COLLISION_CHECKS = 0.15f;
void Start()
{
_RigidBodyComponent = GetComponent<Rigidbody>();
_PickupComponent = GetComponent<VRCPickup>();
_MarkerMesh = GetComponent<MeshRenderer>();
}
public void OnTriggerEnter(Collider OtherCollider)
{
FloorMapLocation Location = OtherCollider.GetComponent<FloorMapLocation>();
@@ -53,40 +65,54 @@ public class FloorMapMarker : UdonSharpBehaviour
public override void OnPickup()
{
Rigidbody Body;
if (Body = GetComponent<Rigidbody>())
if (Active)
{
Body.constraints = RigidbodyConstraints.None;
IsGrabbed = true;
}
IsGrabbed = true;
_NoCollisionCounter = 0;
_CollidingLocations.Clear();
base.OnPickup();
}
public override void OnDrop()
{
IsGrabbed = false;
LocationFindingEnabled = true;
VRCPlayerApi Owner = Networking.GetOwner(gameObject);
if (!Owner.IsUserInVR())
if (Active)
{
transform.eulerAngles = new Vector3(0.0f, transform.eulerAngles.y, 0.0f);
IsGrabbed = false;
}
_NoCollisionCounter = 0;
CheckCollisions();
base.OnDrop();
}
private void ReactToGrab()
{
if (IsGrabbed)
{
_RigidBodyComponent.constraints = RigidbodyConstraints.None;
_NoCollisionCounter = 0;
_CollidingLocations.Clear();
}
else
{
_LocationFindingEnabled = true;
VRCPlayerApi Owner = Networking.GetOwner(gameObject);
if (!Owner.IsUserInVR())
{
transform.eulerAngles = new Vector3(0.0f, transform.eulerAngles.y, 0.0f);
}
_NoCollisionCounter = 0;
CheckCollisions();
}
RequestSerialization();
}
public void CheckCollisions()
{
if (!_Enabled || !LocationFindingEnabled || IsGrabbed) return;
if (!Active || !_LocationFindingEnabled || IsGrabbed) return;
if (_CollidingLocations.Count > 0 && IsUpright())
{
@@ -100,10 +126,8 @@ public class FloorMapMarker : UdonSharpBehaviour
bool FoundCorrectResponse = ConfirmChoice(Location.Country, Location.City);
if (FoundCorrectResponse)
{
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)this,
NetworkEventTarget.All,
nameof(SendCorrectResponse),
Location.transform.position);
SendCustomNetworkEvent(NetworkEventTarget.All,
nameof(SendCorrectResponse), Location.transform.position);
return;
}
}
@@ -117,9 +141,7 @@ public class FloorMapMarker : UdonSharpBehaviour
}
else
{
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)this,
NetworkEventTarget.All,
nameof(SendIncorrectResponse));
SendCustomNetworkEvent(NetworkEventTarget.All, nameof(SendIncorrectResponse));
}
_CollisionCheckCounter++;
}
@@ -128,9 +150,7 @@ public class FloorMapMarker : UdonSharpBehaviour
_NoCollisionCounter++;
if (_NoCollisionCounter >= MAX_TIME_WITH_NO_COLLISIONS)
{
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)this,
NetworkEventTarget.All,
nameof(SendIncorrectResponse));
SendCustomNetworkEvent(NetworkEventTarget.All, nameof(SendIncorrectResponse));
}
else
{
@@ -158,13 +178,9 @@ public class FloorMapMarker : UdonSharpBehaviour
{
DisableMovementCompletely(CorrectLocation);
MeshRenderer MarkerMesh;
if (MarkerMesh = GetComponent<MeshRenderer>())
{
Material[] Materials = MarkerMesh.materials;
Materials[2] = _LitLampMaterial;
MarkerMesh.materials = Materials;
}
Material[] Materials = _MarkerMesh.materials;
Materials[2] = _LitLampMaterial;
_MarkerMesh.materials = Materials;
_GameManager.CorrectResponse();
}
@@ -180,24 +196,20 @@ public class FloorMapMarker : UdonSharpBehaviour
_CollidingLocations.Clear();
}
public void EnablePickup(bool Enable)
public void Activated(bool SetActive)
{
VRCPickup Pickup;
if (Pickup = GetComponent<VRCPickup>())
{
Pickup.pickupable = Enable;
}
_Enabled = Enable;
Active = SetActive;
RequestSerialization();
}
private void ChangePickupable()
{
_PickupComponent.pickupable = Active;
}
public void DisableMovementCompletely(Vector3 CorrectLocation = new Vector3())
private void DisableMovementCompletely(Vector3 CorrectLocation = new Vector3())
{
Rigidbody Body;
if (Body = GetComponent<Rigidbody>())
{
Body.constraints = RigidbodyConstraints.FreezeAll;
}
_RigidBodyComponent.constraints = RigidbodyConstraints.FreezeAll;
transform.eulerAngles = new Vector3(0.0f, transform.eulerAngles.y, 0.0f);
if (CorrectLocation != Vector3.zero)
@@ -205,7 +217,8 @@ public class FloorMapMarker : UdonSharpBehaviour
transform.position = CorrectLocation;
}
LocationFindingEnabled = false;
_LocationFindingEnabled = false;
RequestSerialization();
}
private bool IsUpright()
@@ -214,20 +227,22 @@ public class FloorMapMarker : UdonSharpBehaviour
}
public bool LocationFindingEnabled
private bool Active
{
set
{
_LocationFindingEnabled = value;
_Active = value;
ChangePickupable();
}
get => _LocationFindingEnabled;
get => _Active;
}
public bool IsGrabbed
private bool IsGrabbed
{
set
{
_IsGrabbed = value;
ReactToGrab();
}
get => _IsGrabbed;
}
@@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
m_Name: BoneFollower
m_EditorClassIdentifier:
serializedUdonProgramAsset: {fileID: 11400000, guid: 52ecc8a73071e8e40928c3609699fcf4,
serializedUdonProgramAsset: {fileID: 11400000, guid: ccbda9bf23e2f714c9226283c77a92e5,
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: 873dfce61b1514e429c92e0d2fded7de,
serializedUdonProgramAsset: {fileID: 11400000, guid: 405e38d3dfb2f514daeed0e28fbb4864,
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: e81558796a212ab4d88e305e2010f24b,
serializedUdonProgramAsset: {fileID: 11400000, guid: f938e6c4ff027a74da405a1f9353fd2b,
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: 2fe8ced6184000f49bca526cd2c5891c,
serializedUdonProgramAsset: {fileID: 11400000, guid: c49c9265a3ef24642a6a4465d0a78872,
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: a2d01d9f36ac6df49831be249e48ecc4,
serializedUdonProgramAsset: {fileID: 11400000, guid: 04024a76ab1924042ba521e11cb76d91,
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: 1b89d4552983c0448a7389decec3b555,
serializedUdonProgramAsset: {fileID: 11400000, guid: 17f8fbbe6cc186d4f8dbb057b01a4ec2,
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: 994b559b0f158b4499f8937980ed8694,
serializedUdonProgramAsset: {fileID: 11400000, guid: 128d924a3066b7546b2d1c73e61006ab,
type: 2}
udonAssembly:
assemblyError: