public IEntry Set(IScWidget widget, int weight) { foreach (var entry in m_List) { if (entry.Widget == entry) { entry.Weight = weight; if (m_Children.Contains(widget)) { if (weight > 0) { m_Children.Add(widget); } else { m_Children.Remove(widget); } } return(entry); } } var ret = new Entry { Widget = widget, Weight = weight }; m_List.Add(ret); if (weight > 0) { m_Children.Add(widget); } return(ret); }
protected UComponent GetComponent(uGUIBuilder context, IScWidget widget) { var entry = context.GetEntry(widget); if (entry.Obj == null) { return(default);
protected void Run(IScWidget widget) { IHandler handler = null; try { if (s_Handler.TryGetValue(widget.GetType(), out handler)) { handler.Run(Context, widget); } else { FallbackRun(Context, widget); } foreach (var child in widget.GetChildren()) { Run(child); } } finally { if (handler != null) { handler.Finish(Context, widget); } else { FallbackFinish(Context, widget); } } }
protected override void FallbackRun(uGUIBuilder context, IScWidget widget) { var entry = context.GetEntry(widget); var rect = widget.GetRelativeRect(); entry.ChildRoot.anchoredPosition = (rect.position + rect.size * 0.5f) * new Vector2(1, -1); entry.ChildRoot.sizeDelta = rect.size; }
public GameObject Build(IScWidget root) { SetContext(this); SetRootWidget(root); root.SetDitry(); CalcLayout(new Rect(0, 0, Screen.width, Screen.height)); Prepare(Root); Run(root); return(GetEntry(root).Obj); }
protected GUIStyle GetStyle(SkinIMGUIDrawer context, IScWidget widget) { var entry = context.GetEntry(widget); if (entry.Style == null) { entry.Style = CreateStyle(context, widget); } return(entry.Style); }
protected GUIStyle GetStyle(SkinIMGUIDrawer context, IScWidget widget, string def) { var entry = context.GetEntry(widget); if (entry.Style == null) { entry.Style = new GUIStyle(def); } return(entry.Style); }
public static T GetExtend <T>(this IScWidget self) where T : IExtend { if (self.Extends != null) { foreach (var e in self.Extends) { if (e is T ret) { return(ret); } } } return(default);
protected override void FallbackPrepare(uGUIBuilder context, IScWidget widget) { var parent = context.GetEntry(widget.Parent); var entry = context.GetEntry(widget); entry.Obj = new GameObject(widget.Name ?? widget.GetType().Name); entry.ChildRoot = entry.Obj.AddComponent <RectTransform>(); entry.ChildRoot.anchorMax = new Vector2(0, 1); entry.ChildRoot.anchorMin = new Vector2(0, 1); if (parent != null && parent.ChildRoot != null) { entry.Obj.transform.SetParent(parent.ChildRoot); } }
protected override GUIStyle CreateStyle(SkinIMGUIDrawer context, IScWidget widget) { GUIStyle style = new GUIStyle("Button"); style.normal.background = context.Skin.Button.texture; style.active.background = context.Skin.Button.texture; style.hover.background = context.Skin.Button.texture; style.onNormal.background = context.Skin.Button.texture; style.onActive.background = context.Skin.Button.texture; style.onHover.background = context.Skin.Button.texture; var border = context.Skin.Button.border; style.border = new RectOffset((int)border.x, (int)border.y, (int)border.z, (int)border.w); return(style); }
protected GUIStyle GetStyle(string key, SkinIMGUIDrawer context, IScWidget widget, string def) { var entry = context.GetEntry(widget); if (entry.Styles == null) { entry.Styles = new Dictionary <string, GUIStyle>(); } GUIStyle style; if (!entry.Styles.TryGetValue(key, out style)) { entry.Styles[key] = style = new GUIStyle(def); } return(style); }
protected void Prepare(IScWidget widget) { IHandler handler; if (s_Handler.TryGetValue(widget.GetType(), out handler)) { handler.Prepare(Context, widget); } else { FallbackPrepare(Context, widget); } foreach (var child in widget.GetChildren()) { Prepare(child); } }
protected UComponent Create(uGUIBuilder context, IScWidget widget) { var parent = context.GetEntry(widget.Parent); var entry = context.GetEntry(widget); entry.Obj = new GameObject(widget.Name ?? widget.GetType().Name); entry.ChildRoot = entry.Obj.AddComponent <RectTransform>(); entry.ChildRoot.anchorMax = new Vector2(0, 1); entry.ChildRoot.anchorMin = new Vector2(0, 1); if (parent != null && parent.ChildRoot != null) { entry.Obj.transform.SetParent(parent.ChildRoot); } var ret = entry.Obj.AddComponent <UComponent>(); entry.Component = ret; return(ret); }
protected override GUIStyle CreateStyle(SkinIMGUIDrawer context, IScWidget widget) { var style = new GUIStyle(); style.alignment = TextAnchor.MiddleCenter; style.padding.Set(2); style.normal.textColor = new Color(1f, 1f, 1f, 1f); style.active.textColor = new Color(1f, 1f, 1f, 1f); style.hover.textColor = new Color(1f, 1f, 1f, 1f); style.onNormal.textColor = new Color(1f, 1f, 1f, 1f); style.onActive.textColor = new Color(1f, 1f, 1f, 1f); style.onHover.textColor = new Color(1f, 1f, 1f, 1f); style.normal.background = context.Skin.Circle.texture; style.active.background = context.Skin.Circle.texture; style.onNormal.background = context.Skin.Circle.texture; style.onActive.background = context.Skin.Circle.texture; style.onHover.background = context.Skin.Circle.texture; style.border.Reset(); return(style); }
void Run <T>(IScWidget widget, Func <TContext, IScWidget, T, IDisposable> func) where T : class { IHandler _handler; s_Handler.TryGetValue(widget.GetType(), out _handler); IDisposable disposable = null; try { if (_handler is T hander) { disposable = func?.Invoke(Context, widget, hander); } foreach (var child in widget.GetChildren()) { Run(child, func); } } finally { disposable?.Dispose(); } }
public UEntry GetEntry(IScWidget widget) { if (widget == null) { return(default);
public void Remove(IScWidget widget) { m_List.RemoveAll(x => x.Widget == widget); m_Children.RemoveAll(x => x == widget); }
protected virtual GUIStyle CreateStyle(SkinIMGUIDrawer context, IScWidget widget) { return(new GUIStyle()); }
protected virtual GUIStyle CreateStyle(string key, SkinIMGUIDrawer context, IScWidget widget) { var style = new GUIStyle(); return(style); }
void IEntryEventCallback.OnRegister(IScWidget widget) { }
void IHandler.Finish(TContext context, IScWidget widget) => Finish(context, (U)widget);
void IHandler.Run(TContext context, IScWidget widget) => Run(context, (U)widget);
void IHandler.Prepare(TContext context, IScWidget widget) => Prepare(context, (U)widget);
protected virtual void FallbackFinish(TContext context, IScWidget widget) { }
protected virtual void FallbackPrepare(TContext context, IScWidget widget) { }
public SkinIMGUIDrawer(IScWidget root, IMGUIWidgetSkin skin) { Skin = skin; SetContext(this); SetRootWidget(root); }
public void SetRootWidget(IScWidget root) { Root = root; }
protected override GUIStyle CreateStyle(string key, SkinIMGUIDrawer context, IScWidget widget) { if (key == "Dummy") { return(new GUIStyle()); } var style = new GUIStyle(); style.alignment = TextAnchor.MiddleCenter; style.padding = new RectOffset(2, 0, 0, 0); style.normal.background = context.Skin.Circle.texture; style.active.background = context.Skin.Circle.texture; style.hover.background = context.Skin.Circle.texture; style.onNormal.background = context.Skin.Circle.texture; style.onActive.background = context.Skin.Circle.texture; style.onHover.background = context.Skin.Circle.texture; return(style); }