| 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; | 
|             } | 
|         } | 
|     } | 
|   | 
| } |