95 lines
4.3 KiB
C#
95 lines
4.3 KiB
C#
using System;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace HeurekaGames
|
|
{
|
|
public static class Heureka_WindowStyler
|
|
{
|
|
public static float HeaderHeight { get; private set; } = 24f;
|
|
|
|
public static readonly Color clr_Pink = new Color((226f / 256f), (32f / 256f), (140f / 256f), 1);
|
|
public static readonly Color clr_Dark = new Color((48f / 256f), (41f / 256f), (47f / 256f), 1);
|
|
public static readonly Color clr_dBlue = new Color((47f / 256f), (102f / 256f), (144f / 256f), 1);
|
|
public static readonly Color clr_lBlue = new Color((58f / 256f), (124f / 256f), (165f / 256f), 1);
|
|
public static readonly Color clr_White = new Color((217f / 256f), (220f / 256f), (214f / 256f), 1);
|
|
public static readonly Color clr_Red = new Color((183f / 256f), (0f / 256f), (0f / 256f));
|
|
public static readonly Color clr_middleGreen = new Color((85f / 256f), (133f / 256f), (100f / 256f));
|
|
|
|
public static void DrawGlobalHeader(Color color, string label, string version = "", Action additionHeaderContent = null)
|
|
{
|
|
EditorGUI.DrawRect(new Rect(0, 0, EditorGUIUtility.currentViewWidth, HeaderHeight), color);
|
|
EditorGUILayout.BeginHorizontal();
|
|
GUILayout.Space(4);
|
|
|
|
if (Heureka_EditorData.Instance.HeadlineStyle != null)
|
|
GUILayout.Label(label + " ", Heureka_EditorData.Instance.HeadlineStyle, GUILayout.ExpandWidth(false));
|
|
|
|
if (version != "")
|
|
{
|
|
EditorGUILayout.BeginVertical();
|
|
EditorGUILayout.Space();
|
|
GUILayout.Label(version, EditorStyles.whiteLabel);
|
|
EditorGUILayout.EndVertical();
|
|
additionHeaderContent?.Invoke();
|
|
}
|
|
|
|
if(additionHeaderContent==null)
|
|
GUILayout.FlexibleSpace();
|
|
|
|
EditorGUILayout.EndHorizontal();
|
|
}
|
|
|
|
public static void DrawCenteredImage(EditorWindow window, Texture image)
|
|
{
|
|
if (window == null)
|
|
return;
|
|
|
|
GUI.Box(new Rect((window.position.width * .5f) - (image.width * .5f), (window.position.height * .5f) - (image.height * .5f), image.width, image.height), image, GUIStyle.none);
|
|
}
|
|
|
|
public static void DrawCenteredMessage(EditorWindow window, Texture icon, float msgWidth, float msgHeight, string messsage)
|
|
{
|
|
if (window == null)
|
|
return;
|
|
|
|
Vector2 iconSize = Vector2.zero;
|
|
if (icon != null)
|
|
iconSize = new Vector2(icon.width, icon.height);
|
|
|
|
Vector2 outerBoxSize = new Vector2(msgWidth, msgHeight);
|
|
float frameWidth = 5;
|
|
Vector2 innerBoxSize = new Vector2(outerBoxSize.x - frameWidth * 2, outerBoxSize.y - frameWidth * 2);
|
|
|
|
Vector2 rectStartPos = new Vector2((window.position.width * .5f) - (outerBoxSize.x * .5f), (window.position.height * .5f) - (outerBoxSize.y * .5f) + (iconSize.y * .5f));
|
|
|
|
EditorGUI.DrawRect(new Rect(rectStartPos.x, rectStartPos.y, outerBoxSize.x, outerBoxSize.y), Heureka_WindowStyler.clr_White);
|
|
EditorGUI.DrawRect(new Rect(rectStartPos.x + frameWidth, rectStartPos.y + frameWidth, innerBoxSize.x, innerBoxSize.y), Heureka_WindowStyler.clr_dBlue);
|
|
|
|
float bounds = 20;
|
|
Vector2 logoStartPos = rectStartPos + new Vector2(bounds, bounds);
|
|
GUI.Box(new Rect(logoStartPos.x, logoStartPos.y, iconSize.x, iconSize.y), icon, GUIStyle.none);
|
|
|
|
Vector2 labelStartPos = logoStartPos + new Vector2(iconSize.x + frameWidth * 2, 0);
|
|
float textWidth = innerBoxSize.x - iconSize.x - (bounds * 2);
|
|
float textHeight = 30;
|
|
|
|
string[] lines = messsage.Split(
|
|
new[] { Environment.NewLine },
|
|
StringSplitOptions.None
|
|
);
|
|
|
|
GUI.Label(new Rect(labelStartPos.x, labelStartPos.y, textWidth, textHeight), lines[0], Heureka_EditorData.Instance.HeadlineStyle);
|
|
|
|
var whiteStyle = new GUIStyle(EditorStyles.label);
|
|
whiteStyle.normal.textColor = Color.white;
|
|
|
|
labelStartPos.y += 20;
|
|
for (int i = 1; i < lines.Length; i++)
|
|
{
|
|
GUI.Label(new Rect(labelStartPos.x, labelStartPos.y, textWidth, textHeight), lines[i], whiteStyle);
|
|
labelStartPos.y += 16;
|
|
}
|
|
}
|
|
}
|
|
} |