| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 | using System.Collections.Generic;using System.IO;using UnityEngine;#if UNITY_EDITORusing UnityEditor;#endif#if dUI_TextMeshProusing TMPro;#endifnamespace XCharts.Runtime{    public static class XCThemeMgr    {        /// <summary>        /// 重新加载主题列表        /// </summary>        public static void ReloadThemeList()        {            XChartsMgr.themes.Clear();            XChartsMgr.themeNames.Clear();            AddTheme(LoadTheme(ThemeType.Default));            AddTheme(LoadTheme(ThemeType.Dark));            if (XCSettings.Instance != null)            {                foreach (var theme in XCSettings.customThemes)                {                    AddTheme(theme);                }            }        }        public static void CheckReloadTheme()        {            if (XChartsMgr.themeNames.Count < 0)                ReloadThemeList();        }        public static void AddTheme(Theme theme)        {            if (theme == null) return;            if (!XChartsMgr.themes.ContainsKey(theme.themeName))            {                XChartsMgr.themes.Add(theme.themeName, theme);                XChartsMgr.themeNames.Add(theme.themeName);                XChartsMgr.themeNames.Sort();            }        }        public static Theme GetTheme(ThemeType type)        {            return GetTheme(type.ToString());        }        public static Theme GetTheme(string themeName)        {            if (!XChartsMgr.themes.ContainsKey(themeName))            {                ReloadThemeList();                if (XChartsMgr.themes.ContainsKey(themeName))                    return XChartsMgr.themes[themeName];                else                    return null;            }            else            {                return XChartsMgr.themes[themeName];            }        }        public static Theme LoadTheme(ThemeType type)        {            return LoadTheme(type.ToString());        }        public static Theme LoadTheme(string themeName)        {            var theme = Resources.Load<Theme>(XCSettings.THEME_ASSET_NAME_PREFIX + themeName);            if (theme == null)                theme = Resources.Load<Theme>(themeName);            return theme;        }        public static List<string> GetAllThemeNames()        {            return XChartsMgr.themeNames;        }        public static List<Theme> GetThemeList()        {            var list = new List<Theme>();            foreach (var theme in XChartsMgr.themes.Values)            {                list.Add(theme);            }            return list;        }        public static bool ContainsTheme(string themeName)        {            return XChartsMgr.themeNames.Contains(themeName);        }        public static void SwitchTheme(BaseChart chart, string themeName)        {#if UNITY_EDITOR            if (XChartsMgr.themes.Count == 0)            {                ReloadThemeList();            }#endif            if (!XChartsMgr.themes.ContainsKey(themeName))            {                Debug.LogError("SwitchTheme ERROR: not exist theme:" + themeName);                return;            }            var target = XChartsMgr.themes[themeName];            chart.UpdateTheme(target);        }        public static bool ExportTheme(Theme theme, string themeNewName)        {#if UNITY_EDITOR            var newtheme = Theme.EmptyTheme;            newtheme.CopyTheme(theme);            newtheme.themeType = ThemeType.Custom;            newtheme.themeName = themeNewName;            ExportTheme(newtheme);            return true;#else            return false;#endif        }        public static bool ExportTheme(Theme theme)        {#if UNITY_EDITOR            var themeAssetName = XCSettings.THEME_ASSET_NAME_PREFIX + theme.themeName;            var themeAssetPath = Application.dataPath + "/../" + XCSettings.THEME_ASSET_FOLDER;            if (!Directory.Exists(themeAssetPath))            {                Directory.CreateDirectory(themeAssetPath);            }            var themeAssetFilePath = string.Format("{0}/{1}.asset", XCSettings.THEME_ASSET_FOLDER, themeAssetName);            AssetDatabase.CreateAsset(theme, themeAssetFilePath);            AssetDatabase.SaveAssets();            AssetDatabase.Refresh();            return true;#else            return false;#endif        }        public static string GetThemeAssetPath(string themeName)        {            return string.Format("{0}/{1}{2}.asset", XCSettings.THEME_ASSET_FOLDER,                XCSettings.THEME_ASSET_NAME_PREFIX, themeName);        }    }}
 |