Aimbot-PPO/Aimbot-PPO-MultiScene/Assets/XCharts/Runtime/Theme/ThemeStyle.cs
Koha9 2d404cfdf2 Aimbot Enviroment very first
Basic environment include Multi scene, Reward Change, Visible chart, etc....
2022-09-05 20:46:08 +09:00

236 lines
8.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
#if dUI_TextMeshPro
using TMPro;
#endif
namespace XCharts.Runtime
{
/// <summary>
/// 主题
/// </summary>
public enum ThemeType
{
/// <summary>
/// 默认主题。
/// </summary>
Default,
/// <summary>
/// 亮主题。
/// </summary>
Light,
/// <summary>
/// 暗主题。
/// </summary>
Dark,
/// <summary>
/// 自定义主题。
/// </summary>
Custom,
}
[Serializable]
/// <summary>
/// Theme.
/// |主题相关配置。
/// </summary>
public class ThemeStyle : ChildComponent
{
[SerializeField] private bool m_Show = true;
[SerializeField] private Theme m_SharedTheme;
[SerializeField] private bool m_TransparentBackground = false;
[SerializeField] private bool m_EnableCustomTheme = false;
[SerializeField] private Font m_CustomFont;
[SerializeField] private Color32 m_CustomBackgroundColor;
#if UNITY_2020_2
[NonReorderable]
#endif
[SerializeField] private List<Color32> m_CustomColorPalette = new List<Color32>(13);
public bool show { get { return m_Show; } }
/// <summary>
/// the theme of chart.
/// |主题类型。
/// </summary>
public ThemeType themeType
{
get { return sharedTheme.themeType; }
}
public string themeName
{
get { return sharedTheme.themeName; }
}
public Theme sharedTheme
{
get { return m_SharedTheme; }
set { m_SharedTheme = value; SetAllDirty(); }
}
/// <summary>
/// the contrast color of chart.
/// |对比色。
/// </summary>
public Color32 contrastColor
{
get { return sharedTheme.contrastColor; }
}
/// <summary>
/// the background color of chart.
/// |背景颜色。
/// </summary>
public Color32 backgroundColor
{
get
{
if (m_TransparentBackground) return ColorUtil.clearColor32;
else return m_EnableCustomTheme ? m_CustomBackgroundColor : sharedTheme.backgroundColor;
}
}
/// <summary>
/// Whether the background color is transparent. When true, the background color is not drawn.
/// 是否透明背景颜色。当设置为true时不绘制背景颜色。
/// </summary>
public bool transparentBackground
{
get { return m_TransparentBackground; }
set { m_TransparentBackground = value; SetAllDirty(); }
}
/// <summary>
/// Whether to customize theme colors. When set to true,
/// you can use 'sync color to custom' to synchronize the theme color to the custom color. It can also be set manually.
/// |是否自定义主题颜色。当设置为true时可以用sync color to custom同步主题的颜色到自定义颜色。也可以手动设置。
/// </summary>
/// <value></value>
public bool enableCustomTheme
{
get { return m_EnableCustomTheme; }
set { m_EnableCustomTheme = value; _colorDic.Clear(); SetAllDirty(); }
}
/// <summary>
/// the custom background color of chart.
/// |自定义的背景颜色。
/// </summary>
public Color32 customBackgroundColor
{
get { return m_CustomBackgroundColor; }
set { m_CustomBackgroundColor = value; SetAllDirty(); }
}
/// <summary>
/// The color list of palette. If no color is set in series, the colors would be adopted sequentially and circularly from this list as the colors of series.
/// |调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。
/// </summary>
public List<Color32> colorPalette
{
get { return m_EnableCustomTheme ? m_CustomColorPalette : sharedTheme.colorPalette; }
}
public List<Color32> customColorPalette { get { return m_CustomColorPalette; } set { m_CustomColorPalette = value; SetVerticesDirty(); } }
public ComponentTheme common { get { return sharedTheme.common; } }
public TitleTheme title { get { return sharedTheme.title; } }
public SubTitleTheme subTitle { get { return sharedTheme.subTitle; } }
public LegendTheme legend { get { return sharedTheme.legend; } }
public AxisTheme axis { get { return sharedTheme.axis; } }
public TooltipTheme tooltip { get { return sharedTheme.tooltip; } }
public DataZoomTheme dataZoom { get { return sharedTheme.dataZoom; } }
public VisualMapTheme visualMap { get { return sharedTheme.visualMap; } }
public SerieTheme serie { get { return sharedTheme.serie; } }
/// <summary>
/// Gets the color of the specified index from the palette.
/// |获得调色盘对应系列索引的颜色值。
/// </summary>
/// <param name="index">编号索引</param>
/// <returns>the color,or Color.clear when failed.颜色值失败时返回Color.clear</returns>
public Color32 GetColor(int index)
{
if (colorPalette.Count <= 0) return Color.clear;
if (index < 0) index = 0;
var newIndex = index < colorPalette.Count ? index : index % colorPalette.Count;
if (newIndex < colorPalette.Count)
return colorPalette[newIndex];
else return Color.clear;
}
public Color32 GetBackgroundColor(Background background)
{
if (background != null && background.show && !background.autoColor)
return background.imageColor;
else
return backgroundColor;
}
public void SyncSharedThemeColorToCustom()
{
m_CustomBackgroundColor = sharedTheme.backgroundColor;
m_CustomColorPalette.Clear();
foreach (var color in sharedTheme.colorPalette)
{
m_CustomColorPalette.Add(color);
}
SetAllDirty();
}
public void CheckWarning(StringBuilder sb)
{
#if dUI_TextMeshPro
if (sharedTheme.tmpFont == null)
{
sb.AppendFormat("warning:theme->tmpFont is null\n");
}
#else
if (sharedTheme.font == null)
{
sb.AppendFormat("warning:theme->font is null\n");
}
#endif
if (sharedTheme.colorPalette.Count == 0)
{
sb.AppendFormat("warning:theme->colorPalette is empty\n");
}
for (int i = 0; i < sharedTheme.colorPalette.Count; i++)
{
if (!ChartHelper.IsClearColor(sharedTheme.colorPalette[i]) && sharedTheme.colorPalette[i].a == 0)
sb.AppendFormat("warning:theme->colorPalette[{0}] alpha = 0\n", i);
}
}
Dictionary<int, string> _colorDic = new Dictionary<int, string>();
/// <summary>
/// Gets the hexadecimal color string of the specified index from the palette.
/// |获得指定索引的十六进制颜色值字符串。
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public string GetColorStr(int index)
{
if (index < 0)
{
index = 0;
}
index = index % colorPalette.Count;
if (_colorDic.ContainsKey(index)) return _colorDic[index];
else
{
_colorDic[index] = ColorUtility.ToHtmlStringRGBA(GetColor(index));
return _colorDic[index];
}
}
/// <summary>
/// Convert the html string to color.
/// |将字符串颜色值转成Color。
/// </summary>
/// <param name="hexColorStr"></param>
/// <returns></returns>
public static Color32 GetColor(string hexColorStr)
{
Color color;
ColorUtility.TryParseHtmlString(hexColorStr, out color);
return (Color32) color;
}
}
}