Improved sync and loot image loading for round 2.

This commit is contained in:
2025-07-18 01:36:25 -04:00
parent 47be4c1ba2
commit e3ea75c29c
13 changed files with 582 additions and 379 deletions
@@ -111,7 +111,7 @@ public class CaseManager : UdonSharpBehaviour
ErrorString = "Ensure the 'Round 3' dictionary entry is a dictionary with a key called 'Continent' and an integer value.";
}
ContinueToRound1();
ContinueToRound2();
}
else
{
@@ -137,6 +137,7 @@ public class CaseManager : UdonSharpBehaviour
RequestSerialization();
}
public string ContinueToRound1()
{
_HostCard.SetGameManager(_Round1Manager);
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 7
Data: 8
- Name:
Entry: 7
Data:
@@ -386,19 +386,13 @@ MonoBehaviour:
Data: 24|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 2
Data: 1
- 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:
@@ -419,13 +413,13 @@ MonoBehaviour:
Data: _StageIndex
- Name: $v
Entry: 7
Data: 27|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _StageIndex
- Name: <UserType>k__BackingField
Entry: 7
Data: 28|System.RuntimeType, mscorlib
Data: 27|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.Int32, mscorlib
@@ -434,7 +428,7 @@ MonoBehaviour:
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 28
Data: 27
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -449,13 +443,67 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 29|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 28|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 30|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
Data: 29|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: _CurrentPlayerCounter
- Name: $v
Entry: 7
Data: 30|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _CurrentPlayerCounter
- Name: <UserType>k__BackingField
Entry: 9
Data: 27
- Name: <SystemType>k__BackingField
Entry: 9
Data: 27
- 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: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 32|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
- Name:
Entry: 8
Data:
@@ -24,15 +24,22 @@ public class GameManagerRound2 : GameManagerBase
[SerializeField] private LocationBoard _LocationBoard;
[UdonSynced, FieldChangeCallback(nameof(Landmarks))] private string[] _Landmarks;
[UdonSynced] private string[] _Landmarks;
[UdonSynced] private int _StageIndex = 0;
[UdonSynced] private int _CurrentPlayerCounter = 0;
public override void InitialiseGameMode()
{
_StageIndex = 0;
_CurrentPlayerCounter = 0;
_LocationBoard.RandomiseLocations();
_LocationBoard.SetLootImageURL(_CaseManager.GetLootImage());
RequestSerialization();
base.InitialiseGameMode();
}
@@ -67,18 +74,17 @@ public class GameManagerRound2 : GameManagerBase
}
}
Landmarks = NewLandmarks;
RequestSerialization();
_Landmarks = NewLandmarks;
_LocationBoard.SendCustomNetworkEvent(NetworkEventTarget.All, "PopulateLandmarks", NewLandmarks);
_LocationBoard.RandomiseMaterials();
_LocationBoard.RandomiseLocations();
LocationBoardReset();
// Make sure we have the correct interface up after the last function.
// Make sure we have the correct interface up after resetting the location board
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
_LocationBoard.RequestSerialization();
RequestSerialization();
}
else
{
@@ -108,9 +114,9 @@ public class GameManagerRound2 : GameManagerBase
HostCardRecoverTheLootInterface RecoverTheLootInterface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
for (int i = 0; i < Landmarks.Length; i++)
for (int i = 0; i < _Landmarks.Length; i++)
{
RecoverTheLootInterface.AddLandmarkName(i, Landmarks[i]);
RecoverTheLootInterface.AddLandmarkName(i, _Landmarks[i]);
}
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)_AudioManager, NetworkEventTarget.All,
@@ -211,6 +217,8 @@ public class GameManagerRound2 : GameManagerBase
public void LocationBoardReset()
{
_CurrentPlayerCounter++;
NetworkCalling.SendCustomNetworkEvent(
(IUdonEventReceiver)_LocationBoard,
NetworkEventTarget.All,
@@ -222,14 +230,11 @@ public class GameManagerRound2 : GameManagerBase
Interface.EnableAllPanelButtons(true);
Interface.SetComment("[[PLAYER]], your turn.", Color.black);
RequestSerialization();
}
public VRCUrl GetLootImageURL()
{
return _CaseManager.GetLootImage();
}
public Texture GetCrookPortrait()
{
return _CaseManager.GetAccusedCrookPortrait();
@@ -310,15 +315,4 @@ public class GameManagerRound2 : GameManagerBase
default: return "[[ERROR]]";
}
}
public string[] Landmarks
{
set
{
_Landmarks = value;
_LocationBoard.PopulateBoard(_Landmarks);
}
get => _Landmarks;
}
}