Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Menu/openMenuSystem.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

202 lines
4.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class openMenuSystem : MonoBehaviour
{
[Header ("Main Settings")]
[Space]
public bool openMenuEnabled;
public string menuToOpenName;
public bool openPauseMenu;
public float openMenuDelay;
public float closeMenuDelay;
public bool pauseEscapeMenuKey = true;
[Space]
[Header ("Other Settings")]
[Space]
public bool useCustomActionOpenMenuSystem;
public customActionOpenMenuSystem mainCustomActionOpenMenuSystem;
[Space]
[Header ("Blur Settings")]
[Space]
public bool ignoreBlurMenu;
[Space]
[Header ("Debug")]
[Space]
public bool menuOpened;
[Space]
[Header ("Components")]
[Space]
public menuPause mainMenuPause;
public GameObject currentPlayer;
Coroutine menuCoroutine;
public void toggleOpenOrCloseMenu ()
{
openOrCloseMenu (!menuOpened);
}
public void openMenu ()
{
openOrCloseMenu (true);
}
public void closeMenu ()
{
openOrCloseMenu (false);
}
public void closeMenuIfOpened ()
{
if (menuOpened) {
closeMenu ();
}
}
public void openOrCloseMenu (bool state)
{
if (!openMenuEnabled) {
return;
}
if (mainMenuPause == null) {
getPauseManager ();
}
if (mainMenuPause == null) {
print ("WARNING: no player assigned in open menu system, make sure to assign it or send it through events to the " +
" function set current player");
return;
}
stopOpenOrCloseMenuCoroutine ();
menuCoroutine = StartCoroutine (openOrCloseMenuCoroutine (state));
}
public void stopOpenOrCloseMenuCoroutine ()
{
if (menuCoroutine != null) {
StopCoroutine (menuCoroutine);
}
}
IEnumerator openOrCloseMenuCoroutine (bool state)
{
menuOpened = state;
bool checkOpenOrCloseMenuResult = true;
if (useCustomActionOpenMenuSystem) {
if (menuOpened) {
WaitForSeconds delay = new WaitForSeconds (openMenuDelay);
yield return delay;
} else {
WaitForSeconds delay = new WaitForSeconds (closeMenuDelay);
yield return delay;
}
mainCustomActionOpenMenuSystem.openOrCloseMenu (state, currentPlayer);
checkOpenOrCloseMenuResult = false;
}
if (checkOpenOrCloseMenuResult) {
if (menuOpened) {
if (pauseEscapeMenuKey) {
mainMenuPause.setPauseGameInputPausedState (true);
} else {
mainMenuPause.setCurrentOpenMenuSystem (this);
}
mainMenuPause.setChangeBetweenIngameMenuPausedState (true);
if (ignoreBlurMenu) {
mainMenuPause.setIgnoreBlurPanelActiveState (true);
}
}
if (menuOpened) {
WaitForSeconds delay = new WaitForSeconds (openMenuDelay);
yield return delay;
} else {
WaitForSeconds delay = new WaitForSeconds (closeMenuDelay);
yield return delay;
}
if (!menuOpened) {
mainMenuPause.setOpenOrClosePlayerOpenMenuByNamePausedState (false);
}
if (openPauseMenu) {
mainMenuPause.openOrClosePauseMenuByName (menuToOpenName, menuOpened);
mainMenuPause.setOpenOrClosePauseMenuExternallyPausedState (menuOpened);
mainMenuPause.setPauseScreenWithoutPausingGameState (menuOpened);
} else {
mainMenuPause.openPlayerOpenMenuByName (menuToOpenName);
}
if (menuOpened) {
mainMenuPause.setOpenOrClosePlayerOpenMenuByNamePausedState (true);
} else {
if (pauseEscapeMenuKey) {
mainMenuPause.setPauseGameInputPausedState (false);
} else {
mainMenuPause.setCurrentOpenMenuSystem (null);
}
mainMenuPause.setChangeBetweenIngameMenuPausedState (false);
if (ignoreBlurMenu) {
mainMenuPause.setIgnoreBlurPanelActiveState (false);
}
}
}
}
public void setCurrentPlayer (GameObject newPlayer)
{
if (currentPlayer != newPlayer) {
currentPlayer = newPlayer;
getPauseManager ();
}
}
public void getPauseManager ()
{
if (currentPlayer != null) {
playerComponentsManager currentPlayerComponentsManager = currentPlayer.GetComponent<playerComponentsManager> ();
if (currentPlayerComponentsManager != null) {
mainMenuPause = currentPlayerComponentsManager.getPauseManager ();
}
}
}
}