using UFS2.Gameplay; using UnityEngine; using UnityEngine.Rendering.PostProcessing; public class EagleEyesController : MonoBehaviour { public Material eyeFishMaterial; public CoolDownEagle coolDownEaglePrefab; public AudioSource audioSourceHearth; public AudioSource audioSourceFalcon; private CoolDownEagle coolDownEagleInstance; private PostProcessVolume postProcessVolume; private ColorGrading colorGrading; private Vignette vignette; private bool isView; private float currentViewTimer; private float eagleAffectProgress; private float vignetteStartValue; private float startCameraFov; private float cameraFovMultiplier = 0.7f; private void Start() { if (!GameObject.FindGameObjectWithTag("ScenePostProcessing").TryGetComponent(out postProcessVolume)) { Debug.LogError("EagleEye nie widzi Postprocesing"); } else { if (!postProcessVolume.profile.TryGetSettings(out colorGrading)) { Debug.LogError("EagleEye nie widzi Colorgrading"); } if (!postProcessVolume.profile.TryGetSettings(out vignette)) { Debug.LogError("EagleEye nie widzi Vignette"); } else { vignetteStartValue = vignette.intensity.value; } } if (GameManager.Instance._playerData.eagleEyesCoolDown > 0f) { StartCoolDown(); } } private void Update() { if ((bool)FScriptsHandler.Instance) { if (Singleton.Instance.HasCurrentPlayerSkill(GameManager.Skills.eagle_sens)) { GameManager.Instance._playerData.eagleEyesViewTimer = 10f; } else if (Singleton.Instance.HasCurrentPlayerSkill(GameManager.Skills.Eagle_eye)) { GameManager.Instance._playerData.eagleEyesViewTimer = 5f; } else { GameManager.Instance._playerData.eagleEyesViewTimer = 0f; } bool flag = true; FRod currentRod = FScriptsHandler.Instance.m_PlayerMain.currentRod; if ((bool)currentRod && (currentRod.CheckIsInUse() || (bool)currentRod.currentFishEntity)) { flag = false; } bool flag2 = true; if ((bool)Singleton.Instance && (Singleton.Instance.IsCameraZoomIn || Singleton.Instance.IsZoomPlaying)) { flag2 = false; } isView = InputManager.isEagleEye && flag && flag2 && !coolDownEagleInstance && GameManager.Instance._playerData.eagleEyesViewTimer > 0f; if (isView) { ShowFishes(); } else { HideFishes(); } if ((bool)audioSourceHearth) { audioSourceHearth.volume = eagleAffectProgress * 0.2f; } if ((bool)audioSourceFalcon) { audioSourceFalcon.volume = eagleAffectProgress * 0.3f; } FollowMainCamera(); } } private void ShowFishes() { if (!FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.enabled) { FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.enabled = true; startCameraFov = GameCameraController.GetCurrentFov(); if (currentViewTimer == 0f) { currentViewTimer = GameManager.Instance._playerData.eagleEyesViewTimer; } if ((bool)audioSourceFalcon && !audioSourceFalcon.isPlaying) { audioSourceFalcon.Play(); } } eagleAffectProgress = Mathf.MoveTowards(eagleAffectProgress, 1f, Time.unscaledDeltaTime); foreach (FishEntity allFish in Singleton.Instance.AllFishes) { allFish.EagleEyeRender(isEagleEyeEnabled: true, eyeFishMaterial, eagleAffectProgress); } colorGrading.saturation.value = 0f - eagleAffectProgress * 100f; vignette.intensity.value = Mathf.Lerp(vignette.intensity.value, 0.5f, eagleAffectProgress * 0.5f); float num = Mathf.Lerp(startCameraFov, startCameraFov * cameraFovMultiplier, eagleAffectProgress); GameCameraController.SetCameraFov(num); FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.fieldOfView = num; if ((bool)audioSourceHearth && !audioSourceHearth.isPlaying) { audioSourceHearth.Play(); } currentViewTimer = Mathf.MoveTowards(currentViewTimer, 0f, Time.unscaledDeltaTime); if (currentViewTimer == 0f) { StartCoolDown(); } } private void HideFishes() { eagleAffectProgress = Mathf.MoveTowards(eagleAffectProgress, 0f, Time.unscaledDeltaTime); if (eagleAffectProgress > 0f) { foreach (FishEntity allFish in Singleton.Instance.AllFishes) { allFish.EagleEyeRender(isEagleEyeEnabled: true, eyeFishMaterial, eagleAffectProgress); } colorGrading.saturation.value = 0f - eagleAffectProgress * 100f; vignette.intensity.value = Mathf.Lerp(vignette.intensity.value, vignetteStartValue, (1f - eagleAffectProgress) * 0.5f); float num = Mathf.Lerp(startCameraFov * cameraFovMultiplier, startCameraFov, 1f - eagleAffectProgress); GameCameraController.SetCameraFov(num); FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.fieldOfView = num; } else { if (!FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.enabled) { return; } FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.enabled = false; GameCameraController.SetCameraFov(startCameraFov); FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.fieldOfView = startCameraFov; foreach (FishEntity allFish2 in Singleton.Instance.AllFishes) { allFish2.EagleEyeRender(); } if (audioSourceHearth.isPlaying) { audioSourceHearth.Stop(); } if (audioSourceFalcon.isPlaying) { audioSourceFalcon.Stop(); } colorGrading.saturation.value = 0f; vignette.intensity.value = vignetteStartValue; } } private void FollowMainCamera() { if (FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera.enabled) { Camera camera = FScriptsHandler.Instance.m_PlayerMain.m_Camera; Camera eagleCamera = FScriptsHandler.Instance.m_PlayerMain.m_EagleCamera; eagleCamera.transform.position = camera.transform.position; eagleCamera.transform.rotation = camera.transform.rotation; eagleCamera.fieldOfView = camera.fieldOfView; eagleCamera.nearClipPlane = camera.nearClipPlane; eagleCamera.farClipPlane = camera.farClipPlane; } } private void StartCoolDown() { if (coolDownEagleInstance == null) { coolDownEagleInstance = Object.Instantiate(coolDownEaglePrefab, FScriptsHandler.Instance.m_Canvas.transform).GetComponent(); } if (Singleton.Instance.HasCurrentPlayerSkill(GameManager.Skills.eagle_sens)) { coolDownEagleInstance.StartCooldown(CoolDownEagle.Type.Falcon); } else if (Singleton.Instance.HasCurrentPlayerSkill(GameManager.Skills.Eagle_eye)) { coolDownEagleInstance.StartCooldown(CoolDownEagle.Type.Eagle); } } }