Files
2026-03-04 10:03:45 +08:00

390 lines
14 KiB
C#

using System.Collections.Generic;
using BeautifyEffect;
using DarkTonic.MasterAudio;
using OLDCODE;
using UltimateWater;
using UnityEngine;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.Serialization;
public class FScriptsHandler : MonoBehaviour
{
private static FScriptsHandler instance;
[HideInInspector]
public Canvas m_Canvas;
[HideInInspector]
public InputManager m_InputManager;
public FPlayer m_PlayerMain;
[HideInInspector]
public InteractionControl m_InteractionControl;
[HideInInspector]
public CanvasManager m_CanvasManager;
[HideInInspector]
public InventoryManager m_InventoryManager;
[HideInInspector]
public SceneSettings m_SceneSettings;
[FormerlySerializedAs("m_WeatherController")]
[HideInInspector]
public GameWeatherManager mGameWeatherController;
[HideInInspector]
public HudManager m_HudManager;
[HideInInspector]
public PlayerManager playerManager;
[HideInInspector]
public QuickMenu m_QuickMenu;
[HideInInspector]
public ChatManager m_chatManager;
private FFishSystem m_fishSystem;
private List<AudioSource> allAudioSources = new List<AudioSource>();
[Tooltip("Underwater camera prefab")]
public GameObject underWaterCameraPrefab;
[Tooltip("Postac z ryba na rekach prefab")]
public GameObject[] fishAnglerViewPrefab;
public GameObject ChwytakPrefab;
public GameObject fishCatchPanel;
public GameObject boatUIPanelPrefab;
public GameObject[] waterFishSplash;
public AudioClip[] fishBubbleSound;
public GameObject debugText;
public Transform PlayerTransformPoint;
public GameObject nearThrowTargetPrefab;
private Water water;
private LayerMask WaterReflactionMask;
private LayerMask WaterReflactionNothingMask;
public GameObject FreeCameraPrefab;
public GameObject lornetkaMaskPrefab;
public float locationSpendTimer;
public bool showLoadShadersMask = true;
public RodActionCurve rodActionCurveSlow;
public RodActionCurve rodActionCurveMedium;
public RodActionCurve rodActionCurveFast;
public RodActionCurve rodActionCurveExtraFast;
public FishFightData fishFightData;
private TournamentPlay currentTournamentPlay;
public static FScriptsHandler Instance => instance;
private void Awake()
{
if (instance == null)
{
instance = this;
}
AudioListener.volume = 0f;
PutScripts();
}
private void PutScripts()
{
m_chatManager = Object.FindObjectOfType<ChatManager>();
m_InputManager = Object.FindObjectOfType<InputManager>();
if ((object)m_PlayerMain == null)
{
m_PlayerMain = Object.FindObjectOfType<FPlayer>();
}
m_Canvas = GameObject.Find("Canvas").GetComponent<Canvas>();
m_CanvasManager = Object.FindObjectOfType<CanvasManager>();
m_InventoryManager = Object.FindObjectOfType<InventoryManager>();
m_SceneSettings = Object.FindObjectOfType<SceneSettings>();
mGameWeatherController = Object.FindObjectOfType<GameWeatherManager>();
m_HudManager = Object.FindObjectOfType<HudManager>();
playerManager = Object.FindObjectOfType<PlayerManager>();
m_QuickMenu = Object.FindObjectOfType<QuickMenu>();
m_fishSystem = Object.FindObjectOfType<FFishSystem>();
water = Object.FindObjectOfType<Water>();
if ((bool)water)
{
WaterReflactionMask = water.PlanarReflection.ReflectionMask;
}
allAudioSources.AddRange(Object.FindObjectsOfType<AudioSource>());
AffectSoundVolume();
}
private void Start()
{
showLoadShadersMask = true;
_ = GameManager.Instance._playerData.currentPlayerProfileIndex;
_ = -1;
GameManager.Instance._playerData.eagleEyesCoolDown = 0f;
Singleton<SaveDataManager>.Instance.ResetRodStatuses();
}
private void Update()
{
if (showLoadShadersMask)
{
ShowHideAddetiveEmptyScene();
return;
}
if ((bool)m_PlayerMain && (bool)m_PlayerMain.m_Camera && m_PlayerMain.m_Camera.enabled)
{
PlayerTransformPoint.position = m_PlayerMain.transform.position;
}
else if ((bool)m_PlayerMain && m_PlayerMain.underWaterCamera != null)
{
PlayerTransformPoint.position = m_PlayerMain.underWaterCamera.transform.position;
}
locationSpendTimer += Time.unscaledDeltaTime;
}
private void FixedUpdate()
{
AddTimeToQuest();
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostExp > 0f)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostExp -= Time.deltaTime;
}
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostCash > 0f)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().TimeBoostCash -= Time.deltaTime;
}
}
public void AffectSoundVolume()
{
if (m_SceneSettings.sceneID == 8)
{
return;
}
List<AudioSource> list = new List<AudioSource>();
foreach (AudioSource allAudioSource in allAudioSources)
{
if (allAudioSource != null)
{
bool num = allAudioSource.outputAudioMixerGroup != null;
bool flag = allAudioSource.GetComponentInParent<MasterAudio>() != null;
if (!num && !flag)
{
list.Add(allAudioSource);
}
}
}
list.ForEach(delegate(AudioSource element)
{
element.volume = Singleton<SaveDataManager>.Instance.SettingsData.FXVolume * 0.1f;
});
}
private void ShowHideAddetiveEmptyScene()
{
if ((bool)TournamentManager.Instance && GameManager.Instance.currentSceneLoadedType == GameManager.SceneLoadedType.Tournament && !currentTournamentPlay)
{
currentTournamentPlay = Object.Instantiate(TournamentManager.Instance.TournamentPlayPanelPrefab, m_Canvas.transform).GetComponent<TournamentPlay>();
}
if (GameManager.Instance.addectiveSceneLoaded != "WelcomeMap")
{
GameManager.Instance.LoadAddectiveScene("WelcomeMap");
showLoadShadersMask = false;
}
}
public void AffectControlsSetting()
{
m_PlayerMain.firstPersonController.m_MouseLook.XSensitivity = Singleton<SaveDataManager>.Instance.SettingsData.MouseSensitivityValue;
m_PlayerMain.firstPersonController.m_MouseLook.YSensitivity = Singleton<SaveDataManager>.Instance.SettingsData.MouseSensitivityValue;
m_PlayerMain.firstPersonController.m_MouseLook.invertMouseY = Singleton<SaveDataManager>.Instance.SettingsData.IsMouseYInverted;
m_PlayerMain.firstPersonController.m_MouseLook.invertMouseX = Singleton<SaveDataManager>.Instance.SettingsData.IsMouseXInverted;
m_PlayerMain.firstPersonController.m_MouseLook.ControllerHandMode = GameManager.Instance._playerData.Player[GameManager.Instance._playerData.currentPlayerProfileIndex].controllerSetup;
m_PlayerMain.MouseSensitivityX = Singleton<SaveDataManager>.Instance.SettingsData.MouseSensitivityValue;
m_PlayerMain.MouseSensitivityY = Singleton<SaveDataManager>.Instance.SettingsData.MouseSensitivityValue;
}
public void AffectDisplaySetting()
{
m_PlayerMain.m_Camera.fieldOfView = Singleton<SaveDataManager>.Instance.SettingsData.FOVValue;
m_PlayerMain.lastCameraFov = Singleton<SaveDataManager>.Instance.SettingsData.FOVValue;
m_PlayerMain.m_Camera.GetComponent<Crepuscular>().enabled = Singleton<SaveDataManager>.Instance.SettingsData.IsLightShaftEnabled;
EagleEyes eagleEyes = Object.FindObjectOfType<EagleEyes>();
if ((bool)eagleEyes)
{
eagleEyes.startCameraFov = Singleton<SaveDataManager>.Instance.SettingsData.FOVValue;
}
}
public void AffectGraphicsSetting()
{
QualitySettings.masterTextureLimit = Singleton<SaveDataManager>.Instance.SettingsData.TextureQualityModeIndex;
QualitySettings.vSyncCount = (Singleton<SaveDataManager>.Instance.SettingsData.IsVSyncEnabled ? 1 : 0);
QualitySettings.shadowDistance = Singleton<SaveDataManager>.Instance.SettingsData.ShadowDistanceValue;
if ((bool)water)
{
if (!Singleton<SaveDataManager>.Instance.SettingsData.IsWaterReflectionEnabled)
{
water.PlanarReflection.ReflectionMask = WaterReflactionNothingMask;
Debug.Log("Water reflaction Off");
}
else
{
water.PlanarReflection.ReflectionMask = WaterReflactionMask;
Debug.Log("Water reflaction On");
}
water.PlanarReflection.RenderShadows = GameManager.Instance._playerData.Player[GameManager.Instance._playerData.currentPlayerProfileIndex].shadowOnWater;
}
}
public void AffectPostProccesingFromSettings()
{
GameObject gameObject = GameObject.FindGameObjectWithTag("ScenePostProcessing");
if (gameObject == null || !gameObject.TryGetComponent<PostProcessVolume>(out var component))
{
return;
}
if (component.profile.TryGetSettings<DepthOfField>(out var outSetting))
{
outSetting.active = Singleton<SaveDataManager>.Instance.SettingsData.IsBlurEnabled;
}
if (component.profile.TryGetSettings<Bloom>(out var outSetting2))
{
outSetting2.active = Singleton<SaveDataManager>.Instance.SettingsData.IsBloomEnabled;
}
if (component.profile.TryGetSettings<ChromaticAberration>(out var outSetting3))
{
outSetting3.active = Singleton<SaveDataManager>.Instance.SettingsData.IsChromaticAberrationEnabled;
}
if (component.profile.TryGetSettings<AmbientOcclusion>(out var outSetting4))
{
outSetting4.active = Singleton<SaveDataManager>.Instance.SettingsData.IsAmbientOcclusionEnabled;
}
PostProcessLayer component2 = m_PlayerMain.m_Camera.GetComponent<PostProcessLayer>();
if ((bool)component2)
{
component2.antialiasingMode = (PostProcessLayer.Antialiasing)Singleton<SaveDataManager>.Instance.SettingsData.AntiAliasingModeIndex;
}
GameObject gameObject2 = null;
if (gameObject.transform.parent != null)
{
foreach (Transform item in gameObject.transform.parent)
{
if (item != gameObject.transform)
{
gameObject2 = item.gameObject;
}
}
}
if ((bool)gameObject2 && gameObject2.TryGetComponent<PostProcessVolume>(out component) && component.profile.TryGetSettings<DepthOfField>(out outSetting))
{
outSetting.active = false;
}
Beautify beautify = Beautify.instance;
beautify.depthOfFieldAutofocus = false;
beautify.depthOfFieldFocusSpeed = 1f;
beautify.depthOfFieldFocalLength = 0.05f;
beautify.depthOfFieldAperture = Mathf.Lerp(0f, 10f, Singleton<SaveDataManager>.Instance.SettingsData.BlurUnderwaterSetting);
beautify.depthOfFieldForegroundBlur = true;
beautify.depthOfFieldForegroundDistance = 1f;
beautify.depthOfFieldBokeh = false;
beautify.depthOfFieldDownsampling = 1;
beautify.depthOfFieldMaxSamples = 5;
Debug.Log("Apply postprocesing settings");
}
public void AddTimeToQuest()
{
for (int i = 0; i < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest.Count; i++)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].gameQuest.questObjectiveType == GameManager.GameQuest.QuestObjectiveType.Spend_time)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].gameQuest.objectiveValue * 60f > Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].curentObjectiveProgress)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].curentObjectiveProgress += Time.deltaTime / 60f;
}
else
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].curentObjectiveProgress = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerQuest[i].gameQuest.objectiveValue;
}
}
}
for (int j = 0; j < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest.Count; j++)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[j].gameQuest.questObjectiveType == GameManager.GameQuest.QuestObjectiveType.Spend_time && Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[j].isShowed)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[j].gameQuest.objectiveValue * 60f > Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[j].curentObjectiveProgress)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[j].curentObjectiveProgress += Time.deltaTime / 60f;
}
else
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[j].curentObjectiveProgress = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerWeeklyQuest[j].gameQuest.objectiveValue;
}
}
}
for (int k = 0; k < Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest.Count; k++)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[k].gameQuest.questObjectiveType == GameManager.GameQuest.QuestObjectiveType.Spend_time && Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[k].isShowed)
{
if (Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[k].gameQuest.objectiveValue * 60f > Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[k].curentObjectiveProgress)
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[k].curentObjectiveProgress += Time.deltaTime / 60f;
}
else
{
Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[k].curentObjectiveProgress = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerMonthlyQuest[k].gameQuest.objectiveValue;
}
}
}
}
public AnimationCurve GetRodActionCurve(GameManager.GameRods.Action action)
{
AnimationCurve result = new AnimationCurve();
switch (action)
{
case GameManager.GameRods.Action.Slow:
result = rodActionCurveSlow.curve;
break;
case GameManager.GameRods.Action.Medium:
result = rodActionCurveMedium.curve;
break;
case GameManager.GameRods.Action.Fast:
result = rodActionCurveFast.curve;
break;
case GameManager.GameRods.Action.ExtraFast:
result = rodActionCurveExtraFast.curve;
break;
}
return result;
}
private void OnDestroy()
{
Singleton<SaveDataManager>.Instance.ResetRodStatuses();
}
}