- Built out the basic layout for the game's rooms.

- Added a new music track for between rounds 1 and 2.
- Music now plays between rounds.
- Round 2 now resets properly, even when not reloading the entire case.
This commit is contained in:
2025-08-01 16:02:11 -04:00
parent 9b847375c7
commit 7657b8759f
27 changed files with 11963 additions and 298 deletions
@@ -6,7 +6,6 @@ using VRC.SDK3.UdonNetworkCalling;
using VRC.Udon.Common.Interfaces;
using VRC.SDKBase;
using VRC.SDK3.StringLoading;
using VRC.SDKBase.Midi;
public enum PresentationMedium
@@ -948,7 +947,9 @@ public class GameManagerRound1 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Round is over. Move to the loot recovery area.";
_CaseManager.ContinueToRound2();
EnableInteraction("End Game");
}
}
@@ -36,13 +36,20 @@ public class GameManagerRound2 : GameManagerBase
_CurrentPlayerCounter = 0;
_LocationBoard.RandomiseLocations();
InitialiseLocationBoard();
_LocationBoard.SetLootImageURL(_CaseManager.GetLootImage());
RequestSerialization();
base.InitialiseGameMode();
}
private void InitialiseLocationBoard()
{
_LocationBoard.RandomiseLocations();
_LocationBoard.RandomiseMaterials();
LocationBoardReset();
}
public override void LoadQuestionData(DataToken Data)
{
@@ -76,14 +83,8 @@ public class GameManagerRound2 : GameManagerBase
_Landmarks = NewLandmarks;
_LocationBoard.SendCustomNetworkEvent(NetworkEventTarget.All, "PopulateLandmarks", NewLandmarks);
_LocationBoard.RandomiseMaterials();
LocationBoardReset();
// Make sure we have the correct interface up after resetting the location board
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
RequestSerialization();
}
else
@@ -106,6 +107,9 @@ public class GameManagerRound2 : GameManagerBase
RecoverTheLootInterface.HeaderUI.text = RoundSegmentTypeToString(RoundSegmentType.RecoverTheLootExplainer);
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All,
"PlayMusicLoop", MusicEventType.CapitalLoop);
EnableInteraction("Begin Round");
}
@@ -122,6 +126,7 @@ public class GameManagerRound2 : GameManagerBase
HostCardRecoverTheLootInterface RecoverTheLootInterface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
RecoverTheLootInterface.SetComment(_Players[_CurrentPlayerCounter % _Players.Length] + ", you're up first.", Color.black);
RecoverTheLootInterface.EnableAllPanelButtons(true);
for (int i = 0; i < _Landmarks.Length; i++)
{
@@ -224,11 +229,12 @@ public class GameManagerRound2 : GameManagerBase
HostCardBetweenRoundsInterface Interface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
Interface.HeaderUI.text = "Round is over. Let's go to the map!";
_CaseManager.ContinueToRound3();
}
public void LocationBoardReset()
public void LocationBoardReset(bool UpdateHostCardInterface = false)
{
_CurrentPlayerCounter++;
@@ -237,12 +243,13 @@ public class GameManagerRound2 : GameManagerBase
NetworkEventTarget.All,
"ResetPanelBoard");
HostCardRecoverTheLootInterface Interface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
Interface.EnableAllPanelButtons(true);
Interface.SetComment(_Players[_CurrentPlayerCounter % _Players.Length] + ", your turn.", Color.black);
if (UpdateHostCardInterface)
{
HostCardRecoverTheLootInterface Interface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
Interface.SetComment(_Players[_CurrentPlayerCounter % _Players.Length] + ", your turn.", Color.black);
Interface.EnableAllPanelButtons(true);
}
RequestSerialization();
}
@@ -127,6 +127,9 @@ public class GameManagerRound3 : GameManagerBase
CaptureCarmenExplainerInterface.HeaderUI.text = RoundSegmentTypeToString(RoundSegmentType.CaptureCarmenExplainer);
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All,
"PlayMusicLoop", MusicEventType.IFeelGood);
EnableInteraction("Begin");
}