using System;
using System.Collections.Generic;
using UnityEngine;
namespace FairyGUI
{
///
/// Global configs. These options should be set before any UI construction.
///
[AddComponentMenu("FairyGUI/UI Config")]
public class UIConfig : MonoBehaviour
{
///
/// Dynamic Font Support.
/// 4.x: Put the xxx.ttf into /Resources or /Resources/Fonts, and set defaultFont="xxx".
/// 5.x: set defaultFont to system font name(or names joint with comma). e.g. defaultFont="Microsoft YaHei, SimHei"
///
public static string defaultFont = "";
[Obsolete("No use anymore")]
public static bool renderingTextBrighterOnDesktop = true;
///
/// Resource using in Window.ShowModalWait for locking the window.
///
public static string windowModalWaiting;
///
/// Resource using in GRoot.ShowModalWait for locking the screen.
///
public static string globalModalWaiting;
///
/// When a modal window is in front, the background becomes dark.
///
public static Color modalLayerColor = new Color(0f, 0f, 0f, 0.4f);
///
/// Default button click sound.
///
public static NAudioClip buttonSound;
///
/// Default button click sound volume.
///
public static float buttonSoundVolumeScale = 1f;
///
/// Resource url of horizontal scrollbar
///
public static string horizontalScrollBar;
///
/// Resource url of vertical scrollbar
///
public static string verticalScrollBar;
///
/// Scrolling step in pixels
/// 当调用ScrollPane.scrollUp/Down/Left/Right时,或者点击滚动条的上下箭头时,滑动的距离。
/// 鼠标滚轮触发一次滚动的距离设定为defaultScrollStep*2
///
public static float defaultScrollStep = 25;
///
/// Deceleration ratio of scrollpane when its in touch dragging.
/// 当手指拖动并释放滚动区域后,内容会滑动一定距离后停下,这个速率就是减速的速率。
/// 越接近1,减速越慢,意味着滑动的时间和距离更长。
/// 这个是全局设置,也可以通过ScrollPane.decelerationRate进行个性设置。
///
public static float defaultScrollDecelerationRate = 0.967f;
///
/// Scrollbar display mode. Recommended 'Auto' for mobile and 'Visible' for web.
///
public static ScrollBarDisplayType defaultScrollBarDisplay = ScrollBarDisplayType.Default;
///
/// Allow dragging anywhere in container to scroll.
///
public static bool defaultScrollTouchEffect = true;
///
/// The "rebound" effect in the scolling container.
///
public static bool defaultScrollBounceEffect = true;
///
/// When the scrolling container is set to "snap to the item", the rolling distance threshold of which item is close to is determined.
///
public static float defaultScrollSnappingThreshold = 0.5f;
///
/// When the scrolling container is set to "page mode", it determines the scrolling distance threshold to which page to turn.
///
public static float defaultScrollPagingThreshold = 0.3f;
///
/// Resources url of PopupMenu.
///
public static string popupMenu;
///
/// Resource url of menu seperator.
///
public static string popupMenu_seperator;
///
/// In case of failure of loading content for GLoader, use this sign to indicate an error.
///
public static string loaderErrorSign;
///
/// Resource url of tooltips.
///
public static string tooltipsWin;
///
/// The number of visible items in ComboBox.
///
public static int defaultComboBoxVisibleItemCount = 10;
///
/// Pixel offsets of finger to trigger scrolling
///
public static int touchScrollSensitivity = 20;
///
/// Pixel offsets of finger to trigger dragging
///
public static int touchDragSensitivity = 10;
///
/// Pixel offsets of mouse pointer to trigger dragging.
///
public static int clickDragSensitivity = 2;
///
/// Allow softness on top or left side for scrollpane.
///
public static bool allowSoftnessOnTopOrLeftSide = true;
///
/// When click the window, brings to front automatically.
///
public static bool bringWindowToFrontOnClick = true;
///
///
///
public static float inputCaretSize = 1;
///
///
///
public static Color inputHighlightColor = new Color32(255, 223, 141, 128);
///
///
///
public static float frameTimeForAsyncUIConstruction = 0.002f;
///
/// if RenderTexture using in painting mode has depth support.
///
public static bool depthSupportForPaintingMode = true;
///
/// Indicates whether to draw extra 4 or 8 times to achieve stroke effect for textfield.
/// If it is true, that is the 8 times, otherwise it is the 4 times.
///
public static bool enhancedTextOutlineEffect = false;
[Obsolete("No use anymore.")]
public static VertAlignType richTextRowVerticalAlign = VertAlignType.Bottom;
///
/// Suggest to enable it on low dpi (e.g. 96dpi) screens.
///
public static bool makePixelPerfect = false;
public enum ConfigKey
{
DefaultFont,
ButtonSound,
ButtonSoundVolumeScale,
HorizontalScrollBar,
VerticalScrollBar,
DefaultScrollStep,
DefaultScrollBarDisplay,
DefaultScrollTouchEffect,
DefaultScrollBounceEffect,
TouchScrollSensitivity,
WindowModalWaiting,
GlobalModalWaiting,
PopupMenu,
PopupMenu_seperator,
LoaderErrorSign,
TooltipsWin,
DefaultComboBoxVisibleItemCount,
TouchDragSensitivity,
ClickDragSensitivity,
ModalLayerColor,
RenderingTextBrighterOnDesktop,
AllowSoftnessOnTopOrLeftSide,
InputCaretSize,
InputHighlightColor,
EnhancedTextOutlineEffect,
DepthSupportForPaintingMode,
RichTextRowVerticalAlign,
Branch,
PleaseSelect = 100
}
[Serializable]
public class ConfigValue
{
public bool valid;
public string s;
public int i;
public float f;
public bool b;
public Color c;
public void Reset()
{
valid = false;
s = null;
i = 0;
f = 0;
b = false;
c = Color.black;
}
}
public List Items = new List();
public List PreloadPackages = new List();
void Awake()
{
if (Application.isPlaying)
{
foreach (string packagePath in PreloadPackages)
{
UIPackage.AddPackage(packagePath);
}
Load();
}
}
public void Load()
{
int cnt = Items.Count;
for (int i = 0; i < cnt; i++)
{
ConfigValue value = Items[i];
if (!value.valid)
continue;
switch ((UIConfig.ConfigKey)i)
{
case ConfigKey.ButtonSound:
if (Application.isPlaying)
UIConfig.buttonSound = UIPackage.GetItemAssetByURL(value.s) as NAudioClip;
break;
case ConfigKey.ButtonSoundVolumeScale:
UIConfig.buttonSoundVolumeScale = value.f;
break;
case ConfigKey.ClickDragSensitivity:
UIConfig.clickDragSensitivity = value.i;
break;
case ConfigKey.DefaultComboBoxVisibleItemCount:
UIConfig.defaultComboBoxVisibleItemCount = value.i;
break;
case ConfigKey.DefaultFont:
UIConfig.defaultFont = value.s;
break;
case ConfigKey.DefaultScrollBarDisplay:
UIConfig.defaultScrollBarDisplay = (ScrollBarDisplayType)value.i;
break;
case ConfigKey.DefaultScrollBounceEffect:
UIConfig.defaultScrollBounceEffect = value.b;
break;
case ConfigKey.DefaultScrollStep:
UIConfig.defaultScrollStep = value.i;
break;
case ConfigKey.DefaultScrollTouchEffect:
UIConfig.defaultScrollTouchEffect = value.b;
break;
case ConfigKey.GlobalModalWaiting:
UIConfig.globalModalWaiting = value.s;
break;
case ConfigKey.HorizontalScrollBar:
UIConfig.horizontalScrollBar = value.s;
break;
case ConfigKey.LoaderErrorSign:
UIConfig.loaderErrorSign = value.s;
break;
case ConfigKey.ModalLayerColor:
UIConfig.modalLayerColor = value.c;
break;
case ConfigKey.PopupMenu:
UIConfig.popupMenu = value.s;
break;
case ConfigKey.PopupMenu_seperator:
UIConfig.popupMenu_seperator = value.s;
break;
case ConfigKey.TooltipsWin:
UIConfig.tooltipsWin = value.s;
break;
case ConfigKey.TouchDragSensitivity:
UIConfig.touchDragSensitivity = value.i;
break;
case ConfigKey.TouchScrollSensitivity:
UIConfig.touchScrollSensitivity = value.i;
break;
case ConfigKey.VerticalScrollBar:
UIConfig.verticalScrollBar = value.s;
break;
case ConfigKey.WindowModalWaiting:
UIConfig.windowModalWaiting = value.s;
break;
case ConfigKey.AllowSoftnessOnTopOrLeftSide:
UIConfig.allowSoftnessOnTopOrLeftSide = value.b;
break;
case ConfigKey.InputCaretSize:
UIConfig.inputCaretSize = value.i;
break;
case ConfigKey.InputHighlightColor:
UIConfig.inputHighlightColor = value.c;
break;
case ConfigKey.DepthSupportForPaintingMode:
UIConfig.depthSupportForPaintingMode = value.b;
break;
case ConfigKey.EnhancedTextOutlineEffect:
UIConfig.enhancedTextOutlineEffect = value.b;
break;
case ConfigKey.Branch:
UIPackage.branch = value.s;
break;
}
}
}
public static void SetDefaultValue(ConfigKey key, ConfigValue value)
{
switch (key)
{
case ConfigKey.ButtonSoundVolumeScale:
value.f = 1;
break;
case ConfigKey.ClickDragSensitivity:
value.i = 2;
break;
case ConfigKey.DefaultComboBoxVisibleItemCount:
value.i = 10;
break;
case ConfigKey.DefaultScrollBarDisplay:
value.i = (int)ScrollBarDisplayType.Default;
break;
case ConfigKey.DefaultScrollBounceEffect:
case ConfigKey.DefaultScrollTouchEffect:
value.b = true;
break;
case ConfigKey.DefaultScrollStep:
value.i = 25;
break;
case ConfigKey.ModalLayerColor:
value.c = new Color(0f, 0f, 0f, 0.4f);
break;
case ConfigKey.RenderingTextBrighterOnDesktop:
value.b = true;
break;
case ConfigKey.TouchDragSensitivity:
value.i = 10;
break;
case ConfigKey.TouchScrollSensitivity:
value.i = 20;
break;
case ConfigKey.InputCaretSize:
value.i = 1;
break;
case ConfigKey.InputHighlightColor:
value.c = new Color32(255, 223, 141, 128);
break;
case ConfigKey.DepthSupportForPaintingMode:
value.b = false;
break;
case ConfigKey.Branch:
value.s = "";
break;
}
}
public static void ClearResourceRefs()
{
UIConfig.defaultFont = "";
UIConfig.buttonSound = null;
UIConfig.globalModalWaiting = null;
UIConfig.horizontalScrollBar = null;
UIConfig.loaderErrorSign = null;
UIConfig.popupMenu = null;
UIConfig.popupMenu_seperator = null;
UIConfig.tooltipsWin = null;
UIConfig.verticalScrollBar = null;
UIConfig.windowModalWaiting = null;
UIPackage.branch = null;
}
public void ApplyModifiedProperties()
{
EMRenderSupport.Reload();
}
public delegate NAudioClip SoundLoader(string url);
///
///
///
public static SoundLoader soundLoader = null;
}
}