using System.Collections.Generic; using UnityEngine; using VketCloudGUITools.Serialization; using UnityText = UnityEngine.UI.Text; namespace VketCloudGUITools.Runtime { [RequireComponent(typeof(RectTransform))] [RequireComponent(typeof(UnityText))] public partial class VCText : VCGUIItemBehaviour, IVCGUIItem, IHasStateToggleList, IHasVCTransform { [SerializeField] private UnityText _unityText; [SerializeField] private bool _isToasterText = false; [SerializeField] private List _toggleList = new List(); [SerializeField] public string TextEn = null; [SerializeField] public ParamTextAlignment Alignment = ParamTextAlignment.LT; [SerializeField] public string FontFamily = ""; [SerializeField] public int CharaSpace; [SerializeField] public int LineSpace; [SerializeField] public bool OverflowWrap; [SerializeField] public bool URLClickable; [SerializeField] public List URLColor; public override void ResolveRequireComponents() { _vcTransform = GetComponent(); _unityText = GetComponent(); } public string Name { get => gameObject.name; set => gameObject.name = value; } public string Text { get => _unityText.text; set => _unityText.text = value; } public AnchorType Anchor => _vcTransform.Anchor; public int FontSize { get { return _unityText.fontSize; } set { _unityText.fontSize = value; } } public Color MulColor { get { return _unityText.color; } set { _unityText.color = value; } } public bool IsToasterText { get => _isToasterText; set => _isToasterText = value; } public List ToggleList { get => _toggleList; set => _toggleList = value; } public override void OnResolveReferences(VCLayerList parentLayer) { _parentLayer = parentLayer; ResolveRequireComponents(); } public override void OnParentLayerShowChanged() { UpdateVisible(); } public override void UpdateVisible() { Visible = Show && ToggleList.IsAllTrue() && (ParentLayer != null ? ParentLayer.Show : true); } public override void OnVisibleChanged() { if (_unityText != null) _unityText.enabled = Visible; } public void ToggleChange(string name) { StateToggleListUtility.CommonToggleChange(this, this, name); } public void ToggleDefault(string name) { StateToggleListUtility.CommonToggleDefault(this, this, name); } } }