using System; 
 | 
using UnityEditor; 
 | 
using UnityEngine; 
 | 
  
 | 
namespace PigeonCoopToolkit.Generic.Editor 
 | 
{ 
 | 
    public class InfoDialogue : EditorWindow 
 | 
    { 
 | 
        public VersionInformation versionInformation; 
 | 
        public Texture2D banner; 
 | 
        public string UserGuidePath; 
 | 
        public string AssetStoreContentID; 
 | 
        public bool IsAbout; 
 | 
  
 | 
        void OnGUI() 
 | 
        { 
 | 
            if(banner == null) 
 | 
            { 
 | 
                return; 
 | 
            } 
 | 
  
 | 
  
 | 
            GUI.DrawTexture(new Rect(0, 0, banner.width, banner.height), banner); 
 | 
            GUILayout.Space(banner.height - 18); 
 | 
            if (versionInformation != null) GUILayout.Label(versionInformation.ToString(), EditorStyles.whiteMiniLabel); 
 | 
            GUIStyle lessPaddingNotif = new GUIStyle("NotificationText"); 
 | 
            lessPaddingNotif.padding = new RectOffset(10,10,10,10); 
 | 
            lessPaddingNotif.margin = new RectOffset(10, 10, 10, 10); 
 | 
            lessPaddingNotif.stretchWidth = true; 
 | 
  
 | 
            if (!IsAbout)  
 | 
                GUILayout.Label("Thanks for your purchase! ♥", lessPaddingNotif); 
 | 
            else 
 | 
                GUILayout.FlexibleSpace(); 
 | 
  
 | 
            GUILayout.BeginHorizontal(); 
 | 
            GUILayout.Space(16); 
 | 
            GUILayout.BeginVertical(); 
 | 
            GUILayout.Label("We hope you enjoy this tool. Feel free to contact us at our twitter or email - send us feature requests, get some help from us, or just say hi!", "WordWrapLabel"); 
 | 
            GUILayout.Label("Don't forget to rate or review "+ (versionInformation != null ? versionInformation.Name : "us") +" on the asset store once you've had a chance to evaluate it", "WordWrapLabel"); 
 | 
            GUILayout.EndVertical(); 
 | 
            GUILayout.Space(16); 
 | 
            GUILayout.EndHorizontal();  
 | 
             
 | 
  
 | 
            GUILayout.FlexibleSpace(); 
 | 
            GUILayout.BeginHorizontal(); 
 | 
            GUILayout.FlexibleSpace(); 
 | 
  
 | 
            GUILayout.BeginVertical(); 
 | 
  
 | 
            if (!string.IsNullOrEmpty(AssetStoreContentID)) 
 | 
            if (GUILayout.Button("Review us on the Asset Store!", "LargeButton")) 
 | 
            { 
 | 
                Application.OpenURL("com.unity3d.kharma:content/" + AssetStoreContentID); 
 | 
            } 
 | 
            GUILayout.Space(5); 
 | 
            if (!string.IsNullOrEmpty(UserGuidePath)) 
 | 
            { 
 | 
                if (GUILayout.Button("Need help? Read the user guide!","LargeButton")) 
 | 
                { 
 | 
                    Application.OpenURL(UserGuidePath); 
 | 
                }; 
 | 
  
 | 
            } 
 | 
            GUILayout.Space(5); 
 | 
            if (GUILayout.Button("Want to say hello? @PigeonCoopAU", "LargeButton")) 
 | 
            { 
 | 
                Application.OpenURL("http://www.twitter.com/PigeonCoopAU"); 
 | 
            } 
 | 
  
 | 
            GUILayout.EndVertical(); 
 | 
            GUILayout.FlexibleSpace(); 
 | 
  
 | 
            GUILayout.EndHorizontal(); 
 | 
  
 | 
            GUILayout.FlexibleSpace(); 
 | 
            GUILayout.Label("© 2014-" + DateTime.Now.Year + " Pigeon Coop ", EditorStyles.miniLabel); 
 | 
  
 | 
        } 
 | 
  
 | 
        public void Init(Texture2D _banner, VersionInformation _versionInformation, string userGuidePath, string assetStoreContentID = null, bool isAbout = false) 
 | 
        { 
 | 
            banner = _banner; 
 | 
  
 | 
            //ensure the banner is not null. 
 | 
            if (banner == null) 
 | 
                banner = EditorGUIUtility.whiteTexture; 
 | 
  
 | 
            UserGuidePath = userGuidePath; 
 | 
            IsAbout = isAbout; 
 | 
            AssetStoreContentID = assetStoreContentID; 
 | 
  
 | 
            if (System.IO.File.Exists(FileUtil.GetProjectRelativePath(userGuidePath)) == false) 
 | 
                UserGuidePath = null; 
 | 
  
 | 
            versionInformation = _versionInformation; 
 | 
            minSize = maxSize = new Vector2(banner == EditorGUIUtility.whiteTexture ? 350 : banner.width, 500); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public class InfoDialogueSpawner 
 | 
    { 
 | 
        public InfoDialogueSpawner() 
 | 
        { 
 | 
            EditorApplication.update += Update; 
 | 
        } 
 | 
  
 | 
        private string _projectName; 
 | 
        private string _bannerLocation; 
 | 
        private VersionInformation _versionInfo; 
 | 
        private string _documentationLocation; 
 | 
        private string _projectID; 
 | 
  
 | 
        protected void SetParams( 
 | 
            string projectName, 
 | 
            string bannerLocation, 
 | 
            VersionInformation versionInfo, 
 | 
            string documentationLocation, 
 | 
            string projectID 
 | 
        ) 
 | 
        { 
 | 
            _projectName = projectName; 
 | 
            _bannerLocation = bannerLocation; 
 | 
            _versionInfo = versionInfo; 
 | 
            _documentationLocation = documentationLocation; 
 | 
            _projectID = projectID; 
 | 
        } 
 | 
  
 | 
        public virtual void LaunchAbout() 
 | 
        { 
 | 
            InfoDialogue dialogue = EditorWindow.GetWindow<InfoDialogue>( 
 | 
                true,  
 | 
                _projectName); 
 | 
                dialogue.Init(Resources.Load(_bannerLocation) as Texture2D,_versionInfo, 
 | 
                Application.dataPath + _documentationLocation, 
 | 
                _projectID, 
 | 
                true 
 | 
            ); 
 | 
        } 
 | 
  
 | 
        void Update() 
 | 
        { 
 | 
            if (EditorPrefs.GetBool("PCTK/" + _projectID+"/IntroDialogueLaunched") == false) 
 | 
            { 
 | 
                EditorPrefs.SetBool("PCTK/" + _projectID + "/IntroDialogueLaunched", true); 
 | 
  
 | 
                InfoDialogue dialogue = EditorWindow.GetWindow<InfoDialogue>( 
 | 
                    true, 
 | 
                    _projectName); 
 | 
                    dialogue.Init(Resources.Load(_bannerLocation) as Texture2D, _versionInfo, 
 | 
                    Application.dataPath + _documentationLocation, 
 | 
                    _projectID 
 | 
                );     
 | 
             
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                EditorApplication.update -= Update; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |