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