using UnityEngine; using UnityEditor; using System; using System.Collections; using System.Collections.Generic; using System.Xml.Serialization; namespace I2 { [Serializable] public class PluginsManagerData { public PluginData[] Plugins; public AssetData[] Assets; public AssetData[] Games; public string WebURL, ContactUs, AssetStoreURL, Videos; public string AlertText; } [Serializable] public class PluginData { [XmlAttribute]public string Name; public string Description; public string TrailerURL, DocumentationURL, TutorialsURL, ForumURL, AssetStoreURL; public string AssetStoreVersion, BetaVersion; } [Serializable] public class AssetData { [XmlAttribute]public string Name; public string URL; } [InitializeOnLoad] public class I2AboutHelper { public static bool DownloadError = false; public static WWW wwwPluginData = null; static I2AboutHelper() { /*string LastUpdateTime = EditorPrefs.GetString("I2AboutWindow Downloaded Time",""); bool ShouldCheck = true; if (!string.IsNullOrEmpty(LastUpdateTime)) { DateTime LastTime; if (!DateTime.TryParse(LastUpdateTime, out LastTime)) ShouldCheck = true; else { double days = (DateTime.Now-LastTime).TotalDays; if (days>=1) ShouldCheck = true; else { /*if (days>=1) { I2AboutWindow.LoadPluginsData(); EditorApplication.update += CheckIfAnyPluginNeedsUpgrading; }* / ShouldCheck = false; } } } if (ShouldCheck) StartConnection();*/ } public static void StartConnection() { wwwPluginData = new WWW("http://bit.ly/1F0fIQx");//http://goo.gl/FjiyOR");//http://inter-illusion.com/assets/I2AssetStore.xml"); EditorApplication.update += CheckConectionResult; } static void CheckConectionResult() { if (wwwPluginData!=null) { if (wwwPluginData.isDone) { EditorApplication.update -= CheckConectionResult; if (string.IsNullOrEmpty(wwwPluginData.error)) { if (DeserializeData(wwwPluginData.text)) { I2AboutWindow.DownloadedData = wwwPluginData.text; } } else { I2AboutWindow.LoadPluginsData(); } wwwPluginData = null; CheckIfAnyPluginNeedsUpgrading(); } } else EditorApplication.update -= CheckConectionResult; } public static bool DeserializeData( string dataXML ) { try { System.IO.StringReader reader = new System.IO.StringReader(dataXML); System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer( typeof(PluginsManagerData) ); I2AboutWindow.PluginsData = serializer.Deserialize( reader ) as PluginsManagerData; }catch (Exception){} return I2AboutWindow.PluginsData!=null; } static void CheckIfAnyPluginNeedsUpgrading() { EditorApplication.update -= CheckIfAnyPluginNeedsUpgrading; for (int i=0; i ImagePreviewDictionary = new Dictionary(); public static Dictionary PluginsVersion = new Dictionary(); public static bool bNotifyOfNewBetas{ get { return EditorPrefs.GetBool("I2AboutWindow Notify NewBetas", false); } set { EditorPrefs.SetBool("I2AboutWindow Notify NewBetas", value); } } public static bool bNotifyOfNewMainVersions{ get { return EditorPrefs.GetBool("I2AboutWindow Notify NewMainVersions", true); } set { EditorPrefs.SetBool("I2AboutWindow Notify NewMainVersions", value); } } public static string DownloadedData { get { return EditorPrefs.GetString("I2AboutWindow Downloaded Data", string.Empty); } set { EditorPrefs.SetString("I2AboutWindow Downloaded Data", value); EditorPrefs.SetString("I2AboutWindow Downloaded Time", DateTime.Now.ToString()); } } #endregion #region Editor and Loading Data [MenuItem("Help/About Inter-Illusion", false, 100 )] public static void DoShowScreen() { PluginsData = null; EditorWindow.GetWindowWithRect(new Rect(0f, 0f, 670f, 510f), true, "Plugins Manager"); } public static void LoadPluginsData() { string dataXML = /*string.Empty;*/DownloadedData; if (string.IsNullOrEmpty(dataXML)) { LoadDefaultData(); } else { I2AboutHelper.DeserializeData(dataXML); if (PluginsData==null) LoadDefaultData(); } ImagePreviewDictionary.Clear(); for (int i=0; i(data.Name + "_Preview1")); ImagePreviewDictionary.Add (data.Name + "_Preview2", Resources.Load(data.Name + "_Preview2")); ImagePreviewDictionary.Add (data.Name + "_Preview3", Resources.Load(data.Name + "_Preview3")); } for (int i=0; i("I2 Assets "+PluginsData.Assets[i].Name)); for (int i=0; i("I2 Games "+PluginsData.Games[i].Name)); /*System.IO.StringWriter writer = new System.IO.StringWriter(System.Globalization.CultureInfo.InvariantCulture); System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer( typeof(PluginsManagerData) ); serializer.Serialize( writer, PluginsData ); Debug.Log ( writer.ToString() );*/ } static void LoadDefaultData () { PluginsData = new PluginsManagerData () { WebURL = "http://www.inter-illusion.com", ContactUs = "http://www.inter-illusion.com/forum/index", AssetStoreURL = "https://www.assetstore.unity3d.com/en/#!/publisher/5916", Videos = "https://www.youtube.com/channel/UCBYYngAJJjCuoZhu1UbwoAw", AlertText = "Alert" }; PluginsData.Plugins = new PluginData[2]; PluginsData.Plugins [0] = new PluginData () { Name = "I2 Localization", Description = "The most complete Localization solution for Unity", TrailerURL = "https://www.youtube.com/watch?v=h27T3WFTOFE", DocumentationURL = "http://www.inter-illusion.com/assets/I2Localization.pdf", TutorialsURL = "http://inter-illusion.com/tools/i2-localization", ForumURL = "http://www.inter-illusion.com/forum/i2-localization", AssetStoreURL = "https://www.assetstore.unity3d.com/#!/content/14884", AssetStoreVersion = "2.4.4 f1", BetaVersion = "2.4.4 f1" }; PluginsData.Plugins [1] = new PluginData () { Name = "SmartEdge", Description = "Pixel Perfect Styles for TEXT, SPRITES and IMAGES", TrailerURL = "https://www.youtube.com/channel/UCBYYngAJJjCuoZhu1UbwoAw", DocumentationURL = "http://inter-illusion.com", //"http://inter-illusion.com/assets/SmartEdgeManual/SmartEdge.html", TutorialsURL = "http://inter-illusion.com",//"http://inter-illusion.com/assets/SmartEdgeManual/SmartEdge.html", ForumURL = "http://www.inter-illusion.com/forum/smart-edge", AssetStoreURL = "https://www.assetstore.unity3d.com/en/#!/publisher/5916", AssetStoreVersion = "none", BetaVersion = "1.0.0 b1" }; PluginsData.Assets = new AssetData[] { new AssetData () { Name = "Sci-Fi Indoor Facility", URL = "https://www.assetstore.unity3d.com/en/#!/content/31165" } }; PluginsData.Games = new AssetData[] { new AssetData () { Name = "iTapPirate", URL = "http://inter-illusion.com/games/itappirate" }, new AssetData () { Name = "Brush Master", URL = "http://inter-illusion.com/games/brush-master" } }; } #endregion public void OnEnable() { I2AboutHelper.StartConnection(); } public void OnGUI() { LoadPluginsData(); GUIStyle mGUIStyle_Background = new GUIStyle("AS TextArea"); mGUIStyle_Background.overflow.left = 50; mGUIStyle_Background.overflow.right = 50; mGUIStyle_Background.overflow.top = 50; mGUIStyle_Background.overflow.bottom = 50; GUI.backgroundColor = Color.Lerp (Color.black, Color.gray, 0.5f); GUILayout.BeginVertical(mGUIStyle_Background, GUILayout.ExpandHeight(true)); GUI.backgroundColor = Color.white; GUILayout.Label("Inter Illusion", GUIStyle_Header); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button ("Web", EditorStyles.miniLabel)) Application.OpenURL( PluginsData.WebURL ); GUILayout.Space(15); if (GUILayout.Button ("Contact Us", EditorStyles.miniLabel)) Application.OpenURL( PluginsData.ContactUs ); GUILayout.Space(15); if (GUILayout.Button ("Asset Store", EditorStyles.miniLabel)) Application.OpenURL( PluginsData.AssetStoreURL ); GUILayout.Space(15); if (GUILayout.Button ("Videos", EditorStyles.miniLabel)) Application.OpenURL( PluginsData.Videos ); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); //---[ Plugins ]----------------------------- GUILayout.BeginHorizontal(); GUILayout.Space (3); GUILayout.BeginVertical(); for (int i=0; i0); HasNewBeta = !string.IsNullOrEmpty(pluginData.BetaVersion) && (pluginData.BetaVersion!="none") && (pluginData.BetaVersion.CompareTo(InstalledVersion)>0); string skipVersion = EditorPrefs.GetString("SkipVersion "+pluginData.Name, ""); shouldSkip = (skipVersion.Contains(pluginData.AssetStoreVersion) || skipVersion.Contains(pluginData.BetaVersion)); } else { InstalledVersion = "none"; ShouldUpgrade = !string.IsNullOrEmpty(pluginData.AssetStoreVersion) && (pluginData.AssetStoreVersion!="none"); HasNewBeta = !string.IsNullOrEmpty(pluginData.BetaVersion) && (pluginData.BetaVersion!="none"); shouldSkip = true; } } void OnGUI_Assets() { GUILayout.BeginVertical(GUILayout.Height(1), GUILayout.Width(1)); GUILayout.Label("Assets", GUIStyle_SectionHeader); GUILayout.Space (5); GUILayout.BeginHorizontal(); GUILayout.Space(30); for (int i=0; i