using System; using System.Collections; using System.Collections.Generic; using BitStrap; using UltimateWater; using UnityEngine; using UnityEngine.Rendering.PostProcessing; using UnityEngine.SceneManagement; using UnityStandardAssets.ImageEffects; using uNature.Core.FoliageClasses; using uNature.Core.Utility; public class GameController : MonoBehaviour { [Serializable] public class TerrainPreset { public ReliefTerrain reliefTerrain; public ReliefTerrainPresetHolder presetNormal; public ReliefTerrainPresetHolder presetWinter; public Texture2D[] splatNormal = new Texture2D[2]; public Texture2D[] splatWinter = new Texture2D[2]; } private static GameController instance; public HUDManager hudManagerPrefab; [HideInInspector] public GlobalSettings globalSettings; [HideInInspector] public HUDManager hudManager; [HideInInspector] public FishingPlayer fishingPlayer; [HideInInspector] public WeatherSettings weatherSettings; [HideInInspector] public WeatherLevelManager weatherLevelManager; [HideInInspector] public LevelSoundManager levelSoundManager; [HideInInspector] public UniStormWeatherSystem_C uniStormSystem; [HideInInspector] public FisheryEditor_Game fisheryEditorGame; [HideInInspector] public TournamentManager tournamentManager; [HideInInspector] public MultiplayerManager multiplayerManager; [HideInInspector] public JunkManager junkManager; public WaterEffectsManager waterEffectsManager; public Material waterInteractiveMaterial; public LevelsManager.FisheryDefinition fisheryDefinition; [Header("Players")] public FishingPlayer normalPlayer; public FishingPlayer icePlayer; public FishingPlayer normalPlayerVR; public FishingPlayer icePlayerVR; [ReadOnly] public Water water; [ReadOnly] public WaterParameters waterParameters; [Space(10f)] public GameObject fishSpawnersParent; [HideInInspector] public List fishSpawners = new List(); public Vector2 fishSpawnersDisabledDelay = new Vector2(0.8f, 1.2f); public Vector2 fishSpawnersEnabledDelay = new Vector2(0.4f, 0.7f); [ReadOnly] public List fishMaterials = new List(); public List fishTransparentMaterials = new List(); public Shader fishShaderNormal; public Shader fishShaderHunter; public Color hunterMaterialColor = Color.yellow; public AnimationCurve hunterMaterialCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); [Space(10f)] public int fisheryId; public int fisheryIceId = -1; public string startMessage = string.Empty; public bool allowFishing = true; public bool fightTest; public bool jumpTest; public bool tireAtCatch; public bool alwaysWantBait; public bool alwaysWantBaitSize; public bool alwaysWantBaitExceptSize; public bool hideWater; public bool thickLine; public bool useFishRotationDuringFight = true; public bool optimalRopeGenerator = true; public bool fishingNetTest; public bool manualFishingNet = true; public bool stopBaitOnWater; public float fishRotateTweenSpeed = 1f; public float youngFishChance = 0.15f; public float youngSizeFactor = 0.2f; public bool useFastRopeDraw = true; public bool quickCheckBehaviorDistance; [Space(10f)] public bool oceanLevel; public bool endlessWaterArea = true; public string harbourScene = string.Empty; public bool isTournament; public bool isMultiplayer; public bool multiAnyLanguage; public bool multiPrivateRoom; public string multiRoomName = string.Empty; [Space(10f)] public GameObject playerPrefab; public GameObject[] spawnPoints; public List quickJumpPoints = new List(); private int currentQuickJump; public int fisheryExitCounter; public float fisheryExitTimer; public float fisheryExitDelay = 5f; public float fisheryExitBoatDelay = 10f; [ReadOnly] public bool resetingPlayer; private BoatSimulator[] allBoats; [HideInInspector] public ReflectionProbe reflectionProbe; public ReflectionProbe[] reflectionProbes; [HideInInspector] public bool isInitialized; [Space(10f)] public bool spawnAllAtStart = true; public bool showFishIndicator = true; [ReadOnly] public int fishCount; public float fishSpawnersAmount = 0.5f; public float fishSizeMultiplier = 1f; public float fishViewDistance = 25f; public float fishViewCurrentDistance; [ReadOnly] public int spawnersCount; public List fishFromDLC = new List(); public float fishSpawnersDLCAmount = 0.3f; public List fishSpawnersDLC = new List(); public bool newSpawnersDeactivateMethod; private bool firstUpdate = true; [Space(10f)] public float vrLodBias = 0.6f; public float vrLodBiasIce = 0.6f; public int shadowDistance = 150; public int shadowDistanceWinter = 150; public int shadowMaxCascades = 2; public int shadowMaxCascadesWinter = 2; public float shadow2CascadeSplit = 0.11f; public Vector3 shadow4CascadeSplit = new Vector3(0.08f, 0.13f, 0.467f); public ShadowResolution maxShadowResolution = ShadowResolution.High; [HideInInspector] public GameObject[] grassObjects; [HideInInspector] public RefreshVRQuality[] refreshVRQualityAll; public List grassIds = new List(); public Vector2 unityGrassDistance = Vector2.zero; public int vrGrassDistance = 30; public float vrGrassDensity = 0.2f; public List testHideObjects = new List(); public List testHideObjects2 = new List(); public List normalObjects = new List(); public List iceObjects = new List(); public List iceFishSpawners = new List(); public List fishEscapeColliders = new List(); [Header("Ice Fishing")] public bool iceLevel; public Water normalWater; public Water iceWater; public List watersToSwitch = new List(); [ReadOnly] public AzureSky_Controller azureSkyController; public AzureSky_Controller azureSkyController_NORMAL; public AzureSky_Controller azureSkyController_WINTER; [HideInInspector] public UltimateWater.WaterRipples waterRipples; public GameObject iceTop; public GameObject iceBottom; [Header("Terrains")] public List terrainPresets = new List(); public List terrainsNormal = new List(); public List terrainsIce = new List(); public List terrainsMeshTest = new List(); [ReadOnly] public GameObject[] nightObjects; [ReadOnly] public bool isNight; [ReadOnly] public bool cursorVisible; [Header("Use new code params")] [Space(10f)] public bool useNewBaitSizeCheck; public bool useFishesPool; public bool useConstTaste; public float constTaste = -1f; public List reliefTerrainsToChangeTiles = new List(); public Vector2 tilesSize = new Vector2(3f, 3f); public static GameController Instance { get { return instance; } } private GameController() { } private void Awake() { if (instance == null) { instance = this; } if ((bool)GlobalSettings.Instance) { if (GlobalSettings.Instance.turnOnMyCheats) { fightTest = true; alwaysWantBait = true; } else { fightTest = false; thickLine = false; alwaysWantBait = false; alwaysWantBaitSize = false; alwaysWantBaitExceptSize = false; } fishingNetTest = false; fisheryDefinition = GlobalSettings.Instance.levelsManager.GetCurrentFishery(); GlobalSettings.Instance.equipmentManager.CheckStartEquipment(); if (VRManager.IsVROn()) { VRControllersManager.Instance.ShowHandsQuick(VRControllersManager.Instance.handsVisible); } } Debug.Log("---------------------- ENTER LEVEL ----------------------"); Debug.Log(SceneManager.GetActiveScene().name); AudioController.PauseMusic(3f); hudManager = UnityEngine.Object.Instantiate(hudManagerPrefab); hudManager.transform.parent = base.transform.parent; fisheryEditorGame = UnityEngine.Object.FindObjectOfType(); if ((bool)fisheryEditorGame) { fisheryEditorGame.Initialize(); } else { InitializeAwake(); } if (!GlobalSettings.Instance) { float num = (QualitySettings.shadowDistance = ((!iceLevel) ? shadowDistance : shadowDistanceWinter)); QualitySettings.shadowCascades = ((!iceLevel) ? shadowMaxCascades : shadowMaxCascadesWinter); if (QualitySettings.shadowCascades == 4) { Vector3 zero = Vector3.zero; float num3 = 150f / num; zero = Instance.shadow4CascadeSplit * num3; QualitySettings.shadowCascade4Split = zero; } else if (QualitySettings.shadowCascades == 2) { QualitySettings.shadowCascade2Split = shadow2CascadeSplit; } } if (!Application.isEditor) { } } private void Start() { if (fisheryEditorGame == null) { InitializeStart(); } } private void OnEnable() { if ((bool)LoadingManager.Instance) { LoadingManager.Instance.SpawnFish(); } LoadingManager.spawnFish = true; if (iceLevel) { for (int i = 0; i < terrainsNormal.Count; i++) { UnityEngine.Object.DestroyImmediate(terrainsNormal[i], true); } for (int j = 0; j < terrainsIce.Count; j++) { terrainsIce[j].SetActive(true); } } else { for (int k = 0; k < terrainsNormal.Count; k++) { terrainsNormal[k].SetActive(true); } for (int l = 0; l < terrainsIce.Count; l++) { UnityEngine.Object.DestroyImmediate(terrainsIce[l], true); } } } private void OnDestroy() { LeanTween.cancelAll(); UpdateHunterFishMaterials(false, 0f); ResetHunterFishMaterials(); UpdateTransparentFishMaterials(false); if ((bool)waterParameters) { waterParameters.Reset(); } } private void OnApplicationFocus(bool hasFocus) { if (Application.isEditor || hasFocus || !hudManager || hudManager.currentHudState == HUDManager.HUDState.PAUSE || !isMultiplayer || !isTournament) { } if (!Application.isEditor) { if (!hasFocus) { cursorVisible = Cursor.visible; return; } Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = cursorVisible; Cursor.lockState = ((!cursorVisible) ? CursorLockMode.Locked : CursorLockMode.None); } } public void InitializeAwake() { globalSettings = GlobalSettings.Instance; fishViewCurrentDistance = fishViewDistance; weatherLevelManager = GetComponent(); weatherLevelManager.gameController = this; if ((bool)globalSettings) { globalSettings.weatherSettings.GenerateRandomWeather(); weatherSettings = globalSettings.weatherSettings; if (!fisheryEditorGame) { iceLevel = globalSettings.levelsManager.GetCurrentFishery().iceLevel; } manualFishingNet = globalSettings.playerSettings.manualFishingNet; globalSettings.equipmentManager.ResetChanged(); } Debug.Log("iceLevel: " + iceLevel); if (spawnPoints.Length == 0) { GameObject[] array = MultiTags.FindGameObjectsWithMultiTag("SPAWN_POINT"); spawnPoints = new GameObject[2]; spawnPoints[0] = array[0]; spawnPoints[1] = array[0]; } uniStormSystem = UnityEngine.Object.FindObjectOfType(); if ((bool)azureSkyController_NORMAL && !iceLevel) { azureSkyController_NORMAL.gameObject.SetActive(true); azureSkyController_WINTER.gameObject.SetActive(false); azureSkyController = azureSkyController_NORMAL; } else if ((bool)azureSkyController_WINTER && iceLevel) { azureSkyController_NORMAL.gameObject.SetActive(false); azureSkyController_WINTER.gameObject.SetActive(true); azureSkyController = azureSkyController_WINTER; } else { azureSkyController = UnityEngine.Object.FindObjectOfType(); } levelSoundManager = azureSkyController.GetComponent(); levelSoundManager.Initialize(); if ((bool)uniStormSystem) { uniStormSystem.gameController = Instance; } tournamentManager = GetComponent(); junkManager = GetComponent(); nightObjects = MultiTags.FindGameObjectsWithMultiTag("NIGHT_OBJECT"); grassObjects = MultiTags.FindGameObjectsWithMultiTag("GRASS"); refreshVRQualityAll = UnityEngine.Object.FindObjectsOfType(); if (VRManager.IsVROn()) { fishingPlayer = ((!iceLevel) ? normalPlayerVR : icePlayerVR); } else { fishingPlayer = ((!iceLevel) ? normalPlayer : icePlayer); } normalPlayer.gameObject.SetActive(fishingPlayer == normalPlayer); if ((bool)icePlayer) { icePlayer.gameObject.SetActive(fishingPlayer == icePlayer); } normalPlayerVR.gameObject.SetActive(fishingPlayer == normalPlayerVR); if ((bool)icePlayerVR) { icePlayerVR.gameObject.SetActive(fishingPlayer == icePlayerVR); } if ((bool)fishingPlayer) { fishingPlayer.gameObject.SetActive(true); } else if (fishingPlayer == null && (bool)playerPrefab) { fishingPlayer = UnityEngine.Object.Instantiate(playerPrefab, spawnPoints[iceLevel ? 1 : 0].transform.position, spawnPoints[iceLevel ? 1 : 0].transform.rotation).GetComponent(); } fishingPlayer.transform = fishingPlayer.GetComponent(); if ((bool)fisheryEditorGame) { fisheryEditorGame.fakeAudioListener.gameObject.SetActive(false); } if (oceanLevel || FishingPlayer.playerWasInBoat) { BoatSimulator boatSimulator = UnityEngine.Object.FindObjectOfType(); fishingPlayer.startTransform = boatSimulator.enterPosition; } else { fishingPlayer.startTransform = spawnPoints[iceLevel ? 1 : 0].transform; } allBoats = UnityEngine.Object.FindObjectsOfType(); if ((bool)GlobalSettings.Instance && !GlobalSettings.Instance.turnOnCheats) { showFishIndicator = false; fishingPlayer.ufpsWeaponCamera.cullingMask = Utilities.RemoveFromLayerMask(fishingPlayer.ufpsWeaponCamera.cullingMask, "Debug"); } junkManager.fishingPlayer = fishingPlayer; if (spawnPoints != null) { GameObject[] array2 = spawnPoints; foreach (GameObject gameObject in array2) { gameObject.GetComponent().HideSpawnPoint(); } } water = UnityEngine.Object.FindObjectOfType(); CreateWaterCollider(); if ((bool)normalWater) { normalWater.gameObject.SetActive(!iceLevel); } if ((bool)iceWater) { iceWater.gameObject.SetActive(iceLevel); } if ((bool)normalWater) { water = ((!iceLevel) ? normalWater : iceWater); } if ((bool)water) { } if ((bool)LoadingManager.Instance) { LoadingManager.Instance.ShowLoadingFishText(); } if (!iceLevel) { for (int j = 0; j < iceFishSpawners.Count; j++) { UnityEngine.Object.DestroyImmediate(iceFishSpawners[j].gameObject); iceFishSpawners[j] = null; } iceFishSpawners.Clear(); } GameObject[] array3 = MultiTags.FindGameObjectsWithMultiTag("FISH_SPAWNER"); if (array3 != null) { if (fishFromDLC.Count > 0) { if ((bool)GlobalSettings.Instance && !GlobalSettings.Instance.fishManager.GetFishDefinition(fishFromDLC[0].species).isAvailableFromDLCs) { Debug.LogError("DLC not available: " + GlobalSettings.Instance.fishManager.GetFishDefinition(fishFromDLC[0].species).fromDLC[0]); } else { fishSpawnersDLC.Clear(); GameObject[] array4 = array3; foreach (GameObject gameObject2 in array4) { fishSpawnersDLC.Add(gameObject2.GetComponent()); } fishSpawnersDLC.RandomizeList(); int num = Mathf.RoundToInt((float)fishSpawnersDLC.Count * fishSpawnersDLCAmount); fishSpawnersDLC.RemoveRange(num, fishSpawnersDLC.Count - num); foreach (FishSpawner item in fishSpawnersDLC) { item.fishPrefabsDLC.Clear(); foreach (Fish item2 in fishFromDLC) { item.fishPrefabsDLC.Add(item2); } } } } GameObject[] array5 = array3; foreach (GameObject gameObject3 in array5) { FishSpawner component = gameObject3.GetComponent(); if (component.alwaysSpawn) { component.SpawnAllFish(); component.InitializeAllFish(); component.CheckBehaviorDistance(); } else { fishSpawners.Add(component); } } } for (int m = 0; m < fishSpawners.Count; m++) { FishSpawner value = fishSpawners[m]; int index = UnityEngine.Random.Range(m, fishSpawners.Count); fishSpawners[m] = fishSpawners[index]; fishSpawners[index] = value; } spawnersCount = Mathf.CeilToInt(fishSpawnersAmount * (float)fishSpawners.Count); if ((bool)GlobalSettings.Instance) { spawnersCount = Mathf.CeilToInt((float)spawnersCount * GlobalSettings.Instance.renderSettings.GetQualityDefinition().fishSpawnersAmount); } Debug.Log("spawnersCount: " + spawnersCount); for (int n = 0; n < fishSpawners.Count; n++) { if (n < spawnersCount) { if (spawnAllAtStart || fishSpawners[n].spawnAtStart) { fishSpawners[n].SpawnAllFish(); } fishCount += fishSpawners[n].count; } else { fishSpawners[n].gameObject.SetActive(false); } } if (fishSpawnersParent == null && fishSpawners.Count > 0) { fishSpawnersParent = fishSpawners[0].transform.root.gameObject; } GetAvailableFishMaterials(); reflectionProbes = UnityEngine.Object.FindObjectsOfType(); } public void InitializeStart() { if ((bool)globalSettings) { isMultiplayer = globalSettings.levelsManager.isMultiplayer; } multiplayerManager = MultiplayerManager.Instance; if (isMultiplayer) { multiplayerManager.Initialize(); } if ((bool)globalSettings && !fisheryEditorGame) { isTournament = globalSettings.levelsManager.isTournament; } if (isTournament) { tournamentManager.Initialize(); } if (hudManager == null) { hudManager = HUDManager.Instance; } hudManager.gameController = Instance; hudManager.fishingPlayer = fishingPlayer; hudManager.ResetHUD(); if ((bool)MapController.Instance) { MapController.Instance.Initialize(); } fishingPlayer.Initialize(); fishingPlayer.unSeeker.enabled = true; if (VRManager.IsVROn() && VRManager.GetControllerType(true) == OVRInput.OpenVRController.OculusTouch) { fishingPlayer.waterCamera.RenderMode = WaterRenderMode.DefaultQueue; fishingPlayer.underwaterWaterCamera.RenderMode = WaterRenderMode.DefaultQueue; } if ((bool)globalSettings) { ShowBaitIndicator(globalSettings.playerSettings.showBaitIndicator); } if ((bool)hudManager.kgfMapSystem) { hudManager.kgfMapSystem.SetTarget(fishingPlayer.gameObject); } weatherLevelManager.UpdateWeather(true); BoatSimulator[] array = UnityEngine.Object.FindObjectsOfType(); for (int i = 0; i < array.Length; i++) { array[i].Initialize(); } if ((bool)water) { Utilities.SetLayerRecursively(water.gameObject, LayerMask.NameToLayer("Water")); if ((bool)fishingPlayer.rain.GetComponent()._System) { fishingPlayer.rain.GetComponent().Initialize(water); } waterParameters = water.GetComponent(); waterParameters.water = water; waterParameters.Initialize(); waterParameters.Reset(); } waterEffectsManager.Initialize(); ShowIceBottom(false); for (int j = 0; j < fishSpawners.Count; j++) { fishSpawners[j].InitializeAllFish(); } int num = 0; int[] array2 = new int[5]; for (int k = 0; k < fishSpawners.Count; k++) { if (fishSpawners[k].gameObject.activeSelf) { foreach (Fish fish in fishSpawners[k].fishList) { array2[fish.baitSize - 1]++; } } num += fishSpawners[k].count; } num = Mathf.RoundToInt((float)num * fishSpawnersAmount); Debug.Log("fishSizes: " + array2.ToStringFull() + " total: " + num); for (int l = 0; l < normalObjects.Count; l++) { if ((bool)normalObjects[l]) { normalObjects[l].SetActive(!iceLevel); } } for (int m = 0; m < iceObjects.Count; m++) { if ((bool)iceObjects[m]) { iceObjects[m].SetActive(iceLevel); } } if ((bool)fisheryEditorGame) { fisheryEditorGame.LateInitialize(); } UpdateTerrains(); StartCoroutine(Utilities.CleanUp()); Utilities.CheckTextureMemory(); if (startMessage != string.Empty) { hudManager.ShowMessage(startMessage, 15f); } if (VRManager.IsVROn()) { if (!VRManager.Instance.IsControllersInput()) { VRManager.Instance.Recenter(); } OVRInput.UpdateXRControllerNodeIds(true); } if ((bool)globalSettings) { } isInitialized = true; } private void Update() { if ((bool)fisheryEditorGame) { if (fisheryEditorGame.m_isLoading) { return; } if (!isInitialized) { InitializeAwake(); InitializeStart(); return; } } if (firstUpdate && isInitialized) { RenderAllProbes(); if ((bool)globalSettings) { globalSettings.renderSettings.OnSceneChanged(); globalSettings.renderSettings.RefreshAll(); } UpdateNightObjects(true); UpdateHunterFishMaterials(false, 0f); hudManager.ShowRadar(false); if ((bool)water) { } firstUpdate = false; LeanTween.delayedCall(2f, (Action)delegate { }); } else { if ((bool)BugReporter.Instance && BugReporter.Instance.isVisible) { return; } if (fisheryDefinition != null) { LevelsManager.FisheryStats fisheryStats = fisheryDefinition.fisheryStats; fisheryStats.timeSpent = (float)fisheryStats.timeSpent + Time.deltaTime; } if (isMultiplayer) { multiplayerManager.MakeUpdate(); } if (isTournament) { tournamentManager.MakeUpdate(); } if ((bool)junkManager) { junkManager.MakeUpdate(); } if (fisheryExitCounter > 0) { if (fisheryExitTimer > 0f) { fisheryExitTimer -= Time.deltaTime; } if (fisheryExitTimer <= 0f && !resetingPlayer) { fisheryExitTimer = 0f; fisheryExitCounter = 0; if (oceanLevel) { hudManager.PortReturn(); } else if ((bool)fishingPlayer.boatSimulator) { StartCoroutine(fishingPlayer.EnterBoat(false, fishingPlayer.boatSimulator)); } else { StartCoroutine(ResetPlayer(true)); } Debug.Log("ResetPlayer fisheryExit " + fisheryExitCounter + " " + fisheryExitTimer); hudManager.infoFisheryExit.SetActive(false); } hudManager.infoFisheryExitTimer.text = string.Empty + Mathf.RoundToInt(fisheryExitTimer); } if (!fishingPlayer.boatSimulator || fishingPlayer.boatSimulator.currentState == BoatSimulator.BoatState.PLAYER_DRIVING) { } if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) { if (Input.GetKeyDown(KeyCode.KeypadPlus) || Input.GetKeyDown(KeyCode.Plus) || Input.GetKeyDown(KeyCode.Equals) || Input.GetKeyDown(KeyCode.Period)) { ChangeHour(true); } if (Input.GetKeyDown(KeyCode.KeypadMinus) || Input.GetKeyDown(KeyCode.Minus) || Input.GetKeyDown(KeyCode.Underscore) || Input.GetKeyDown(KeyCode.Comma)) { ChangeHour(false); } } if ((!isTournament || !tournamentManager.tournamentActive) && UtilitiesInput.GetButtonDown("FREEZE_GAME") && hudManager.currentHudState == HUDManager.HUDState.GAME) { Time.timeScale = ((Time.timeScale != 0f) ? 0f : 1f); } if (GlobalSettings.Instance == null || ((bool)GlobalSettings.Instance && GlobalSettings.Instance.turnOnCheats)) { if (Input.GetKeyDown(KeyCode.Tab)) { Cursor.lockState = (Cursor.visible ? CursorLockMode.Locked : CursorLockMode.None); Cursor.visible = !Cursor.visible; fishingPlayer.ufpsInput.AllowGameplayInput = !Cursor.visible; if (fishingPlayer.currentState != FishingPlayer.PlayerState.NORMAL && fishingPlayer.currentState != FishingPlayer.PlayerState.FISHING) { fishingPlayer.ufpsInput.AllowGameplayInput = false; } fishingPlayer.ufpsCamera.freezeInput = Cursor.visible; } if (Input.GetKeyDown(KeyCode.F11)) { showFishIndicator = !showFishIndicator; if (showFishIndicator) { fishingPlayer.ufpsWeaponCamera.cullingMask = Utilities.AddToLayerMask(fishingPlayer.ufpsWeaponCamera.cullingMask, "Debug"); } else { fishingPlayer.ufpsWeaponCamera.cullingMask = Utilities.RemoveFromLayerMask(fishingPlayer.ufpsWeaponCamera.cullingMask, "Debug"); } } if (Input.GetKey(KeyCode.LeftControl)) { if (Input.GetKeyDown(KeyCode.Space) && fishingPlayer.currentHands.bait.isOnWater) { fishingPlayer.currentHands.bait.rigidbody.isKinematic = true; } if (Input.GetKeyDown(KeyCode.KeypadMultiply)) { weatherLevelManager.SetPrecipitation((!(weatherLevelManager.GetPercipitation() > 0f)) ? 1f : 0f); } if (Input.GetKeyDown(KeyCode.Keypad7)) { Terrain[] array = UnityEngine.Object.FindObjectsOfType(); Terrain[] array2 = array; foreach (Terrain terrain in array2) { terrain.enabled = !terrain.enabled; } } if (Input.GetKeyDown(KeyCode.Keypad9)) { fishingPlayer.currentHands.reel.maxLineLength = 1000f; } if (Input.GetKeyDown(KeyCode.Keypad4)) { foreach (GameObject item in terrainsNormal) { if (item != null) { Terrain component = item.GetComponent(); if (component != null) { component.drawTreesAndFoliage = !component.drawTreesAndFoliage; } } } if (FoliageCore_MainManager.instance == null) { return; } if (FoliageCore_MainManager.instance.density == 0f) { FoliageCore_MainManager.instance.density = 1f; } else { FoliageCore_MainManager.instance.density = 0f; } } if (Input.GetKeyDown(KeyCode.Keypad5)) { if ((bool)fishSpawnersParent) { fishSpawnersParent.SetActive(!fishSpawnersParent.activeSelf); } else { for (int num2 = 0; num2 < fishSpawners.Count; num2++) { fishSpawners[num2].gameObject.SetActive(!fishSpawners[num2].gameObject.activeSelf); } } } if (Input.GetKeyDown(KeyCode.Keypad6) && (bool)water) { water.gameObject.SetActive(!water.gameObject.activeSelf); } if (Input.GetKeyDown(KeyCode.KeypadDivide)) { Debug.LogError("Fish count: " + fishSpawnersParent.GetComponentsInChildren(false).Length + " / " + fishSpawnersParent.GetComponentsInChildren(true).Length); } if (Input.GetKeyDown(KeyCode.Keypad8)) { if (Time.fixedDeltaTime == 0.02f) { Time.fixedDeltaTime = 0.03f; } else if (Time.fixedDeltaTime == 0.03f) { Time.fixedDeltaTime = 0.04f; } else { Time.fixedDeltaTime = 0.02f; } } } if (Input.GetKey(KeyCode.LeftControl)) { if (Input.GetKeyDown(KeyCode.Keypad1) || Input.GetKeyDown(KeyCode.U)) { SwitchScreenshotMode(!hudManager.gameObject.activeSelf); } if (Input.GetKeyDown(KeyCode.Keypad2)) { fishingPlayer.currentHands.HideHandsCamera(fishingPlayer.isHandsCameraVisible); } if (Input.GetKeyDown(KeyCode.Keypad3)) { foreach (GameObject testHideObject in testHideObjects) { if ((bool)testHideObject) { testHideObject.SetActive(!testHideObject.activeSelf); } } } if (Input.GetKeyDown(KeyCode.T)) { weatherLevelManager.ChangeTimeScale(); } if (Input.GetKeyDown(KeyCode.X)) { fightTest = !fightTest; fishingPlayer.currentHands.FLC.ropeStretchThreshold = ((!fightTest) ? 0f : 5f); } if (Input.GetKeyDown(KeyCode.N) || Input.GetKeyDown(KeyCode.Space)) { alwaysWantBait = !alwaysWantBait; } if (Input.GetKeyDown(KeyCode.F)) { bool flag = !fishingPlayer.freeCamera.enabled; fishingPlayer.ChangeFreeCamera(flag); SwitchScreenshotMode(!flag); WaterProjectSettings.Instance.ClipWaterCameraRange = !flag; } if (Input.GetKeyDown(KeyCode.Space) && fishingPlayer.freeCamera.enabled) { fishingPlayer.freeCamera.AttachToTarget(GetRandomFish().transform); fishingPlayer.ufpsWeaponCamera.cullingMask = Utilities.RemoveFromLayerMask(fishingPlayer.ufpsWeaponCamera.cullingMask, "Debug"); } if (Input.GetKeyDown(KeyCode.UpArrow)) { Fish.useAvoidance = !Fish.useAvoidance; } if (Input.GetKeyDown(KeyCode.DownArrow)) { Fish.disableLogic = !Fish.disableLogic; } if (Input.GetKeyDown(KeyCode.RightArrow)) { Fish.disableLogic2 = !Fish.disableLogic2; } if (Input.GetKeyDown(KeyCode.LeftArrow)) { fishingPlayer.fishDistanceBehavior = ((fishingPlayer.fishDistanceBehavior != 150f) ? 150f : 70f); } if (Input.GetKeyDown(KeyCode.Space)) { fishingPlayer.fishDistanceBehaviorSphere.gameObject.SetActive(!fishingPlayer.fishDistanceBehaviorSphere.gameObject.activeSelf); } } else if (Input.GetKey(KeyCode.End)) { if (Input.GetKeyDown(KeyCode.Keypad1)) { quickCheckBehaviorDistance = !quickCheckBehaviorDistance; } if (Input.GetKey(KeyCode.PageDown)) { fishingPlayer.underwaterWaterCamera.RenderWaterDepth = !fishingPlayer.underwaterWaterCamera.RenderWaterDepth; fishingPlayer.underwaterWaterCamera.RenderVolumes = !fishingPlayer.underwaterWaterCamera.RenderVolumes; } if (Input.GetKeyDown(KeyCode.Keypad2)) { WaterCamera waterCamera = fishingPlayer.waterCamera; if (waterCamera.RenderMode == WaterRenderMode.DefaultQueue) { waterCamera.RenderMode = WaterRenderMode.ImageEffectForward; } else if (waterCamera.RenderMode == WaterRenderMode.ImageEffectForward) { waterCamera.RenderMode = WaterRenderMode.ImageEffectDeferred; } else { waterCamera.RenderMode = WaterRenderMode.DefaultQueue; } fishingPlayer.underwaterWaterCamera.RenderMode = fishingPlayer.waterCamera.RenderMode; } if (Input.GetKeyDown(KeyCode.Keypad3)) { foreach (GameObject item2 in testHideObjects2) { if ((bool)item2) { item2.SetActive(!item2.activeSelf); } } } if (Input.GetKeyDown(KeyCode.Keypad4)) { if (fishingPlayer.ufpsCamera.GetComponent().antialiasingMode == PostProcessLayer.Antialiasing.FastApproximateAntialiasing) { fishingPlayer.ufpsCamera.GetComponent().antialiasingMode = PostProcessLayer.Antialiasing.TemporalAntialiasing; } else if (fishingPlayer.ufpsCamera.GetComponent().antialiasingMode == PostProcessLayer.Antialiasing.TemporalAntialiasing) { fishingPlayer.ufpsCamera.GetComponent().antialiasingMode = PostProcessLayer.Antialiasing.None; } else { fishingPlayer.ufpsCamera.GetComponent().antialiasingMode = PostProcessLayer.Antialiasing.FastApproximateAntialiasing; } } if (Input.GetKeyDown(KeyCode.Keypad6)) { fishingPlayer.dustParticles.gameObject.SetActive(!fishingPlayer.dustParticles.gameObject.activeSelf); } if (Input.GetKeyDown(KeyCode.Keypad7)) { foreach (GameObject item3 in terrainsMeshTest) { if (item3 != null) { item3.SetActive(!item3.activeSelf); } } } if (Input.GetKeyDown(KeyCode.Keypad8)) { if (QualitySettings.shadowResolution == ShadowResolution.VeryHigh) { QualitySettings.shadowResolution = ShadowResolution.High; } else if (QualitySettings.shadowResolution == ShadowResolution.High) { QualitySettings.shadowResolution = ShadowResolution.Medium; } else if (QualitySettings.shadowResolution == ShadowResolution.Medium) { QualitySettings.shadowResolution = ShadowResolution.VeryHigh; } } } if (Input.GetKeyDown(KeyCode.F8)) { fishingPlayer.currentHands.ToggleArmRenderers(); } if (Input.GetKeyDown(KeyCode.F7)) { fishingPlayer.currentHands.ToggleVRArmRenderers(); } if (Input.GetKeyDown(KeyCode.Alpha0)) { fishingPlayer.currentHands.currentShirtMaterial++; if (fishingPlayer.currentHands.currentShirtMaterial >= fishingPlayer.currentHands.shirtMaterials.Count) { fishingPlayer.currentHands.currentShirtMaterial = 0; } fishingPlayer.currentHands.ChangeShirtMaterial(fishingPlayer.currentHands.currentShirtMaterial); } } if ((bool)water && hideWater) { water.gameObject.SetActive(false); } UpdateNightObjects(); weatherLevelManager.UpdateHourWeather(); } } private void LateUpdate() { } public void ChangeHour(bool inc) { if (((bool)fishingPlayer.fish || (isTournament && tournamentManager.tournamentActive)) && (!GlobalSettings.Instance || !GlobalSettings.Instance.turnOnCheats)) { return; } if (inc) { if ((bool)azureSkyController) { azureSkyController.TIME_of_DAY += 0.5f; } RenderAllProbes(); weatherLevelManager.ChangeWeather(true); } if (!inc) { if ((bool)azureSkyController) { azureSkyController.TIME_of_DAY -= 0.5f; } RenderAllProbes(); weatherLevelManager.ChangeWeather(true); } if ((bool)azureSkyController) { if (azureSkyController.TIME_of_DAY >= 24f) { azureSkyController.TIME_of_DAY = 0f; } if (azureSkyController.TIME_of_DAY < 0f) { azureSkyController.TIME_of_DAY = 23.9f; } } } public void RenderAllProbes() { for (int i = 0; i < reflectionProbes.Length; i++) { reflectionProbes[i].RenderProbe(); } } public void UpdateTerrains() { } public void UpdateNightObjects(bool init = false) { if (!azureSkyController) { return; } bool flag = weatherLevelManager.GetHour() < 5 || weatherLevelManager.GetHour() > 19; if ((bool)fishingPlayer.sunShafts) { fishingPlayer.sunShafts.enabled = weatherLevelManager.GetHour() >= 6 && weatherLevelManager.GetHour() <= 19; } if (flag == isNight && !init) { return; } if ((bool)azureSkyController && (bool)fishingPlayer.sunShafts) { fishingPlayer.sunShafts.sunTransform = azureSkyController.SunShaftTransform; } if (init && nightObjects != null) { for (int i = 0; i < nightObjects.Length; i++) { nightObjects[i].SetActive(false); } } isNight = flag; levelSoundManager.StartDay(!isNight, init); if (nightObjects != null) { for (int j = 0; j < nightObjects.Length; j++) { nightObjects[j].SetActive(flag); } } } public void CreateWaterCollider() { } public IEnumerator ResetPlayer(bool fade) { resetingPlayer = true; if (fade) { hudManager.FadeDark(1f, 0.3f); yield return new WaitForSeconds(0.3f); } if (fade) { yield return new WaitForSeconds(1f); } fishingPlayer.ResetPlayer(spawnPoints[iceLevel ? 1 : 0]); if (fade) { yield return new WaitForSeconds(1f); } if (fade) { hudManager.FadeDark(0f, 0.3f); } resetingPlayer = false; } public void QuickJump() { if (quickJumpPoints.Count != 0) { fishingPlayer.ResetPlayer(quickJumpPoints[currentQuickJump]); currentQuickJump++; if (currentQuickJump >= quickJumpPoints.Count) { currentQuickJump = 0; } } } public IEnumerator QuickJumpMap(Transform jumpPosition) { resetingPlayer = true; hudManager.FadeDark(1f, 0.3f); yield return new WaitForSeconds(0.3f); fishingPlayer.isTeleporting = true; fishingPlayer.ResetPlayer(jumpPosition.gameObject); yield return new WaitForSeconds(2f); fishingPlayer.isTeleporting = false; hudManager.FadeDark(0f, 0.3f); resetingPlayer = false; } public void SwitchScreenshotMode(bool turnOn) { hudManager.gameObject.SetActive(turnOn); ShowBaitIndicator(turnOn); TutorialManager.Instance.gameObject.SetActive(turnOn); } public void ShowBaitIndicator(bool show) { if ((bool)globalSettings && !globalSettings.playerSettings.IsCasual()) { show = false; } if (VRManager.IsVROn()) { if (!show) { fishingPlayer.ufpsCameraCamera.cullingMask = Utilities.RemoveFromLayerMask(fishingPlayer.ufpsCameraCamera.cullingMask, "UI3D"); } else { fishingPlayer.ufpsCameraCamera.cullingMask = Utilities.AddToLayerMask(fishingPlayer.ufpsCameraCamera.cullingMask, "UI3D"); } } else { fishingPlayer.baitIndicatorCamera.enabled = show; } } public void ShowFloatWindow(bool show) { if (fishingPlayer.floatCamera.isTurnedOn) { hudManager.hudFishing.floatCameraWidget.SetActive(show); } } public void SetFloatSizeMultiplier(float size) { fishingPlayer.currentHands.floatSizeMultiplier = 1f + size * 0.25f; } public void SetTensionWidgetType(HUDFishing.TensionWidgetType newType) { HUDManager.Instance.hudFishing.ChangeTensionWidget(newType); } public int GetFisheryId() { if ((bool)fisheryEditorGame) { return fisheryEditorGame.fisheryId; } return (!iceLevel) ? fisheryId : fisheryIceId; } public List GetAvailableSpecies() { List list = new List(); for (int i = 0; i < fishSpawners.Count; i++) { list.Add(TournamentManager.FishToTournamentFish(fishSpawners[i].fishPrefab)); } return list; } public void GetAvailableFishMaterials() { for (int i = 0; i < fishSpawners.Count; i++) { if (fishSpawners[i].fishPrefabsDLC.Count > 0) { foreach (Fish item in fishSpawners[i].fishPrefabsDLC) { GetAvailableFishMaterials(item); } } if (fishSpawners[i].fishPrefabs.Count > 0) { foreach (Fish fishPrefab in fishSpawners[i].fishPrefabs) { GetAvailableFishMaterials(fishPrefab); } } else { GetAvailableFishMaterials(fishSpawners[i].fishPrefab); } } } private void GetAvailableFishMaterials(Fish fishPrefab) { if (fishPrefab.mainMaterial != null) { fishMaterials.Add(fishPrefab.mainMaterial); } for (int i = 0; i < fishPrefab.additionalMainMaterials.Count; i++) { if (fishPrefab.additionalMainMaterials[i] != null) { fishMaterials.Add(fishPrefab.additionalMainMaterials[i]); } } if (fishPrefab.transparentMaterial != null) { fishTransparentMaterials.Add(fishPrefab.transparentMaterial); } } public void ResetHunterFishMaterials() { for (int i = 0; i < fishMaterials.Count; i++) { fishMaterials[i].shader = fishShaderNormal; fishMaterials[i].color = Color.white; } } public void UpdateHunterFishMaterials(bool hunterVision, float tweenTime) { if (fishingPlayer == null || fishingPlayer.hunterCamera == null) { return; } if (tweenTime > 0f) { Vector2 turnOnTime = new Vector2(0.1f, 0.2f); LeanTween.value((!hunterVision) ? 1f : 0f, (!hunterVision) ? 0f : 1f, tweenTime).setOnUpdate(delegate(float value) { if (!(fishingPlayer == null) && !(fishingPlayer.hunterCamera == null)) { if (hunterVision && !fishingPlayer.hunterCamera.enabled && value > turnOnTime.x) { fishingPlayer.hunterCamera.enabled = true; fishingPlayer.hunterBrightness.enabled = true; for (int i = 0; i < fishMaterials.Count; i++) { fishMaterials[i].shader = fishShaderHunter; fishMaterials[i].SetFloat("_FresnelStrength", 1f); fishMaterials[i].color = hunterMaterialColor; } } else if (!hunterVision && fishingPlayer.hunterCamera.enabled && value < turnOnTime.y) { fishingPlayer.hunterCamera.enabled = false; fishingPlayer.hunterBrightness.enabled = false; for (int j = 0; j < fishMaterials.Count; j++) { fishMaterials[j].shader = fishShaderNormal; fishMaterials[j].color = Color.white; } } Color color = Color.Lerp(Color.black, Color.yellow, value); for (int k = 0; k < fishMaterials.Count; k++) { fishingPlayer.hunterCamera.GetComponent().bloomIntensity = (value - ((!hunterVision) ? turnOnTime.y : turnOnTime.x)) * 3f; fishingPlayer.hunterBrightness._Brightness = Mathf.Lerp(0.19f, 1f, 1f - (value - ((!hunterVision) ? turnOnTime.y : turnOnTime.x))); if (fishMaterials[k].HasProperty("_EmissiveIntensity")) { fishMaterials[k].SetFloat("_EmissiveIntensity", hunterMaterialCurve.Evaluate(value)); } } } }); return; } for (int num = 0; num < fishMaterials.Count; num++) { if (fishMaterials[num].HasProperty("_EmissiveIntensity")) { fishMaterials[num].SetFloat("_EmissiveIntensity", 0f); } } if ((bool)fishingPlayer.hunterCamera) { fishingPlayer.hunterCamera.enabled = false; fishingPlayer.hunterCamera.GetComponent().bloomIntensity = 0f; } if ((bool)fishingPlayer.hunterBrightness) { fishingPlayer.hunterBrightness.enabled = false; } } public void UpdateTransparentFishMaterials(bool isUnderwater) { for (int i = 0; i < fishTransparentMaterials.Count; i++) { Utilities.SetupMaterialWithBlendMode(fishTransparentMaterials[i], isUnderwater ? Utilities.BlendMode.Cutout : Utilities.BlendMode.Fade); } } public bool IsPauseMenu() { return hudManager.currentHudState == HUDManager.HUDState.PAUSE; } public bool IsQuickMenu() { return hudManager.vrQuickMenuCanvas.gameObject.activeSelf; } public void FisheryExitEnter() { fisheryExitCounter++; if (fisheryExitCounter == 1) { hudManager.infoFisheryExit.SetActive(true); fisheryExitTimer = ((!fishingPlayer.boatSimulator) ? fisheryExitDelay : fisheryExitBoatDelay); } } public void FisheryExitExit() { fisheryExitCounter--; if (fisheryExitCounter <= 0) { hudManager.infoFisheryExit.SetActive(false); fisheryExitTimer = 0f; } if (fisheryExitCounter < 0) { Debug.LogError("fisheryExitTimer < 0"); fisheryExitCounter = 0; } Debug.Log("FisheryExitExit fisheryExitCounter: " + fisheryExitCounter); } public void ChangeWaterGeometryType(bool isCameraMoving) { } public void PlayWaterRipple(Vector3 position, float force, float radius) { position.y = 0f; List list = new List(); list.Add(new WaterForce.Data { Position = position, Force = force }); List data = list; UltimateWater.WaterRipples.AddForce(data, radius); } public void ShowIceBottom(bool showBottom) { if (iceLevel && !(iceBottom == null) && !(iceTop == null)) { iceBottom.GetComponent().enabled = showBottom; iceTop.GetComponent().enabled = !showBottom; if (showBottom) { iceBottom.transform.localPosition = new Vector3(iceBottom.transform.localPosition.x, iceTop.transform.position.y - fishingPlayer.drillingController.currentHole.Data.Depth - 0.01f, iceBottom.transform.localPosition.z); } } } public void ShowFishEscapeColliders(bool show) { for (int i = 0; i < fishEscapeColliders.Count; i++) { fishEscapeColliders[i].SetActive(show); } } public bool MakeDarkDuringRain() { return false; } public Fish GetRandomFish() { FishSpawner fishSpawner = fishSpawners[UnityEngine.Random.Range(0, spawnersCount)]; return fishSpawner.fishList[UnityEngine.Random.Range(0, fishSpawner.fishList.Count)]; } public void CheckBehaviorDistanceQuick() { for (int i = 0; i < fishSpawners.Count; i++) { if (fishSpawners[i].gameObject.activeSelf) { fishSpawners[i].CheckBehaviorDistanceQuick(); } } } [Button] public void CheckAllSpawnersUnderTerrain() { FishSpawner[] array = UnityEngine.Object.FindObjectsOfType(); for (int i = 0; i < array.Length; i++) { array[i].CheckIsUnderTerrain(); } } [Button] public void UpdateTerrainTile() { for (int i = 0; i < reliefTerrainsToChangeTiles.Count; i++) { float num = ((!fishingPlayer.underwaterCamera.isTurnedOn) ? tilesSize.x : tilesSize.y); reliefTerrainsToChangeTiles[i].globalSettingsHolder.ReliefTransform.x = num; reliefTerrainsToChangeTiles[i].globalSettingsHolder.ReliefTransform.y = num; reliefTerrainsToChangeTiles[i].globalSettingsHolder.RefreshAll(); } } public void CheckGrassMapAndResize(FoliageGrassMap grassMap) { if (!grassIds.Contains(grassMap.prototypeID)) { grassMap.Resize(4); } } public void RefreshBoatsRodStands() { if (allBoats == null) { return; } for (int i = 0; i < allBoats.Length; i++) { if (allBoats[i] != null && allBoats[i].gameObject.activeSelf) { allBoats[i].RefreshRodStands(); } } } }