98 lines
2.3 KiB
C#
98 lines
2.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
namespace NeoFPS.Samples
|
|
{
|
|
[HelpURL("http://docs.neofps.com/manual/samples-ui.html")]
|
|
public class InGameMenu : BaseMenu
|
|
{
|
|
[SerializeField] private MenuNavControls m_StartingNavControls = null;
|
|
[SerializeField] private CanvasGroup m_HudGroup = null;
|
|
[SerializeField] private InGameMenuBackground m_Background = null;
|
|
[SerializeField] private int m_MainMenuScene = 0;
|
|
[SerializeField][Range (0f, 1f)] private float m_HudAlpha = 0.25f;
|
|
[SerializeField] private bool m_PauseGame = false;
|
|
|
|
#if UNITY_EDITOR
|
|
void OnValidate ()
|
|
{
|
|
if (m_Background == null)
|
|
m_Background = GetComponentInChildren<InGameMenuBackground> ();
|
|
}
|
|
#endif
|
|
|
|
protected override void Start ()
|
|
{
|
|
base.Start ();
|
|
NeoFpsInputManagerBase.PushEscapeHandler (Show);
|
|
if (m_Background != null)
|
|
m_Background.gameObject.SetActive (false);
|
|
}
|
|
|
|
protected override void OnDestroy ()
|
|
{
|
|
base.OnDestroy ();
|
|
NeoFpsInputManagerBase.PopEscapeHandler (Show);
|
|
|
|
if (m_PauseGame && NeoFpsTimeScale.isPaused)
|
|
NeoFpsTimeScale.ResumeTime();
|
|
}
|
|
|
|
public override void Show ()
|
|
{
|
|
NeoFpsInputManagerBase.PushEscapeHandler(Hide);
|
|
ShowNavControls (m_StartingNavControls);
|
|
HidePanel ();
|
|
base.Show ();
|
|
CaptureInput ();
|
|
// Fade Hud
|
|
if (m_HudGroup != null)
|
|
m_HudGroup.alpha = m_HudAlpha;
|
|
|
|
if (m_PauseGame)
|
|
NeoFpsTimeScale.FreezeTime();
|
|
}
|
|
|
|
public override void Hide ()
|
|
{
|
|
base.Hide ();
|
|
ReleaseInput ();
|
|
// Show Hud
|
|
if (m_HudGroup != null)
|
|
m_HudGroup.alpha = 1f;
|
|
NeoFpsInputManagerBase.PopEscapeHandler(Hide);
|
|
|
|
if (m_PauseGame && NeoFpsTimeScale.isPaused)
|
|
NeoFpsTimeScale.ResumeTime();
|
|
}
|
|
|
|
public void OnPressExit ()
|
|
{
|
|
ConfirmationPopup.ShowPopup ("Are you sure you want to quit?", OnExitYes, OnExitNo);
|
|
}
|
|
|
|
void OnExitYes ()
|
|
{
|
|
SceneManager.LoadScene (m_MainMenuScene);
|
|
}
|
|
|
|
void OnExitNo ()
|
|
{
|
|
}
|
|
|
|
void CaptureInput ()
|
|
{
|
|
if (m_Background != null)
|
|
m_Background.gameObject.SetActive (true);
|
|
}
|
|
|
|
void ReleaseInput ()
|
|
{
|
|
m_Background.gameObject.SetActive (false);
|
|
}
|
|
}
|
|
} |