123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- namespace TriLibCore.Editor
- {
- public class TriLibVersionNotes : EditorWindow
- {
- private class Styles
- {
- public const float WindowWidth = 0.75f;
- public const float WindowHeight = 0.5f;
- public static readonly GUIStyle HeaderStyle = new GUIStyle("label") { fontSize = 19, fontStyle = FontStyle.Bold, margin = new RectOffset(10, 10, 5, 5) };
- public static readonly GUIStyle SubHeaderStyle = new GUIStyle("label") { margin = new RectOffset(10, 10, 5, 5), fontStyle = FontStyle.Bold };
- public static readonly GUIStyle TextStyle = new GUIStyle("label") { margin = new RectOffset(20, 20, 5, 5) };
- public static readonly GUIStyle TextAreaStyle = new GUIStyle(TextStyle) { wordWrap = true };
- public static readonly GUIStyle ButtonStyle = new GUIStyle("button") { margin = new RectOffset(10, 10, 5, 5) };
- }
- private string _text;
- private bool _loaded;
- private Vector2 _changeLogScrollPosition;
- private Vector2 _notesScrollPosition;
- private static TriLibVersionNotes Instance
- {
- get
- {
- var window = GetWindow<TriLibVersionNotes>();
- window.titleContent = new GUIContent("TriLib Version Notes");
- window.minSize = new Vector2(Styles.WindowWidth * Screen.width, Styles.WindowHeight * Screen.height);
- return window;
- }
- }
- public static void ShowWindow()
- {
- Instance.Show();
- }
- private void OnDestroy()
- {
- EditorPrefs.SetBool(TriLibVersionInfo.Instance.SkipVersionInfoKey, true);
- }
- private void OnGUI()
- {
- if (!_loaded)
- {
- var guids = AssetDatabase.FindAssets("TriLibReleaseNotes");
- if (guids.Length > 0)
- {
- var guid = guids[0];
- var assetPath = AssetDatabase.GUIDToAssetPath(guid);
- var textAsset = AssetDatabase.LoadAssetAtPath<TextAsset>(assetPath);
- if (textAsset == null || textAsset.text == null)
- {
- AssetDatabase.Refresh();
- textAsset = AssetDatabase.LoadAssetAtPath<TextAsset>(assetPath);
- if (textAsset == null)
- {
- Close();
- }
- return;
- }
- _text = textAsset.text.Replace("\\n", "\n");
- }
- else
- {
- Close();
- }
- _loaded = true;
- }
- EditorGUILayout.BeginVertical();
- using (var stringReader = new StringReader(_text))
- {
- var changeLogOpen = false;
- var version = stringReader.ReadLine();
- GUILayout.Label($"TriLib {version}", Styles.HeaderStyle);
- for (; ; )
- {
- var line = stringReader.ReadLine();
- if (line == null)
- {
- break;
- }
- if (line.ToLowerInvariant() == "changelog:")
- {
- EditorGUILayout.Space();
- GUILayout.Label("Changelog", Styles.SubHeaderStyle);
- _changeLogScrollPosition = GUILayout.BeginScrollView(_changeLogScrollPosition, GUILayout.Height(260f));
- changeLogOpen = true;
- }
- else if (line.ToLowerInvariant() == "version notes:")
- {
- if (changeLogOpen)
- {
- GUILayout.EndScrollView();
- changeLogOpen = false;
- }
- EditorGUILayout.Space();
- GUILayout.Label("Version Notes", Styles.SubHeaderStyle);
- var versionInfo = stringReader.ReadToEnd();
- _notesScrollPosition = EditorGUILayout.BeginScrollView(_notesScrollPosition);
- EditorGUILayout.TextArea(versionInfo, Styles.TextAreaStyle);
- EditorGUILayout.EndScrollView();
- break;
- }
- else
- {
- GUILayout.Label(line, Styles.TextStyle);
- }
- }
- if (changeLogOpen)
- {
- GUILayout.EndScrollView();
- }
- EditorGUILayout.EndVertical();
- EditorGUILayout.Space();
- GUILayout.Label("You can show this window on the Project Settings/TriLib area", Styles.SubHeaderStyle);
- EditorGUILayout.BeginHorizontal();
- GUILayout.FlexibleSpace();
- if (GUILayout.Button("Close", Styles.ButtonStyle))
- {
- Close();
- }
- EditorGUILayout.EndHorizontal();
- }
- }
- }
- }
|