217 lines
6.5 KiB
C#
217 lines
6.5 KiB
C#
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<PostProcessVolume>(out postProcessVolume))
|
|
{
|
|
Debug.LogError("EagleEye nie widzi Postprocesing");
|
|
}
|
|
else
|
|
{
|
|
if (!postProcessVolume.profile.TryGetSettings<ColorGrading>(out colorGrading))
|
|
{
|
|
Debug.LogError("EagleEye nie widzi Colorgrading");
|
|
}
|
|
if (!postProcessVolume.profile.TryGetSettings<Vignette>(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<SaveDataManager>.Instance.HasCurrentPlayerSkill(GameManager.Skills.eagle_sens))
|
|
{
|
|
GameManager.Instance._playerData.eagleEyesViewTimer = 10f;
|
|
}
|
|
else if (Singleton<SaveDataManager>.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<GameCameraController>.Instance && (Singleton<GameCameraController>.Instance.IsCameraZoomIn || Singleton<GameCameraController>.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<FishEntityManager>.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<FishEntityManager>.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<FishEntityManager>.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<CoolDownEagle>();
|
|
}
|
|
if (Singleton<SaveDataManager>.Instance.HasCurrentPlayerSkill(GameManager.Skills.eagle_sens))
|
|
{
|
|
coolDownEagleInstance.StartCooldown(CoolDownEagle.Type.Falcon);
|
|
}
|
|
else if (Singleton<SaveDataManager>.Instance.HasCurrentPlayerSkill(GameManager.Skills.Eagle_eye))
|
|
{
|
|
coolDownEagleInstance.StartCooldown(CoolDownEagle.Type.Eagle);
|
|
}
|
|
}
|
|
}
|