Heroes_of_Hiis/Assets/Rotary Heart/Shared/Editor/BaseSupportWindow.cs

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