예제 #1
0
        public override ILayoutable GenerateILayoutable(string contentManagerName, Dictionary <string, ILayoutable> namedControls, Dictionary <string, BitmapFont> namedFonts)
        {
            var layout = UiControlManager.Instance.CreateControl <FrbUi.Layouts.SimpleLayout>();

            SetBaseILayoutableProperties(layout, namedControls);
            layout.FullScreen = _isFullScreen ?? false;

            foreach (var child in _children)
            {
                var item = child.Item.GenerateILayoutable(contentManagerName, namedControls, namedFonts);
                HorizontalPosition horizontalPosition;
                VerticalPosition   verticalPosition;
                LayoutOrigin       origin;

                // Figure out the origin
                switch (child.OriginValue)
                {
                case SimpleLayoutXmlChild.LayoutOrigin.TopLeft:
                    origin = LayoutOrigin.TopLeft;
                    break;

                case SimpleLayoutXmlChild.LayoutOrigin.TopRight:
                    origin = LayoutOrigin.TopRight;
                    break;

                case SimpleLayoutXmlChild.LayoutOrigin.BottomLeft:
                    origin = LayoutOrigin.BottomLeft;
                    break;

                case SimpleLayoutXmlChild.LayoutOrigin.BottomRight:
                    origin = LayoutOrigin.BottomRight;
                    break;

                case SimpleLayoutXmlChild.LayoutOrigin.BottomCenter:
                    origin = LayoutOrigin.BottomCenter;
                    break;

                case SimpleLayoutXmlChild.LayoutOrigin.TopCenter:
                    origin = LayoutOrigin.TopCenter;
                    break;

                case SimpleLayoutXmlChild.LayoutOrigin.Center:
                default:
                    origin = LayoutOrigin.Center;
                    break;
                }

                // Figure out horizontal position
                if (child.HorizontalPercentFromCenterValueSpecified)
                {
                    horizontalPosition = HorizontalPosition.PercentFromCenter(child.HorizontalPercentFromCenterValue);
                }
                else if (child.HorizontalPercentFromLeftValueSpecified)
                {
                    horizontalPosition = HorizontalPosition.PercentFromLeft(child.HorizontalPercentFromLeftValue);
                }
                else if (child.HorizontalPercentFromRightValueSpecified)
                {
                    horizontalPosition = HorizontalPosition.PercentFromRight(child.HorizontalPercentFromRightValue);
                }
                else if (child.HorizontalOffsetFromCenterValueSpecified)
                {
                    horizontalPosition = HorizontalPosition.OffsetFromCenter(child.HorizontalOffsetFromCenterValue);
                }
                else if (child.HorizontalOffsetFromLeftValueSpecified)
                {
                    horizontalPosition = HorizontalPosition.OffsetFromLeft(child.HorizontalOffsetFromLeftValue);
                }
                else if (child.HorizontalOffsetFromRightValueSpecified)
                {
                    horizontalPosition = HorizontalPosition.OffsetFromRight(child.HorizontalOffsetFromRightValue);
                }
                else
                {
                    horizontalPosition = HorizontalPosition.OffsetFromLeft(0);
                }

                // Figure out vertical position
                if (child.VerticalPercentFromCenterValueSpecified)
                {
                    verticalPosition = VerticalPosition.PercentFromCenter(child.VerticalPercentFromCenterValue);
                }
                else if (child.VerticalPercentFromTopValueSpecified)
                {
                    verticalPosition = VerticalPosition.PercentFromTop(child.VerticalPercentFromTopValue);
                }
                else if (child.VerticalPercentFromBottomValueSpecified)
                {
                    verticalPosition = VerticalPosition.PercentFromBottom(child.VerticalPercentFromBottomValue);
                }
                else if (child.VerticalOffsetFromCenterValueSpecified)
                {
                    verticalPosition = VerticalPosition.OffsetFromCenter(child.VerticalOffsetFromCenterValue);
                }
                else if (child.VerticalOffsetFromTopValueSpecified)
                {
                    verticalPosition = VerticalPosition.OffsetFromTop(child.VerticalOffsetFromTopValue);
                }
                else if (child.VerticalOffsetFromBottomValueSpecified)
                {
                    verticalPosition = VerticalPosition.OffsetFromBottom(child.VerticalOffsetFromBottomValue);
                }
                else
                {
                    verticalPosition = VerticalPosition.OffsetFromTop(0);
                }

                layout.AddItem(item, horizontalPosition, verticalPosition, origin);
            }

            return(layout);
        }