using Godot; using Rokojori; using System.Collections.Generic; namespace Rokojori { [Tool] [GlobalClass,Icon("res://addons/rokojori_action_library/Icons/UIText.svg")] public partial class UIText:Label,UIStylePropertyContainer, iLocalizable { LocalizedString _locale; [Export] public LocalizedString locale { get => _locale; set { _locale = value; UpdateLocalization(); } } [Export] public bool refreshText { get => false; set { if ( value ) UpdateLocalization(); UpdateFont(); } } [Export] public bool disableLocalization = false; public void UpdateLocalization() { if ( disableLocalization ) { return; } Text = LocalizedString.Get( _locale ); } [Export] public bool alwaysMinimumSize = true; UIStyle _parentStyle; [Export] public UIStyle parentStyle { get => _parentStyle; set { _parentStyle = value; UpdateFont(); } } Font _font; [ExportGroup( "Font" )] [Export] public Font font { get => _font; set { _font = value; UpdateFont(); } } [Export] public UINumber fontSize; [Export] public UIColor fontColor; [Export] public UINumber outlineSize; [Export] public UIColor outlineColor; [Export] public UINumber shadowSize; [Export] public UIColor shadowColor; [Export] public UINumber shadowOffsetX; [Export] public UINumber shadowOffsetY; [ExportGroup("Size & Margins")] [Export] public UINumber width; [Export] public UINumber height; [Export] public UINumber margin; [Export] public UINumber marginLeft; [Export] public UINumber marginTop; [Export] public UINumber marginRight; [Export] public UINumber marginBottom; [ExportGroup( "Position" )] [Export] public UIPosition position; [Export] public UILineWrap lineWrap; [Export] public UINumber left; [Export] public UINumber top; [Export] public UINumber right; [Export] public UINumber bottom; [ExportGroup("Rotation & Scale")] [Export] public UINumber pivotX; [Export] public UINumber pivotY; [Export] public UINumber rotation; [Export] public UINumber scale; [Export] public UINumber scaleX; [Export] public UINumber scaleY; public Font GetFont() { return font; } void UpdateFont() { var resolvedFont = UIStyle.Font( this ); if ( resolvedFont != null ) { RemoveThemeFontOverride( "font" ); AddThemeFontOverride( "font", resolvedFont ); } } public List> GetActiveShaderUIColorTransitions() { return null; } public List> GetActiveShaderUINumberTransitions() { return null; } [ExportGroup("Transitions")] [Export] public TransitionSettingsAll transitionSettings; public TransitionSettingsAll GetTransitionSettingsAll() { return transitionSettings; } [Export] public UINumberTransition[] numberTransitions = new UINumberTransition[ 0 ]; public UINumberTransition[] GetNumberTransitions() { return numberTransitions; } public List> activeNumberTransitions = new List>(); public List> GetActiveUINumberTransitions() { return activeNumberTransitions; } [Export] public UIColorTransition[] colorTransitions = new UIColorTransition[ 0 ]; public UIColorTransition[] GetColorTransitions() { return colorTransitions; } public List> activeColorTransitions = new List>(); public List> GetActiveUIColorTransitions() { return activeColorTransitions; } LabelSettings _labelSettings; public LabelSettings uiTextLabelSettings { get { if ( _labelSettings == null ) { _labelSettings = new LabelSettings(); } LabelSettings = _labelSettings; return _labelSettings; } set { _labelSettings = value.Duplicate() as LabelSettings; LabelSettings = _labelSettings; } } public UIStyle GetUIStyleParent() { return parentStyle; } public UIPosition GetUIPosition() { return position; } public UILineWrap GetUILineWrap() { return lineWrap; } public UILayout GetUILayout() { return UILayout.___; } public ShaderUIColor[] GetShaderUIColors() { return null; } public ShaderUINumber[] GetShaderUINumbers() { return null; } public UINumber GetUIStyleNumberProperty( UIStyleNumberProperty property ) { switch ( property ) { case UIStyleNumberProperty.Width: return width; case UIStyleNumberProperty.Height: return height; case UIStyleNumberProperty.Margin: return margin; case UIStyleNumberProperty.MarginLeft: return marginLeft; case UIStyleNumberProperty.MarginRight: return marginRight; case UIStyleNumberProperty.MarginTop: return marginTop; case UIStyleNumberProperty.MarginBottom: return marginBottom; case UIStyleNumberProperty.Left: return left; case UIStyleNumberProperty.Right: return right; case UIStyleNumberProperty.Top: return top; case UIStyleNumberProperty.Bottom: return bottom; case UIStyleNumberProperty.PivotX: return pivotX; case UIStyleNumberProperty.PivotY: return pivotY; case UIStyleNumberProperty.Rotation: return rotation; case UIStyleNumberProperty.Scale: return scale; case UIStyleNumberProperty.ScaleX: return scaleX; case UIStyleNumberProperty.ScaleY: return scaleY; case UIStyleNumberProperty.FontSize: return fontSize; case UIStyleNumberProperty.FontOutlineSize: return outlineSize; case UIStyleNumberProperty.FontShadowSize: return shadowSize; case UIStyleNumberProperty.FontShadowOffsetX: return shadowOffsetX; case UIStyleNumberProperty.FontShadowOffsetY: return shadowOffsetY; } return null; } public Vector2 GetUISize() { return GetSize(); } public UIColor GetUIStyleColorProperty( UIStyleColorProperty property ) { switch ( property ) { case UIStyleColorProperty.FontColor: return fontColor; case UIStyleColorProperty.FontOutlineColor: return outlineColor; case UIStyleColorProperty.FontShadowColor: return shadowColor; } return null; } } }