private void ApplyNewResolution() { Resolution _newResolution = Screen.resolutions[selectedResolutionIndex]; Screen.SetResolution(_newResolution.width, _newResolution.height, toggleFullScreen ? toggleFullScreen.isOn : true); TDS_GameManager.SetResolution(_newResolution); }
private void Awake() { if (!Instance) { Instance = this; } else { Destroy(this); } if (!Application.isEditor) { Application.wantsToQuit += QuitSystem; } InGamePlayers.Add(PlayerCharacter.BeardLady, false); InGamePlayers.Add(PlayerCharacter.FatLady, false); InGamePlayers.Add(PlayerCharacter.FireEater, false); InGamePlayers.Add(PlayerCharacter.Juggler, false); }
/// <summary> /// Triggers this event. /// </summary> /// <returns></returns> public IEnumerator Trigger() { // If this event requires a specific player type and he's not in the game, just skip this event if (doRequireSpecificPlayerType && !TDS_LevelManager.Instance.AllPlayers.Any(p => p.PlayerType == playerType)) { yield break; } // Wait for delay yield return(new WaitForSeconds(delay)); switch (eventType) { // Activate UI curtains case CustomEventType.ActivateCurtains: TDS_UIManager.Instance.SwitchCurtains(true); break; // Make a camera movement case CustomEventType.CameraMovement: yield return(TDS_Camera.Instance.LookTarget(eventTransform.position.x, eventTransform.position.y, eventTransform.position.z, cameraWaitTime, eventFloat)); break; // Desactivate the current information box case CustomEventType.DesactiveInfoBox: if (doRequireSpecificPlayerType) { TDS_RPCManager.Instance?.RPCPhotonView.RPC("CallMethodOnline", TDS_LevelManager.Instance.AllPlayers.ToList().Where(p => p.PlayerType == playerType).Select(p => p.photonView.owner).First(), TDS_RPCManager.GetInfo(TDS_UIManager.Instance.photonView, TDS_UIManager.Instance.GetType(), "DesactivateDialogBox") , new object[] { }); } else { TDS_RPCManager.Instance?.RPCPhotonView.RPC("CallMethodOnline", PhotonTargets.All, TDS_RPCManager.GetInfo(TDS_UIManager.Instance.photonView, TDS_UIManager.Instance.GetType(), "DesactivateDialogBox") , new object[] { }); } break; // Display a message in an information box case CustomEventType.DisplayInfoBox: // Activate the info box for the requested player or for everyone if (doRequireSpecificPlayerType) { TDS_RPCManager.Instance?.RPCPhotonView.RPC("CallMethodOnline", TDS_LevelManager.Instance.AllPlayers.ToList().Where(p => p.PlayerType == playerType).Select(p => p.photonView.owner).First(), TDS_RPCManager.GetInfo(TDS_UIManager.Instance.photonView, TDS_UIManager.Instance.GetType(), "ActivateDialogBox") , new object[] { TDS_GameManager.GetDialog(eventString)[0] }); } else { TDS_RPCManager.Instance?.RPCPhotonView.RPC("CallMethodOnline", PhotonTargets.All, TDS_RPCManager.GetInfo(TDS_UIManager.Instance.photonView, TDS_UIManager.Instance.GetType(), "ActivateDialogBox") , new object[] { TDS_GameManager.GetDialog(eventString)[0] }); } break; // Freeze local player case CustomEventType.FreezePlayerForCutscene: TDS_GameManager.IsInCutscene = true; TDS_UIManager.Instance.ActivateCutsceneBlackBars(); if (!PhotonNetwork.offlineMode) { TDS_LevelManager.Instance.LocalPlayer.FreezePlayer(); } else { foreach (TDS_Player _player in TDS_LevelManager.Instance.AllPlayers) { _player.FreezePlayer(); } } break; // Instantiate a prefab case CustomEventType.Instantiate: GameObject _object = Object.Instantiate(prefab, eventTransform.position, eventTransform.rotation); _object.transform.SetParent(eventTransform, true); break; // Instantiate with Photon case CustomEventType.InstantiatePhoton: PhotonNetwork.Instantiate(prefab.name, eventTransform.position, eventTransform.rotation, 0); break; // Makes a cool fade before displaying loading screen, and loading next level case CustomEventType.LoadNextLevel: if (!PhotonNetwork.isMasterClient) { yield break; } if (!PhotonNetwork.offlineMode) { TDS_SceneManager.Instance.PrepareOnlineSceneLoading(TDS_GameManager.CurrentSceneIndex + 1, (int)UIState.InGame); } else { TDS_SceneManager.Instance.PrepareSceneLoading(TDS_GameManager.CurrentSceneIndex + 1, (int)UIState.InGame); } yield return(new WaitForSeconds(1f)); if (!PhotonNetwork.offlineMode) { TDS_LevelManager.Instance.LocalPlayer.FreezePlayer(); } else { foreach (TDS_Player _player in TDS_LevelManager.Instance.AllPlayers) { _player.FreezePlayer(); } } break; // Moves the local player around a point case CustomEventType.MovePlayerAroundPoint: if (!PhotonNetwork.offlineMode) { TDS_LevelManager.Instance.LocalPlayer.GoAround(eventTransform.position, false); } else { foreach (TDS_Player _player in TDS_LevelManager.Instance.AllPlayers) { _player.GoAround(eventTransform.position, false); } } break; // Triggers a particular quote of the Narrator case CustomEventType.Narrator: TDS_LevelManager.Instance.PlayNarratorQuote(quote); break; // Plays a new music ! case CustomEventType.PlayMusic: TDS_SoundManager.Instance.PlayMusic((Music)eventInt, eventFloat); break; // Remove UI curtains case CustomEventType.RemoveCurtains: TDS_UIManager.Instance.SwitchCurtains(false); break; // Switch UI arrow case CustomEventType.SwitchArrow: TDS_UIManager.Instance.SwitchArrow(); yield return(new WaitForSeconds(2.5f)); TDS_UIManager.Instance.SwitchArrow(); break; // Unfreeze local player case CustomEventType.UnfreezePlayerFromCutscene: TDS_GameManager.IsInCutscene = false; TDS_UIManager.Instance.DesactivateCutsceneBlackBars(); if (!PhotonNetwork.offlineMode) { TDS_LevelManager.Instance.LocalPlayer.UnfreezePlayer(); } else { foreach (TDS_Player _player in TDS_LevelManager.Instance.AllPlayers) { _player.UnfreezePlayer(); } } break; // Just invoke a Unity Event, that's it case CustomEventType.UnityEventLocal: unityEvent.Invoke(); break; // Just invoke a Unity Event, that's it case CustomEventType.UnityEventOnline: unityEvent.Invoke(); break; // Wait for an action of the local player case CustomEventType.WaitForAction: switch (actionType) { case WaitForAction.UseRabbit: TDS_WhiteRabbit.OnUseRabbit += StopWaiting; TDS_WhiteRabbit.OnLoseRabbit += StopWaiting; break; default: break; } while (IsWaiting) { yield return(null); } switch (actionType) { case WaitForAction.UseRabbit: TDS_WhiteRabbit.OnUseRabbit -= StopWaiting; TDS_WhiteRabbit.OnLoseRabbit -= StopWaiting; break; default: break; } IsWaiting = true; break; // Wait that everyone is in the zone case CustomEventType.WaitForEveryone: if (TDS_Camera.Instance.CurrentBounds.XMin < eventTransform.position.x) { TDS_Camera.Instance.OnXMinBoundChanged += CheckBound; bool _doSwitch = TDS_LevelManager.Instance.AllPlayers.Length > 1; // Switch waiting players panel if playing with your folks if (_doSwitch) { TDS_RPCManager.Instance?.RPCPhotonView.RPC("CallMethodOnline", PhotonTargets.All, TDS_RPCManager.GetInfo(TDS_UIManager.Instance.photonView, typeof(TDS_UIManager), "SwitchWaitingPanel"), new object[] { }); yield return(new WaitForSeconds(.25f)); } // Wait patiently while (IsWaiting) { yield return(null); } if (_doSwitch) { TDS_RPCManager.Instance?.RPCPhotonView.RPC("CallMethodOnline", PhotonTargets.All, TDS_RPCManager.GetInfo(TDS_UIManager.Instance.photonView, typeof(TDS_UIManager), "SwitchWaitingPanel"), new object[] { }); } } break; // Wait that an object with a particular tag dies case CustomEventType.WaitForObjectDeath: TDS_Damageable.OnDieWithObject += CheckObjectDeath; while (IsWaiting) { yield return(null); } TDS_Damageable.OnDieWithObject -= CheckObjectDeath; break; // Wait that a certain amount of spawn area are desactivated case CustomEventType.WaitForSpawnAreaDesactivation: TDS_SpawnerArea.OnOneAreaDesactivated += DeductSpawnArea; while (IsWaiting) { yield return(null); } TDS_SpawnerArea.OnOneAreaDesactivated -= DeductSpawnArea; break; // Nobody here but us chicken default: break; } yield break; }