Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
using Fluctio.FluctioSim.Common.Configuration;
using Fluctio.FluctioSim.Common.Icons;
using Fluctio.FluctioSim.EditorUtils.Gui;
using UnityEditor;
using UnityEngine;

namespace Fluctio.FluctioSim.EditorCore.EditorGeneral
{
	public class AboutWindow : ConfigurableEditorWindow
	{
		private const float Width = 400;
		private const float MainHeight = 125;
		private const float DetailsWidth = 150;
		private const float DescriptionHeight = 70;
		private const float DebugHeight = 40;
		
		private const float Margin = Width / 15;
		private const float Padding = Margin / 2;
		private static readonly float EffectiveDebugHeight = Config.IsDebug ? Padding + DebugHeight : 0;
		private static readonly Vector2 Size = new(
			Width + 2 * Margin,
			Margin + MainHeight + Padding + DescriptionHeight + EffectiveDebugHeight + Margin);

		public override Vector2 MinSize => Size;
		public override Vector2 MaxSize => Size;
		public override string Title => $"About {Config.RawName}";

		protected override void OnGUI()
		{
			base.OnGUI();
			
			using var horizontalScope = new EditorGUILayout.HorizontalScope();
			GUILayout.Space(Margin);
			using (new EditorGUILayout.VerticalScope())
			{
				GUILayout.Space(Margin);
				DrawMain();
				GUILayout.Space(Padding);
				DrawDescription();
				DrawDebug();
				GUILayout.Space(Margin);
			}
			GUILayout.Space(Margin);
		}

		private static void DrawMain()
		{
			using var horizontalScope = new EditorGUILayout.HorizontalScope();
			GUILayout.Space((Width - Padding - MainHeight - DetailsWidth)/2);
			GUILayout.Box(DefinedIcons.Logo, EditorStyles.label, GUILayout.Width(MainHeight), GUILayout.Height(MainHeight));
			GUILayout.Space(Padding);
			using (new EditorGUILayout.VerticalScope())
			{
				DrawDetails();
			}
		}

		private static void DrawDetails()
		{
			EditorGUILayout.LabelField(Config.RawName, EditorStyles.boldLabel);
			EditorGUILayout.LabelField(Config.PackageId);
			EditorGUILayout.LabelField($"Version {Config.PackageInfo.version}");
			EditorGUILayout.LabelField($"Made by {Config.PackageInfo.author.name}");
			EditorGUILayout.TextField(Config.PackageInfo.author.email, EditorStyles.label);
			EditorGUIExtensions.WebLink(Config.PackageInfo.author.url);
		}

		private static void DrawDescription()
		{
			EditorGUILayout.LabelField(Config.PackageInfo.description ?? "Description loading...", EditorStyles.textArea, GUILayout.Width(Width), GUILayout.Height(DescriptionHeight));
			//TODO: add some legal info?
		}

		private static void DrawDebug()
		{
			if (!Config.IsDebug)
			{
				return;
			}
			GUILayout.Space(Padding);
			EditorGUILayout.HelpBox("DEVELOPER MODE ENABLED", MessageType.Warning);
		}
	}
}