/// <summary> /// Coroutine to replace the standard GameplayState start round coroutine. /// </summary> private IEnumerator StartGameplay() { GameplayState gameplayState = SceneManager.Instance.GameplayState; gameplayState.StopAllCoroutines(); yield return(new WaitForSeconds(2.0f)); gameplayState.Room.ActivateCeilingLights(); GameplayState.OnLightsOnEvent?.Invoke(); if ((KTInputManager.Instance.GetCurrentSelectable() == null || KTInputManager.Instance.GetCurrentSelectable().Parent == KTInputManager.Instance.RootSelectable) && !KTInputManager.Instance.IsMotionControlMode()) { KTInputManager.Instance.SelectRootDefault(); } if (KTInputManager.Instance.IsMotionControlMode()) { KTInputManager.Instance.SelectableManager.EnableMotionControls(); } yield return(new WaitForSeconds(1.0f)); GetNextBomb(); PropertyInfo roundStartedProperty = typeof(GameplayState).GetProperty("RoundStarted", BindingFlags.Instance | BindingFlags.Public); roundStartedProperty.SetValue(gameplayState, true, null); FieldInfo paceMakerField = typeof(GameplayState).GetField("paceMaker", BindingFlags.Instance | BindingFlags.NonPublic); ((PaceMaker)paceMakerField.GetValue(gameplayState)).StartRound(gameplayState.Mission); }