Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/InventorManager.cs
2026-03-04 09:37:33 +08:00

153 lines
3.9 KiB
C#

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<InventorManager>
{
public ScriptableEventBool onGameMenuClosed;
public ScriptableEventNoParam onOpenInventoryNotAllowed;
public FSMVariable playerState;
[SerializeField]
private BoolVariable _IsInventoryEnabled;
[SerializeField]
private GameObjectVariable playerGameObject;
[SerializeField]
private List<BaseItemData> startingEq;
[SerializeField]
private List<FishingSetData> 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<InventorManager>.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();
}
}
}