popcorn/popcorn/Assets/MyGame/Scripts/ApplicationExitConfirmDialo...

47 lines
1.5 KiB
C#

using System;
using UniRx;
using UnityEngine;
using UnityEngine.UI;
public sealed class ApplicationExitConfirmDialogManager : MonoBehaviour
{
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
[SerializeField] private Animator backgroundAnimator;
[SerializeField] private Button backButton;
[SerializeField] private Button closeButton;
[SerializeField] private Button exitButton;
private void Start()
{
backButton.OnClickAsObservable()
.Merge(closeButton.OnClickAsObservable())
.Take(1)
.Subscribe(_ =>
{
transform.parent.SetLocalScale(0);
backgroundAnimator.SetTrigger(CloseTrigger);
this.CallWaitForSeconds(.25f, OnHide);
}).AddTo(this);
exitButton.OnClickAsObservable().Subscribe(_ => OnExit()).AddTo(this);
}
public void OnExit(){
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#elif ANDROID_GP
Debug.Log("Application.Quit();");
UnityEngine.Application.Quit();
#endif
}
public void OnHide(){
this.CallWaitForOneFrame(() => {
TransitionManager.Instance.UnloadScene(GameScenes.ApplicationExitConfirmDialog);
});
}
public static void ShowDialog(){
TransitionManager.Instance.LoadSceneAdditive(GameScenes.ApplicationExitConfirmDialog, SceneType.ManualUnloadOnly);
}
}