using System.Collections.Generic; using DG.Tweening; using Obvious.Soap; using SoapCustomVariable; using UFS3; using UFS3.Management; using UnityEngine; using UnityEngine.SceneManagement; public class InventorManager : MonoBehaviourSingleton { public ScriptableEventBool onGameMenuClosed; public ScriptableEventNoParam onOpenInventoryNotAllowed; public FSMVariable playerState; [SerializeField] private BoolVariable _IsInventoryEnabled; [SerializeField] private GameObjectVariable playerGameObject; [SerializeField] private List startingEq; [SerializeField] private List Debug_fishingSets; [SerializeField] private GameObjectVariable gameScene; [SerializeField] private GameObject gameplayRoot; [SerializeField] private FishingSetController fishingSetPrefab; [SerializeField] private ScriptableEventNoParam onInventoryButtonPressed; [SerializeField] private ScriptableEventNoParam onMainMenuButtonPressed; [SerializeField] private ScriptableMenuOpenReasonVariable mainMenu_OpenReason; public BoolVariable IsDebugModeEnabled; [SerializeField] private CanvasGroup _FadeCanvas; private bool _IsTweeningInventory; private void OnEnable() { _IsInventoryEnabled.OnValueChanged += IsInventoryEnabledOnValueChanged; onInventoryButtonPressed.OnRaised += OnInventoryButtonPressedOnOnRaised; onMainMenuButtonPressed.OnRaised += OnMainMenuButtonPressed_OnRaised; } private void OnDisable() { _IsInventoryEnabled.OnValueChanged -= IsInventoryEnabledOnValueChanged; onInventoryButtonPressed.OnRaised -= OnInventoryButtonPressedOnOnRaised; onMainMenuButtonPressed.OnRaised -= OnMainMenuButtonPressed_OnRaised; } private new void OnDestroy() { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } public static FishingSetController CreateFishingSet(Transform root) { return Object.Instantiate(MonoBehaviourSingleton.Instance.fishingSetPrefab, root); } private void OnInventoryButtonPressedOnOnRaised() { if (!_IsInventoryEnabled.Value) { mainMenu_OpenReason.Value = MenuOpenReason.Inventory; TryStartTweeningInventory(); } } private void OnMainMenuButtonPressed_OnRaised() { mainMenu_OpenReason.Value = MenuOpenReason.Home; TryStartTweeningInventory(); } private void TryStartTweeningInventory() { if (!IsDebugModeEnabled.Value) { if (playerState.Value != State.idle && playerState.Value != State.move && playerState.Value != State.vehicle && playerState.Value != State.vehicleFishing && playerState.Value != State.swiming) { onOpenInventoryNotAllowed.Raise(); } else if (!_IsTweeningInventory) { _IsTweeningInventory = true; _IsInventoryEnabled.Value = !_IsInventoryEnabled.Value; } } } private void IsInventoryEnabledOnValueChanged(bool isEnabled) { float duration = 0.1f; float duration2 = 0.1f; if (isEnabled) { DOTween.Sequence().Append(_FadeCanvas.DOFade(1f, duration)).AppendCallback(delegate { gameplayRoot.SetActive(value: false); gameScene.Value.SetActive(value: false); onGameMenuClosed.Raise(param: false); UnityEngine.SceneManagement.SceneManager.LoadScene("Main Menu", LoadSceneMode.Additive); }) .Append(_FadeCanvas.DOFade(0f, duration2)) .AppendCallback(delegate { _IsTweeningInventory = false; }) .Play(); Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } else { DOTween.Sequence().Append(_FadeCanvas.DOFade(1f, duration)).AppendCallback(delegate { gameplayRoot.SetActive(value: true); UFS3.Management.SceneManager.UnloadScene("Main Menu"); gameScene.Value.SetActive(value: true); Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; onGameMenuClosed.Raise(param: true); }) .Append(_FadeCanvas.DOFade(0f, duration2)) .AppendCallback(delegate { _IsTweeningInventory = false; }) .Play(); } } }