- Reworked CameraTimedSwitcher to be able to execute callback functions.

- Cameras are thus much more reliable and less likely to desync in round 2.
This commit is contained in:
2025-12-23 05:03:14 -05:00
parent 2281fae54e
commit 27abad7657
7 changed files with 900 additions and 250 deletions
@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 24
Data: 25
- Name:
Entry: 7
Data:
@@ -1250,25 +1250,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_STANDARD
Data: _PanelToReveal_Cache
- Name: $v
Entry: 7
Data: 81|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_STANDARD
Data: _PanelToReveal_Cache
- Name: <UserType>k__BackingField
Entry: 7
Data: 82|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Color, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
Entry: 9
Data: 69
- Name: <SystemType>k__BackingField
Entry: 9
Data: 82
Data: 69
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1283,7 +1277,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 83|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 82|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -1304,19 +1298,25 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_RED
Data: COLOR_STANDARD
- Name: $v
Entry: 7
Data: 84|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 83|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_RED
Data: COLOR_STANDARD
- Name: <UserType>k__BackingField
Entry: 9
Data: 82
Entry: 7
Data: 84|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Color, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 82
Data: 84
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1352,19 +1352,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_YELLOW
Data: COLOR_RED
- Name: $v
Entry: 7
Data: 86|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_YELLOW
Data: COLOR_RED
- Name: <UserType>k__BackingField
Entry: 9
Data: 82
Data: 84
- Name: <SystemType>k__BackingField
Entry: 9
Data: 82
Data: 84
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1400,19 +1400,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: COLOR_GREEN
Data: COLOR_YELLOW
- Name: $v
Entry: 7
Data: 88|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_GREEN
Data: COLOR_YELLOW
- Name: <UserType>k__BackingField
Entry: 9
Data: 82
Data: 84
- Name: <SystemType>k__BackingField
Entry: 9
Data: 82
Data: 84
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -1443,6 +1443,54 @@ MonoBehaviour:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: COLOR_GREEN
- Name: $v
Entry: 7
Data: 90|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: COLOR_GREEN
- Name: <UserType>k__BackingField
Entry: 9
Data: 84
- Name: <SystemType>k__BackingField
Entry: 9
Data: 84
- 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: 91|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: 13
Data:
@@ -38,6 +38,8 @@ public class GameManagerRound2 : GameManagerBase
private CameraControllerRound2 _CameraControllerRound2 = null;
private int _PanelToReveal_Cache = -1;
private readonly Color COLOR_STANDARD = new Color(0.78431f, 0.78431f, 0.78431f);
private readonly Color COLOR_RED = new Color(0.78431f, 0.0f, 0.0f);
private readonly Color COLOR_YELLOW = new Color(0.78431f, 0.78431f, 0.0f);
@@ -206,7 +208,7 @@ public class GameManagerRound2 : GameManagerBase
_JailPlayer.VideoIndex = (int)_CaseManager.GetCrook();
_CameraControllerRound2.ActivatePlayer1AndWideShotCameraSwitcher();
SwitchToCurrentPlayerAndLocationBoardSwitcher();
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)_AudioManager, NetworkEventTarget.All,
"PlayMusicLoop", MusicEventType.RecoverTheLoot);
@@ -217,6 +219,8 @@ public class GameManagerRound2 : GameManagerBase
HostCardRecoverTheLootInterface Interface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
Interface.SetComment("On the right track. You get a free turn.", COLOR_GREEN);
_CameraControllerRound2.ActivateLocationBoardAndShortHostCameraSwitcher();
}
public void AlmostThere()
@@ -224,6 +228,8 @@ public class GameManagerRound2 : GameManagerBase
HostCardRecoverTheLootInterface Interface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
Interface.SetComment("Almost got it. Another free turn.", COLOR_YELLOW);
_CameraControllerRound2.ActivateLocationBoardAndShortHostCameraSwitcher();
}
public void OutOfOrder(PanelType Type)
@@ -246,6 +252,8 @@ public class GameManagerRound2 : GameManagerBase
}
Interface.SetComment("Found " + PanelToken + ". Remember the order: loot, warrant, crook. Use some strategy.", COLOR_YELLOW);
_CameraControllerRound2.ActivateLocationBoardAndLongHostCameraSwitcher();
}
// All of these next functions are the end of a turn, and should disable
@@ -294,6 +302,8 @@ public class GameManagerRound2 : GameManagerBase
NetworkCalling.SendCustomNetworkEvent((IUdonEventReceiver)_AudioManager, NetworkEventTarget.All,
"StopMusic");
_CameraControllerRound2.DisableAllSwitchers();
AdvanceRound();
}
@@ -311,17 +321,7 @@ public class GameManagerRound2 : GameManagerBase
_JailChain.Show = true;
_CameraControllerRound2.DisableAllSwitchers();
switch (_CurrentPlayerCounter % 2)
{
case 0:
_CameraControllerRound2.SwitchToPlayer1Camera();
break;
case 1:
_CameraControllerRound2.SwitchToPlayer2Camera();
break;
}
SwitchToCurrentPlayerCamera();
EnableInteraction("Phone Call");
}
@@ -375,6 +375,8 @@ public class GameManagerRound2 : GameManagerBase
HostCardRecoverTheLootInterface Interface =
(HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot);
Interface.EnableAllPanelButtons(true);
SwitchToCurrentPlayerAndLocationBoardSwitcher();
}
@@ -429,12 +431,25 @@ public class GameManagerRound2 : GameManagerBase
public void Button_RevealPanel(int Panel)
{
if (_PanelToReveal_Cache >= 0)
{
return;
}
((HostCardRecoverTheLootInterface)GetHostCardInterface(RoundSegmentType.RecoverTheLoot))
.DisablePanelButton(Panel);
_LocationBoard.RevealPanel(Panel);
_PanelToReveal_Cache = Panel;
_CameraControllerRound2.DisableAllSwitchers();
_CameraControllerRound2.SwitchToLocationBoardCamera();
SendCustomEventDelayedSeconds(nameof(_RevealLocationBoardPanel_Private), 0.33333333333333f);
}
public void _RevealLocationBoardPanel_Private()
{
_LocationBoard.RevealPanel(_PanelToReveal_Cache);
_PanelToReveal_Cache = -1;
}
[NetworkCallable]
@@ -478,6 +493,35 @@ public class GameManagerRound2 : GameManagerBase
public void Button_RevealPanel15() { Button_RevealPanel(15); }
public void SwitchToCurrentPlayerAndLocationBoardSwitcher()
{
switch (_CurrentPlayerCounter % 2)
{
case 0:
_CameraControllerRound2.ActivatePlayer1AndLocationBoardCameraSwitcher();
break;
case 1:
_CameraControllerRound2.ActivatePlayer2AndLocationBoardCameraSwitcher();
break;
}
}
public void SwitchToCurrentPlayerCamera()
{
_CameraControllerRound2.DisableAllSwitchers();
switch (_CurrentPlayerCounter % 2)
{
case 0:
_CameraControllerRound2.SwitchToPlayer1Camera();
break;
case 1:
_CameraControllerRound2.SwitchToPlayer2Camera();
break;
}
}
private string PanelTypeToString(PanelType Type)
{
switch(Type)