﻿#if UNITY_EDITOR

using System;
using UnityEngine;
using UnityEditor;

namespace AC.Downloads.SpeechBubble
{

	public class SpeechBubbleTemplate : Template
	{

		#region Variables

		[SerializeField] private MenuManager menuManager = null;

		#endregion


		#region PublicFunctions

		public override bool CanInstall (ref string errorText)
		{
			if (KickStarter.menuManager == null)
			{
				errorText = "No Menu Manager assigned";
				return false;
			}

			if (KickStarter.menuManager == menuManager)
			{
				errorText = "Wrong Menu Manager assigned";
				return false;
			}

			return true;
		}


		public override bool CanSuggest (NGWData data)
		{
			return true;
		}


#if UNITY_EDITOR

		public override void AmendData (NGWData data)
		{
			if (data.interfaceOption == NGWData.InterfaceOption.AdventureCreator)
			{
				data.interfaceOption = NGWData.InterfaceOption.UnityUI;
			}
		}

#endif

		#endregion


		#region ProtectedFunctions

		protected override void MakeChanges (string installPath, bool canDeleteOldAssets, System.Action onComplete, System.Action<string> onFail)
		{
			Undo.RecordObjects (new UnityEngine.Object[] { KickStarter.menuManager }, "");

			CopyMenus (installPath, menuManager, KickStarter.menuManager, canDeleteOldAssets ? ExistingMenuBehaviour.Delete : ExistingMenuBehaviour.Rename);

			onComplete.Invoke ();
		}

		#endregion


		#region GetSet

		public override string Label { get { return "Speech bubble"; }}
		public override string PreviewText { get { return "Replaces the default Subtitles menu with a more stylised 'speech bubble'. (Requires TextMesh Pro)"; }}
		public override Type[] AffectedManagerTypes { get { return new Type[] { typeof (MenuManager) }; }}
		public override TemplateCategory Category { get { return TemplateCategory.Misc; }}
		public override bool RequiresInstallPath { get { return true; }}
		public override string FolderName { get { return "SpeechBubble"; }}

		#endregion

	}


	[CustomEditor (typeof (SpeechBubbleTemplate))]
	public class SpeechBubbleTemplateEditor : TemplateEditor
	{}

}

#endif