Пример #1
0
        private UIElement GetRightElement(PropertyInfo info, UIElement element, ref int maxHeight)
        {
            object value = info.GetValue(element);

            if (info.PropertyType == typeof(bool))
            {
                var check = new UICheckBox()
                {
                    AnchorPoint = new Vector2(0, 0.5f),
                    Pivot       = new Vector2(0, 0.5f),
                    Value       = (bool)value,
                };
                check.OnCheckedChange += (e, s) => {
                    info.SetValue(element, e.Value);
                    Editor.NotifyElementPropertyChange(this);
                };
                return(check);
            }
            else if (info.PropertyType == typeof(string))
            {
                var changer = new UITextBox()
                {
                    AnchorPoint = new Vector2(0, 0.5f),
                    Pivot       = new Vector2(0, 0.5f),
                    SizeFactor  = new Vector2(1, 1),
                    Text        = value.ToString(),
                    Size        = new Vector2(-8, 0),
                };
                if (info.SetMethod == null)
                {
                    changer.Editable = false;
                }
                changer.OnTextChange += (e, s) => {
                    info.SetValue(element, e.NewString);
                    Editor.NotifyElementPropertyChange(this);
                };
                return(changer);
            }
            else if (info.PropertyType == typeof(Color))
            {
                var color = new UIColorIdentifier(info, element)
                {
                    AnchorPoint = new Vector2(0, 0.5f),
                    Pivot       = new Vector2(0, 0.5f),
                    SizeFactor  = new Vector2(1, 1),
                    Color       = (Color)value,
                    Size        = new Vector2(-8, 0),
                };
                color.OnClick += (e, s) => {
                    Editor.OpenColorChooser(info, element, color);
                };
                return(color);
            }
            else if (info.PropertyType == typeof(Vector2))
            {
                var vector2 = new UIVector2(element, info)
                {
                    AnchorPoint = new Vector2(0, 0.5f),
                    Pivot       = new Vector2(0, 0.5f),
                    SizeFactor  = new Vector2(1, 1),
                };
                if (info.SetMethod == null)
                {
                    vector2.Editable = false;
                }
                vector2.OnValueChanged += (e, s) => {
                    info.SetValue(element, vector2.Value);
                    Editor.NotifyElementPropertyChange(this);
                };
                return(vector2);
            }
            else if (info.PropertyType == typeof(Rectangle))
            {
                var rect = new UIRectangle(element, info)
                {
                    AnchorPoint = new Vector2(0, 0.5f),
                    Pivot       = new Vector2(0, 0.5f),
                    SizeFactor  = new Vector2(1, 1),
                };
                if (info.SetMethod == null)
                {
                    rect.Editable = false;
                }
                rect.OnValueChanged += (e, s) => {
                    info.SetValue(element, rect.Value);
                    Editor.NotifyElementPropertyChange(this);
                };
                maxHeight = 65;
                return(rect);
            }
            else if (info.PropertyType == typeof(float))
            {
                var textF = new UIValueTextBoxEx <float>(element, info)
                {
                    AnchorPoint = new Vector2(0, 0.5f),
                    Pivot       = new Vector2(0, 0.5f),
                    SizeFactor  = new Vector2(1, 1),
                    Size        = new Vector2(-8, 0),
                };
                if (info.SetMethod == null)
                {
                    textF.Editable = false;
                }
                textF.OnValueChanged += (e, s) => {
                    info.SetValue(element, textF.Value);
                    Editor.NotifyElementPropertyChange(this);
                };
                return(textF);
            }
            else if (info.PropertyType.IsEnum)
            {
                var instance = new UIEnumSelector(element, info)
                {
                    AnchorPoint = new Vector2(0, 0.5f),
                    Pivot       = new Vector2(0, 0.5f),
                    SizeFactor  = new Vector2(1, 1),
                    Size        = new Vector2(-8, 0),
                };
                instance.HangElement    = this;
                instance.OnValueChange += (e, s) => {
                    info.SetValue(element, instance.Value);
                    Editor.NotifyElementPropertyChange(this);
                };
                return(instance);
            }
            var text = new UILabel()
            {
                AnchorPoint = new Vector2(0, 0.5f),
                Pivot       = new Vector2(0, 0.5f),
                Text        = (value == null) ? "null" : value.ToString(),
            };

            return(text);
        }