using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;

namespace CartoonFX
{
    [InitializeOnLoad]
    public class CFXR_WelcomeScreen : EditorWindow
    {
        static CFXR_WelcomeScreen()
        {
            EditorApplication.delayCall += () =>
            {
                if (SessionState.GetBool("CFXR_WelcomeScreen_Shown", false))
                {
                    return;
                }
            SessionState.SetBool("CFXR_WelcomeScreen_Shown", true);

                var importer = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath("bfd03f272fe010b4ba558a3bc456ffeb"));
                if (importer != null && importer.userData == "dontshow")
                {
                    return;
                }

                Open();
            };
        }

        [MenuItem("Tools/Cartoon FX Remaster FREE - Welcome Screen")]
        static void Open()
        {
            var window = GetWindow<CFXR_WelcomeScreen>(true, "Cartoon FX Remaster FREE", true);
            window.minSize = new Vector2(516, 370);
            window.maxSize = new Vector2(516, 370);
        }

        private void CreateGUI()
        {
            VisualElement root = rootVisualElement;
            root.style.height = new StyleLength(new Length(100, LengthUnit.Percent));

            // UXML
            var uxmlDocument = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(AssetDatabase.GUIDToAssetPath("bfd03f272fe010b4ba558a3bc456ffeb"));
            root.Add(uxmlDocument.Instantiate());
            // USS
            var styleSheet = AssetDatabase.LoadAssetAtPath<StyleSheet>(AssetDatabase.GUIDToAssetPath("f8b971f10a610844f968f582415df874"));
            root.styleSheets.Add(styleSheet);

            // Background image
            root.style.backgroundImage = new StyleBackground(AssetDatabase.LoadAssetAtPath<Texture2D>(AssetDatabase.GUIDToAssetPath("fed1b64fd853f994c8d504720a0a6d44")));
            root.style.unityBackgroundScaleMode = ScaleMode.ScaleAndCrop;

            // Logo image
            var titleImage = root.Q<Image>("img_title");
            titleImage.image = AssetDatabase.LoadAssetAtPath<Texture2D>(AssetDatabase.GUIDToAssetPath("a665b2e53088caa4c89dd09f9c889f62"));

            // Buttons
            root.Q<Label>("btn_cfxr1").AddManipulator(new Clickable(evt => { Application.OpenURL("https://assetstore.unity.com/packages/slug/4010"); }));
            root.Q<Label>("btn_cfxr2").AddManipulator(new Clickable(evt => { Application.OpenURL("https://assetstore.unity.com/packages/slug/4274"); }));
            root.Q<Label>("btn_cfxr3").AddManipulator(new Clickable(evt => { Application.OpenURL("https://assetstore.unity.com/packages/slug/10172"); }));
            root.Q<Label>("btn_cfxr4").AddManipulator(new Clickable(evt => { Application.OpenURL("https://assetstore.unity.com/packages/slug/23634"); }));
            root.Q<Label>("btn_cfxrbundle").AddManipulator(new Clickable(evt => { Application.OpenURL("https://assetstore.unity.com/packages/slug/232385"); }));

            root.Q<Button>("close_dontshow").RegisterCallback<ClickEvent>(evt =>
            {
                this.Close();
                var importer = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath("bfd03f272fe010b4ba558a3bc456ffeb"));
                importer.userData = "dontshow";
                importer.SaveAndReimport();
            });
            root.Q<Button>("close").RegisterCallback<ClickEvent>(evt => { this.Close(); });
        }
    }
}