Exemple #1
0
        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);
        }
Exemple #2
0
            protected UComponent GetComponent(uGUIBuilder context, IScWidget widget)
            {
                var entry = context.GetEntry(widget);

                if (entry.Obj == null)
                {
                    return(default);
Exemple #3
0
        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);
                }
            }
        }
Exemple #4
0
        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;
        }
Exemple #5
0
 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);
 }
Exemple #6
0
            protected GUIStyle GetStyle(SkinIMGUIDrawer context, IScWidget widget)
            {
                var entry = context.GetEntry(widget);

                if (entry.Style == null)
                {
                    entry.Style = CreateStyle(context, widget);
                }
                return(entry.Style);
            }
Exemple #7
0
            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);
            }
Exemple #8
0
 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);
Exemple #9
0
        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);
            }
        }
Exemple #10
0
            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);
            }
Exemple #11
0
            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);
            }
Exemple #12
0
        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);
            }
        }
Exemple #13
0
            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);
            }
Exemple #14
0
            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);
            }
Exemple #15
0
        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();
            }
        }
Exemple #16
0
 public UEntry GetEntry(IScWidget widget)
 {
     if (widget == null)
     {
         return(default);
Exemple #17
0
 public void Remove(IScWidget widget)
 {
     m_List.RemoveAll(x => x.Widget == widget);
     m_Children.RemoveAll(x => x == widget);
 }
Exemple #18
0
 protected virtual GUIStyle CreateStyle(SkinIMGUIDrawer context, IScWidget widget)
 {
     return(new GUIStyle());
 }
Exemple #19
0
            protected virtual GUIStyle CreateStyle(string key, SkinIMGUIDrawer context, IScWidget widget)
            {
                var style = new GUIStyle();

                return(style);
            }
Exemple #20
0
 void IEntryEventCallback.OnRegister(IScWidget widget)
 {
 }
Exemple #21
0
 void IHandler.Finish(TContext context, IScWidget widget) => Finish(context, (U)widget);
Exemple #22
0
 void IHandler.Run(TContext context, IScWidget widget) => Run(context, (U)widget);
Exemple #23
0
 void IHandler.Prepare(TContext context, IScWidget widget) => Prepare(context, (U)widget);
Exemple #24
0
 protected virtual void FallbackFinish(TContext context, IScWidget widget)
 {
 }
Exemple #25
0
 protected virtual void FallbackPrepare(TContext context, IScWidget widget)
 {
 }
Exemple #26
0
 public SkinIMGUIDrawer(IScWidget root, IMGUIWidgetSkin skin)
 {
     Skin = skin;
     SetContext(this);
     SetRootWidget(root);
 }
Exemple #27
0
 public void SetRootWidget(IScWidget root)
 {
     Root = root;
 }
Exemple #28
0
            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);
            }