Files
project-reset/Assets/Plugins/HTraceSSGI/Scripts/Editor/WindowsAndMenu/AssetWelcomeWindow.cs
2026-01-01 21:13:17 -05:00

140 lines
3.7 KiB
C#

#if UNITY_EDITOR
using System;
using HTraceSSGI.Scripts.Extensions;
using HTraceSSGI.Scripts.Globals;
using UnityEditor;
using UnityEngine;
namespace HTraceSSGI.Scripts.Editor.WindowsAndMenu
{
public class AssetWelcomeWindow : EditorWindow
{
private static Texture2D _icon;
public static void ShowWindow()
{
_icon = Resources.Load<Texture2D>("SSGI UI Card");
var window = GetWindow<AssetWelcomeWindow>("Welcome");
Vector2 minSize = new Vector2(600, 240);
if (HExtensions.IsUnityLTS(Application.unityVersion))
minSize.y -= 45;
if (_icon != null)
minSize.y += 100;
Vector2 maxSize = minSize - new Vector2(1, 1);
window.minSize = minSize;
window.maxSize = maxSize;
Rect main = EditorGUIUtility.GetMainWindowPosition();
window.position = new Rect(
main.x + (main.width - minSize.x) / 2,
main.y + (main.height - minSize.y) / 2,
minSize.x,
minSize.y
);
}
private void OnGUI()
{
if (_icon != null)
{
GUILayout.Space(5);
Rect rect = GUILayoutUtility.GetAspectRect((float)_icon.width / _icon.height);
rect.xMin += 4;
rect.xMax -= 4;
GUI.DrawTexture(rect, _icon, ScaleMode.ScaleToFit);
EditorGUILayout.Space(5f);
}
GUILayout.Space(5);
GUILayout.Label($"Thank you for purchasing {HNames.ASSET_NAME_FULL_WITH_DOTS}!", EditorStyles.boldLabel);
GUILayout.Space(5);
DrawUnityVersionWarning();
GUILayout.Space(10);
var richLabel = new GUIStyle(EditorStyles.wordWrappedLabel)
{
richText = true
};
GUILayout.Label(
"Please make sure to read the <b>Documentation</b> before using the asset.\n" +
"If you run into any issues, check the <b>Known Issues</b> and <b>FAQ</b> sections before reporting a bug.",
richLabel
);
GUILayout.Space(5);
DrawLinksLine();
GUILayout.Space(10);
GUILayout.Label(
"Shortcuts to the Documentation, Discord support channel, and Bug Report form " +
"can be found at the bottom of the HTrace UI.",
EditorStyles.wordWrappedLabel
);
GUILayout.Space(15);
bool dontShow = GUILayout.Toggle(
EditorPrefs.GetBool(HNames.HTRACE_SHOW_KEY, false),
"Don't show next time"
);
EditorPrefs.SetBool(HNames.HTRACE_SHOW_KEY, dontShow);
GUILayout.Space(10);
if (GUILayout.Button("I understand, close window"))
{
Close();
}
}
private static void DrawUnityVersionWarning()
{
string unityVersion = Application.unityVersion;
if (!HExtensions.IsUnityLTS(unityVersion))
{
EditorGUILayout.HelpBox(
$"The current Unity version ({unityVersion}) is not an LTS release.\n" +
"Bug fixes for non-LTS releases are not guaranteed.",
MessageType.Warning
);
}
}
private static void DrawLinksLine()
{
EditorGUILayout.BeginHorizontal();
DrawLinkButton("Documentation", HNames.HTRACE_SSGI_DOCUMENTATION_LINK);
GUILayout.Label("|", GUILayout.Width(10));
DrawLinkButton("Known Issues", HNames.HTRACE_SSGI_DOCUMENTATION_LINK_KNOWN_ISSUES);
GUILayout.Label("|", GUILayout.Width(10));
DrawLinkButton("FAQ", HNames.HTRACE_SSGI_DOCUMENTATION_LINK_FAQ);
EditorGUILayout.EndHorizontal();
}
private static void DrawLinkButton(string label, string url)
{
var style = new GUIStyle(EditorStyles.linkLabel)
{
wordWrap = false
};
if (GUILayout.Button(label, style, GUILayout.Width(EditorStyles.linkLabel.CalcSize(new GUIContent(label)).x)))
{
Application.OpenURL(url);
}
}
}
}
#endif