- Floor map markers now activate properly even if being held at round start.

- Floor map markers now react to round end much more consistently and reliably.
This commit is contained in:
Jamie Greunbaum 2025-12-06 22:37:27 -05:00
parent 5c26296e05
commit ae22426488
4 changed files with 96 additions and 65 deletions

View File

@ -461,6 +461,7 @@ MonoBehaviour:
currentlyHeldBy: {fileID: 0} currentlyHeldBy: {fileID: 0}
pickupable: 0 pickupable: 0
proximity: 0.5 proximity: 0.5
version: 1
--- !u!114 &7701985575892871572 --- !u!114 &7701985575892871572
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -15565,9 +15565,14 @@ PrefabInstance:
type: 3} type: 3}
- target: {fileID: 1856344074827895174, guid: aecb18996fccac6488cfcd38604796da, - target: {fileID: 1856344074827895174, guid: aecb18996fccac6488cfcd38604796da,
type: 3} type: 3}
propertyPath: pickupable propertyPath: version
value: 1 value: 1
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1856344074827895174, guid: aecb18996fccac6488cfcd38604796da,
type: 3}
propertyPath: AutoHold
value: 2
objectReference: {fileID: 0}
- target: {fileID: 2083024587461002224, guid: aecb18996fccac6488cfcd38604796da, - target: {fileID: 2083024587461002224, guid: aecb18996fccac6488cfcd38604796da,
type: 3} type: 3}
propertyPath: serializationData.Prefab propertyPath: serializationData.Prefab
@ -15857,12 +15862,12 @@ PrefabInstance:
- target: {fileID: 7701985575892871572, guid: aecb18996fccac6488cfcd38604796da, - target: {fileID: 7701985575892871572, guid: aecb18996fccac6488cfcd38604796da,
type: 3} type: 3}
propertyPath: lastPickupable propertyPath: lastPickupable
value: 1 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7701985575892871572, guid: aecb18996fccac6488cfcd38604796da, - target: {fileID: 7701985575892871572, guid: aecb18996fccac6488cfcd38604796da,
type: 3} type: 3}
propertyPath: pickupableFlag propertyPath: pickupableFlag
value: 1 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7701985575892871572, guid: aecb18996fccac6488cfcd38604796da, - target: {fileID: 7701985575892871572, guid: aecb18996fccac6488cfcd38604796da,
type: 3} type: 3}
@ -93293,19 +93298,19 @@ MonoBehaviour:
useAssignedLayers: 0 useAssignedLayers: 0
DynamicPrefabs: [] DynamicPrefabs: []
DynamicMaterials: DynamicMaterials:
- {fileID: 2100000, guid: 0c3dfdcd7a2a6ac408ec3d431f9a4932, type: 2} - {fileID: 2100000, guid: d1244b908a4cccd4397cc9cad45fe846, type: 2}
- {fileID: 2100000, guid: bc5888e576e9cb34bab7b7af42d2b63f, type: 2} - {fileID: 2100000, guid: e53b90b5a4f1c3048b28024a40b455e7, type: 2}
- {fileID: 2100000, guid: 1eb2f964062497347b887d2c940e79c5, type: 2} - {fileID: 2100000, guid: 12e96dbe16f21704485645506bfc235a, type: 2}
- {fileID: 2100000, guid: accd304c49b7d6d43b97738e8e118342, type: 2} - {fileID: 2100000, guid: 77cb94791cc41a5498279122022730b0, type: 2}
- {fileID: 2100000, guid: 2c0cd617d97924748a9d5e2eeb2039b5, type: 2}
- {fileID: 2100000, guid: 4fb0b8cdca56f5d47be970c7490cb7a1, type: 2} - {fileID: 2100000, guid: 4fb0b8cdca56f5d47be970c7490cb7a1, type: 2}
- {fileID: 2100000, guid: 9cdc0250a4c9b534fae68ae6aa90bf31, type: 2}
- {fileID: 2100000, guid: c1b531b2f1a7dab43b46daa7546cfda7, type: 2}
- {fileID: 2100000, guid: 348ff3cc54305654d9eeebbbb385c262, type: 2}
- {fileID: 2100000, guid: af0c1cbaaffed304ba0e3a1fbac41e7e, type: 2} - {fileID: 2100000, guid: af0c1cbaaffed304ba0e3a1fbac41e7e, type: 2}
- {fileID: 2100000, guid: cc22c7f9de95cab4488b30fe8699a82a, type: 2} - {fileID: 2100000, guid: cc22c7f9de95cab4488b30fe8699a82a, type: 2}
- {fileID: 2100000, guid: fe872fb72ad98da4dbb868481468e848, type: 2} - {fileID: 2100000, guid: fe872fb72ad98da4dbb868481468e848, type: 2}
- {fileID: 2100000, guid: 82f2961c9baa48a45ac897be257fd655, type: 2} - {fileID: 2100000, guid: 82f2961c9baa48a45ac897be257fd655, type: 2}
- {fileID: 2100000, guid: 9cdc0250a4c9b534fae68ae6aa90bf31, type: 2}
- {fileID: 2100000, guid: dba163de40c568b48ae2ffa7c83c66b9, type: 2}
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 2100000, guid: 0c3dfdcd7a2a6ac408ec3d431f9a4932, type: 2}
- {fileID: 2100000, guid: 4de84333504452948874f4422dec7b56, type: 2} - {fileID: 2100000, guid: 4de84333504452948874f4422dec7b56, type: 2}
- {fileID: 2100000, guid: 97a375a2664a65f44a74b8e0711591fb, type: 2} - {fileID: 2100000, guid: 97a375a2664a65f44a74b8e0711591fb, type: 2}
- {fileID: 2100000, guid: 71fff76911e92ab43a71d15602da4c4b, type: 2} - {fileID: 2100000, guid: 71fff76911e92ab43a71d15602da4c4b, type: 2}
@ -93313,17 +93318,15 @@ MonoBehaviour:
- {fileID: 2100000, guid: ea08301eace4f164bb3aae930413a978, type: 2} - {fileID: 2100000, guid: ea08301eace4f164bb3aae930413a978, type: 2}
- {fileID: 2100000, guid: 6dd6b8b1c8133f04dbc23ac81f5dfded, type: 2} - {fileID: 2100000, guid: 6dd6b8b1c8133f04dbc23ac81f5dfded, type: 2}
- {fileID: 2100000, guid: c3186340e03d26341969d34663dbf8f3, type: 2} - {fileID: 2100000, guid: c3186340e03d26341969d34663dbf8f3, type: 2}
- {fileID: 2100000, guid: d1244b908a4cccd4397cc9cad45fe846, type: 2} - {fileID: 2100000, guid: db9b2b735115eb248a189b1fdc721a50, type: 2}
- {fileID: 2100000, guid: e53b90b5a4f1c3048b28024a40b455e7, type: 2} - {fileID: 2100000, guid: c1b531b2f1a7dab43b46daa7546cfda7, type: 2}
- {fileID: 2100000, guid: 012e77fb6a6d69548802da3b41814618, type: 2} - {fileID: 2100000, guid: 012e77fb6a6d69548802da3b41814618, type: 2}
- {fileID: 2100000, guid: 4d875a76d6e247742b8d3d66214b2c2d, type: 2} - {fileID: 2100000, guid: 4d875a76d6e247742b8d3d66214b2c2d, type: 2}
- {fileID: 2100000, guid: 12e96dbe16f21704485645506bfc235a, type: 2}
- {fileID: 2100000, guid: 8db36ece14c543d47be04e1d0cde1a1f, type: 2} - {fileID: 2100000, guid: 8db36ece14c543d47be04e1d0cde1a1f, type: 2}
- {fileID: 2100000, guid: 77485a45419b5da498cc74acff31c49a, type: 2} - {fileID: 2100000, guid: 77485a45419b5da498cc74acff31c49a, type: 2}
- {fileID: 2100000, guid: d2b3854a83244764192826cd7eadc955, type: 2} - {fileID: 2100000, guid: d2b3854a83244764192826cd7eadc955, type: 2}
- {fileID: 2100000, guid: 8de5e47a4e3831b40b59595ad3e2e267, type: 2} - {fileID: 2100000, guid: 8de5e47a4e3831b40b59595ad3e2e267, type: 2}
- {fileID: 2100000, guid: d23dd47c26278f94ea3bc15c730f59ed, type: 2} - {fileID: 2100000, guid: d23dd47c26278f94ea3bc15c730f59ed, type: 2}
- {fileID: 2100000, guid: 77cb94791cc41a5498279122022730b0, type: 2}
- {fileID: 2100000, guid: 98b5c6e030fc83d48bbba9e927a456d4, type: 2} - {fileID: 2100000, guid: 98b5c6e030fc83d48bbba9e927a456d4, type: 2}
- {fileID: 2100000, guid: c0998459c7ac0e94d825035839d01ac9, type: 2} - {fileID: 2100000, guid: c0998459c7ac0e94d825035839d01ac9, type: 2}
- {fileID: 2100000, guid: fa8f228d6d5f77d479bf970e355f4bc3, type: 2} - {fileID: 2100000, guid: fa8f228d6d5f77d479bf970e355f4bc3, type: 2}
@ -93336,19 +93339,21 @@ MonoBehaviour:
- {fileID: 2100000, guid: c5d2a6b0c3904c747b937dd142cbb480, type: 2} - {fileID: 2100000, guid: c5d2a6b0c3904c747b937dd142cbb480, type: 2}
- {fileID: 2100000, guid: 53b84df3db050264db8132d12d59ac74, type: 2} - {fileID: 2100000, guid: 53b84df3db050264db8132d12d59ac74, type: 2}
- {fileID: 2100000, guid: 9d4baac78c2042b47b42fc9c92d87767, type: 2} - {fileID: 2100000, guid: 9d4baac78c2042b47b42fc9c92d87767, type: 2}
- {fileID: 2100000, guid: db9b2b735115eb248a189b1fdc721a50, type: 2}
- {fileID: 2100000, guid: cc8e36941dd3f2c42a157650e05b9242, type: 2} - {fileID: 2100000, guid: cc8e36941dd3f2c42a157650e05b9242, type: 2}
- {fileID: 2100000, guid: accd304c49b7d6d43b97738e8e118342, type: 2}
- {fileID: 2100000, guid: 2c0cd617d97924748a9d5e2eeb2039b5, type: 2}
- {fileID: 2100000, guid: a94d8fe1854504e47a64e023cecaa130, type: 2} - {fileID: 2100000, guid: a94d8fe1854504e47a64e023cecaa130, type: 2}
- {fileID: 2100000, guid: 51b03d257a738e6468f623865f31dbec, type: 2} - {fileID: 2100000, guid: 51b03d257a738e6468f623865f31dbec, type: 2}
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 2100000, guid: 348ff3cc54305654d9eeebbbb385c262, type: 2}
- {fileID: 2100000, guid: 672c36f6dbb36b5439cc0fdd2f74c531, type: 2} - {fileID: 2100000, guid: 672c36f6dbb36b5439cc0fdd2f74c531, type: 2}
- {fileID: 2100000, guid: 35c2a316ece610b4b963e047e5238337, type: 2}
- {fileID: 2100000, guid: 332daba92d0976f4d86bdcdc1a94179e, type: 2}
- {fileID: 2100000, guid: dba163de40c568b48ae2ffa7c83c66b9, type: 2}
- {fileID: 2100000, guid: e45d02bbf7268504ca58513c548a58e7, type: 2} - {fileID: 2100000, guid: e45d02bbf7268504ca58513c548a58e7, type: 2}
- {fileID: 2100000, guid: cac39def7281c5c488b6a3465ec1951b, type: 2} - {fileID: 2100000, guid: bc5888e576e9cb34bab7b7af42d2b63f, type: 2}
- {fileID: 2100000, guid: 80746b095abb6ce41a1c737df3649172, type: 2}
- {fileID: 2100000, guid: 885429151ec5f6a4a926f6aaabd7e001, type: 2} - {fileID: 2100000, guid: 885429151ec5f6a4a926f6aaabd7e001, type: 2}
- {fileID: 2100000, guid: 332daba92d0976f4d86bdcdc1a94179e, type: 2}
- {fileID: 2100000, guid: 1eb2f964062497347b887d2c940e79c5, type: 2}
- {fileID: 2100000, guid: 80746b095abb6ce41a1c737df3649172, type: 2}
- {fileID: 2100000, guid: 35c2a316ece610b4b963e047e5238337, type: 2}
- {fileID: 2100000, guid: cac39def7281c5c488b6a3465ec1951b, type: 2}
- {fileID: 2100000, guid: 483ceb65615010745bde1d5ff9fd9dd6, type: 2} - {fileID: 2100000, guid: 483ceb65615010745bde1d5ff9fd9dd6, type: 2}
- {fileID: 2100000, guid: c10453b4aa0c864458b74f3797cb611e, type: 2} - {fileID: 2100000, guid: c10453b4aa0c864458b74f3797cb611e, type: 2}
LightMapsNear: [] LightMapsNear: []

View File

@ -61,6 +61,8 @@ public class GameManagerRound3 : GameManagerBase
{ {
base.InitialiseGameMode(); base.InitialiseGameMode();
_GameStatus = GameStatus.Pregame;
_StageIndex = 0; _StageIndex = 0;
SuccessCounter = 0; SuccessCounter = 0;
@ -106,7 +108,7 @@ public class GameManagerRound3 : GameManagerBase
_Markers[i].SendCustomNetworkEvent(NetworkEventTarget.All, "Initialise"); _Markers[i].SendCustomNetworkEvent(NetworkEventTarget.All, "Initialise");
} }
_ActiveMarker = 0; ActiveMarker = 0;
GetCurrentMarker().SendCustomNetworkEvent(NetworkEventTarget.All, "SetPickupable", true); GetCurrentMarker().SendCustomNetworkEvent(NetworkEventTarget.All, "SetPickupable", true);
} }
@ -209,6 +211,10 @@ public class GameManagerRound3 : GameManagerBase
[NetworkCallable] [NetworkCallable]
public void CorrectResponse() public void CorrectResponse()
{ {
if (_GameStatus == GameStatus.Begin)
{
FloorMapMarker CurrentMarker = GetCurrentMarker();
CurrentMarker.SendCustomNetworkEvent(NetworkEventTarget.Owner, "SetLit", true);
PlayCorrectSound(); PlayCorrectSound();
SuccessCounter++; SuccessCounter++;
@ -223,9 +229,12 @@ public class GameManagerRound3 : GameManagerBase
RequestSerialization(); RequestSerialization();
} }
}
[NetworkCallable] [NetworkCallable]
public void IncorrectResponse() public void IncorrectResponse()
{
if (_GameStatus == GameStatus.Begin)
{ {
PlayIncorrectSound(); PlayIncorrectSound();
@ -237,6 +246,7 @@ public class GameManagerRound3 : GameManagerBase
RequestSerialization(); RequestSerialization();
} }
}
public FloorMap GetCurrentMap() public FloorMap GetCurrentMap()
@ -275,6 +285,8 @@ public class GameManagerRound3 : GameManagerBase
} }
private void ActivateMarker() private void ActivateMarker()
{
if (_GameStatus == GameStatus.Begin)
{ {
if (ActiveMarker >= FloorMap.MAX_SELECTED_COUNTRIES) if (ActiveMarker >= FloorMap.MAX_SELECTED_COUNTRIES)
{ {
@ -286,19 +298,21 @@ public class GameManagerRound3 : GameManagerBase
UpdateInterface(); UpdateInterface();
GetCurrentMarker().SendCustomNetworkEvent(NetworkEventTarget.Owner, "Activated", true); GetCurrentMarker().SendCustomNetworkEvent(NetworkEventTarget.Owner, "Activated", true);
} }
}
[NetworkCallable] [NetworkCallable]
public void GameHasBeenWon() public void GameHasBeenWon()
{ {
_RunTimer = false; _RunTimer = false;
if ((int)_GameStatus <= (int)GameStatus.Begin) if (_GameStatus == GameStatus.Begin)
{ {
GameStatusUpdate(GameStatus.Win); GameStatusUpdate(GameStatus.Win);
HostCardBetweenRoundsInterface GameWinInterface = HostCardBetweenRoundsInterface GameWinInterface =
(HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments); (HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments);
GameWinInterface.HeaderUI.text = "The player has won the game.";
GameWinInterface.HeaderUI.text = GetRound3PlayerName() + " has won the game.";
GameWinInterface.CommentUI.text = GameWinInterface.CommentUI.text =
"- " + _Timer + " seconds to spare.\n" + "- " + _Timer + " seconds to spare.\n" +
"- There's one more thing I want you to do for us. You know what it is..."; "- There's one more thing I want you to do for us. You know what it is...";
@ -323,14 +337,8 @@ public class GameManagerRound3 : GameManagerBase
public void EndCarmenInJailSFX() public void EndCarmenInJailSFX()
{ {
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "StopSFX"); _AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "StopSFX");
string[] CurrentWinner = _CaseManager.GetCurrentWinningPlayers();
if (CurrentWinner == null || CurrentWinner.Length != 1) _CaptureCarmenNewspaper.SendCustomNetworkEvent(NetworkEventTarget.All, "PlayWinAnimation", GetRound3PlayerName());
{
CurrentWinner = new string[1];
CurrentWinner[0] = Networking.GetOwner(gameObject).displayName;
}
_CaptureCarmenNewspaper.SendCustomNetworkEvent(NetworkEventTarget.All, "PlayWinAnimation", CurrentWinner[0]);
} }
[NetworkCallable] [NetworkCallable]
@ -338,7 +346,7 @@ public class GameManagerRound3 : GameManagerBase
{ {
_RunTimer = false; _RunTimer = false;
if (_GameStatus != GameStatus.Win) if (_GameStatus == GameStatus.Begin)
{ {
GameStatusUpdate(RanOutOfMarkers ? GameStatus.RanOutOfMarkers : GameStatus.RanOutOfTime); GameStatusUpdate(RanOutOfMarkers ? GameStatus.RanOutOfMarkers : GameStatus.RanOutOfTime);
@ -445,6 +453,16 @@ public class GameManagerRound3 : GameManagerBase
CaptureCarmenInterface.CommentUI.text = City + ", " + Region + Country; CaptureCarmenInterface.CommentUI.text = City + ", " + Region + Country;
} }
private string GetRound3PlayerName()
{
string[] CurrentWinner = _CaseManager.GetCurrentWinningPlayers();
if (CurrentWinner == null || CurrentWinner.Length != 1)
{
return "The player";
}
return CurrentWinner[0];
}
protected override HostCardInterfaceBase GetHostCardInterface(RoundSegmentType Question) protected override HostCardInterfaceBase GetHostCardInterface(RoundSegmentType Question)
{ {

View File

@ -150,11 +150,6 @@ public class FloorMapMarker : UdonSharpBehaviour
public void CheckCollisionsLoop() public void CheckCollisionsLoop()
{ {
if (Active)
{
SendCustomEventDelayedSeconds(nameof(CheckCollisionsLoop), TIME_BETWEEN_REPEAT_COLLISION_CHECKS);
}
if (_EnableCollisionChecks && !IsGrabbed) if (_EnableCollisionChecks && !IsGrabbed)
{ {
if (_CollidingLocations.Count > 0 && IsUpright()) if (_CollidingLocations.Count > 0 && IsUpright())
@ -190,6 +185,11 @@ public class FloorMapMarker : UdonSharpBehaviour
} }
} }
} }
if (Active)
{
SendCustomEventDelayedSeconds(nameof(CheckCollisionsLoop), TIME_BETWEEN_REPEAT_COLLISION_CHECKS);
}
} }
@ -208,7 +208,6 @@ public class FloorMapMarker : UdonSharpBehaviour
{ {
DisableMovementCompletely(CorrectLocation); DisableMovementCompletely(CorrectLocation);
IsLit = true;
Active = false; Active = false;
_EnableCollisionChecks = false; _EnableCollisionChecks = false;
_UsedUp = true; _UsedUp = true;
@ -242,15 +241,22 @@ public class FloorMapMarker : UdonSharpBehaviour
public void Activated(bool SetActive) public void Activated(bool SetActive)
{ {
Active = SetActive; Active = SetActive;
RequestSerialization();
} }
private void ReactToActivation() private void ReactToActivation()
{ {
_PickupComponent.pickupable = Active; _PickupComponent.pickupable = Active;
if (IsGrabbed) _EnableCollisionChecks = true;
SendCustomEventDelayedSeconds(nameof(CheckCollisionsLoop), TIME_BETWEEN_REPEAT_COLLISION_CHECKS); SendCustomEventDelayedSeconds(nameof(CheckCollisionsLoop), TIME_BETWEEN_REPEAT_COLLISION_CHECKS);
} }
[NetworkCallable]
public void SetLit(bool Lit)
{
IsLit = Lit;
RequestSerialization();
}
public bool IsUsedUp() public bool IsUsedUp()
{ {
@ -283,6 +289,7 @@ public class FloorMapMarker : UdonSharpBehaviour
{ {
_Active = value; _Active = value;
ReactToActivation(); ReactToActivation();
RequestSerialization();
} }
get => _Active; get => _Active;
} }