/*
http://www.cgsoso.com/forum-211-1.html

CG搜搜 Unity3d 每日Unity3d插件免费更新 更有VIP资源!

CGSOSO 主打游戏开发,影视设计等CG资源素材。

插件如若商用,请务必官网购买!

daily assets update for try.

U should buy the asset from home store if u use it in your project!
*/

using UnityEngine;
using UnityEngine.Events;

namespace MS
{
	public class Popup : MonoBehaviour
	{
		public static Popup current;

		[Header("Anim Setting")]
		public Animator animator;

		public AnimationClip openClip;

		public AnimationClip closeClip;

		[Header("Popup Setting")]
		public bool isOpen;

		public bool closeOnEsc;

		private bool isPlaying;

		public UnityEvent onClose;

		public UnityEvent onOpen;
		public GameObject ChooseModePanel;
		public void isTimerSetter(bool isTimer)
		{
			GamePlayManager.isTimerLevel = isTimer;
		}

		private void Start()
		{
			AnimationEvent animationEvent = new AnimationEvent();
			animationEvent.functionName = "onStopAnim";
			animationEvent.time = openClip.length;
			openClip.AddEvent(animationEvent);
			AnimationEvent animationEvent2 = new AnimationEvent();
			animationEvent2.functionName = "onStopAnim";
			animationEvent2.time = openClip.length;
			closeClip.AddEvent(animationEvent2);
			if (isOpen)
			{
				Open();
			}
			else
			{
				Close();
			}
		}

		[ContextMenu("Open")]
		public void Open(bool onEnd = false)
		{
			if (!isPlaying && !isOpen)
			{
				current = this;
				isOpen = true;
				isPlaying = true;
				animator.Play(openClip.name);
				if (onEnd)
				{
					onOpen.Invoke();
				}
			}
		}

		[ContextMenu("Close")]
		public void Close(bool onEnd = false)
		{
			if (!isPlaying && isOpen)
			{
				isPlaying = true;
				animator.Play(closeClip.name);
				isOpen = false;
				if (onEnd)
				{
					onClose.Invoke();
				}
			}
		}

		[ContextMenu("Open")]
		public void Open()
		{
			Open(onEnd: false);
		}

		[ContextMenu("Close")]
		public void Close()
		{
			Close(onEnd: false);
		}

		public void onStopAnim()
		{
			isPlaying = false;
		}
	}
}