153 lines
3.9 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|