165 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using UnityEngine;
 | 
						|
using UnityEditor;
 | 
						|
 | 
						|
namespace RotaryHeart.Lib
 | 
						|
{
 | 
						|
    public class BaseSupportWindow : EditorWindow
 | 
						|
    {
 | 
						|
        int m_toolBarIndex;
 | 
						|
 | 
						|
        GUIContent m_assetName;
 | 
						|
        GUIContent m_support;
 | 
						|
        GUIContent m_contact;
 | 
						|
        GUIContent m_review;
 | 
						|
 | 
						|
        GUIStyle m_labelStyle;
 | 
						|
        GUIStyle m_publisherNameStyle;
 | 
						|
        GUIStyle m_toolBarStyle;
 | 
						|
        GUIStyle m_greyText;
 | 
						|
        GUIStyle m_reviewBanner;
 | 
						|
        GUIStyle m_versionLabel;
 | 
						|
 | 
						|
        protected virtual string AssetName
 | 
						|
        {
 | 
						|
            get { return null; }
 | 
						|
        }
 | 
						|
        protected virtual string SupportForum
 | 
						|
        {
 | 
						|
            get { return null; }
 | 
						|
        }
 | 
						|
        protected virtual string StoreLink
 | 
						|
        {
 | 
						|
            get { return null; }
 | 
						|
        }
 | 
						|
        protected virtual string Version
 | 
						|
        {
 | 
						|
            get { return null; }
 | 
						|
        }
 | 
						|
 | 
						|
        protected static void ShowWindow <T> () where T : BaseSupportWindow
 | 
						|
        {
 | 
						|
            T myWindow = CreateInstance<T>();
 | 
						|
            myWindow.ShowUtility();
 | 
						|
            myWindow.titleContent = new GUIContent("About");
 | 
						|
            myWindow.LoadStyles();
 | 
						|
        }
 | 
						|
 | 
						|
        void LoadStyles()
 | 
						|
        {
 | 
						|
            string color = "#AAAAAA";
 | 
						|
 | 
						|
            if (!EditorGUIUtility.isProSkin)
 | 
						|
            {
 | 
						|
                color = "#353535";
 | 
						|
            }
 | 
						|
 | 
						|
            m_assetName = IconContent("<size=20><b><color=" + color + "> " + AssetName + "</color></b></size>", "", "");
 | 
						|
            m_support = IconContent("<size=12><b> Support</b></size>\n <size=9>Get help and talk \n with others.</size>", "_Help", "");
 | 
						|
            m_contact = IconContent("<size=12><b> Contact</b></size>\n <size=9>Reach out and \n get help.</size>", "console.infoicon", "");
 | 
						|
            m_review = IconContent("<size=11><color=white> Please consider leaving a review.</color></size>", "Favorite Icon", "");
 | 
						|
 | 
						|
            m_labelStyle = new GUIStyle(EditorStyles.label);
 | 
						|
            m_labelStyle.richText = true;
 | 
						|
 | 
						|
            m_publisherNameStyle = new GUIStyle()
 | 
						|
            {
 | 
						|
                alignment = TextAnchor.MiddleLeft,
 | 
						|
                richText = true
 | 
						|
            };
 | 
						|
            m_toolBarStyle = new GUIStyle("LargeButtonMid")
 | 
						|
            {
 | 
						|
                alignment = TextAnchor.MiddleLeft,
 | 
						|
                richText = true
 | 
						|
            };
 | 
						|
            m_greyText = new GUIStyle(EditorStyles.centeredGreyMiniLabel)
 | 
						|
            {
 | 
						|
                alignment = TextAnchor.MiddleLeft
 | 
						|
            };
 | 
						|
            m_reviewBanner = new GUIStyle("TL SelectionButton")
 | 
						|
            {
 | 
						|
                alignment = TextAnchor.MiddleCenter,
 | 
						|
                richText = true
 | 
						|
            };
 | 
						|
            m_versionLabel = new GUIStyle(EditorStyles.centeredGreyMiniLabel)
 | 
						|
            {
 | 
						|
                alignment = TextAnchor.MiddleRight,
 | 
						|
            };
 | 
						|
        }
 | 
						|
 | 
						|
        void OnGUI()
 | 
						|
        {
 | 
						|
            maxSize = minSize = new Vector2(350, 350);
 | 
						|
 | 
						|
            EditorGUILayout.Space();
 | 
						|
            GUILayout.Label(m_assetName, m_publisherNameStyle);
 | 
						|
            EditorGUILayout.Space();
 | 
						|
 | 
						|
            GUIContent[] toolbarOptions = new GUIContent[2];
 | 
						|
            toolbarOptions[0] = m_support;
 | 
						|
            toolbarOptions[1] = m_contact;
 | 
						|
 | 
						|
            m_toolBarIndex = GUILayout.Toolbar(m_toolBarIndex, toolbarOptions, m_toolBarStyle, GUILayout.Height(50));
 | 
						|
 | 
						|
            EditorGUILayout.Space();
 | 
						|
 | 
						|
            switch (m_toolBarIndex)
 | 
						|
            {
 | 
						|
                case 0:
 | 
						|
                    EditorGUILayout.LabelField("Talk with others.", m_greyText);
 | 
						|
 | 
						|
                    if (GUILayout.Button("Support Forum"))
 | 
						|
                        Application.OpenURL(SupportForum);
 | 
						|
 | 
						|
                    EditorGUILayout.Space();
 | 
						|
 | 
						|
                    EditorGUILayout.LabelField("Detailed code documentation.", m_greyText);
 | 
						|
                    
 | 
						|
                    if (GUILayout.Button("Wiki"))
 | 
						|
                        Application.OpenURL("https://www.rotaryheart.com/Wiki.html");
 | 
						|
 | 
						|
                    break;
 | 
						|
 | 
						|
                case 1:
 | 
						|
                    EditorGUILayout.LabelField("Get in touch.", m_greyText);
 | 
						|
                    
 | 
						|
                    if (GUILayout.Button("Email"))
 | 
						|
                        Application.OpenURL("mailto:ma.rotaryheart@gmail.com?");
 | 
						|
 | 
						|
                    EditorGUILayout.Space();
 | 
						|
 | 
						|
                    if (GUILayout.Button("Contact Form"))
 | 
						|
                        Application.OpenURL("https://www.rotaryheart.com/Contact.html");
 | 
						|
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
 | 
						|
            GUILayout.FlexibleSpace();
 | 
						|
            
 | 
						|
            EditorGUILayout.LabelField(new GUIContent("Version " + Version), m_versionLabel);
 | 
						|
            
 | 
						|
            EditorGUILayout.Space();
 | 
						|
            
 | 
						|
            if (GUILayout.Button(m_review, m_reviewBanner, GUILayout.Height(30)))
 | 
						|
                Application.OpenURL(StoreLink);
 | 
						|
        }
 | 
						|
 | 
						|
        static GUIContent IconContent(string text, string icon, string tooltip)
 | 
						|
        {
 | 
						|
            GUIContent content;
 | 
						|
 | 
						|
            if (string.IsNullOrEmpty(icon))
 | 
						|
            {
 | 
						|
                content = new GUIContent();
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                content = EditorGUIUtility.IconContent(icon);
 | 
						|
            }
 | 
						|
 | 
						|
            content.text = text;
 | 
						|
            content.tooltip = tooltip;
 | 
						|
            return content;
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
} |