예제 #1
0
        // Currently this is public because Gum objects don't have events
        // when positions and sizes change. Eventually, we'll have this all
        // handled internally and this can be made private.
        public void UpdateVerticalScrollBarValues()
        {
            verticalScrollBar.Minimum      = 0;
            verticalScrollBar.ViewportSize = clipContainer.GetAbsoluteHeight();
            var maxValue = innerPanel.GetAbsoluteHeight() - clipContainer.GetAbsoluteHeight();

            maxValue = System.Math.Max(0, maxValue);

            verticalScrollBar.Maximum = maxValue;

            verticalScrollBar.SmallChange = 10;
            verticalScrollBar.LargeChange = verticalScrollBar.ViewportSize;
        }
        private Action GetPointingAction(GraphicalUiElement objectToPointAt,
                                         PointingArrowRuntime.PointDirection direction)
        {
            return(() =>
            {
                var xMod = 0f;
                var yMod = 0f;
                var arrow = _gameScreen.PointingArrowInstance;

                if (objectToPointAt.YOrigin == VerticalAlignment.Top)
                {
                    switch (direction)
                    {
                    case PointingArrowRuntime.PointDirection.Left:
                    case PointingArrowRuntime.PointDirection.Right:
                        yMod = objectToPointAt.GetAbsoluteHeight() / 2;
                        break;

                    case PointingArrowRuntime.PointDirection.Up:
                        yMod = objectToPointAt.GetAbsoluteHeight();
                        break;
                    }
                }
                else if (objectToPointAt.YOrigin == VerticalAlignment.Center)
                {
                    switch (direction)
                    {
                    case PointingArrowRuntime.PointDirection.Up:
                        yMod += objectToPointAt.GetAbsoluteHeight() / 2;
                        break;

                    case PointingArrowRuntime.PointDirection.Down:
                        yMod -= objectToPointAt.GetAbsoluteHeight() / 2;
                        break;
                    }
                }
                else if (objectToPointAt.YOrigin == VerticalAlignment.Bottom)
                {
                    switch (direction)
                    {
                    case PointingArrowRuntime.PointDirection.Left:
                    case PointingArrowRuntime.PointDirection.Right:
                        yMod -= objectToPointAt.GetAbsoluteHeight() / 2;
                        break;

                    case PointingArrowRuntime.PointDirection.Down:
                        yMod -= objectToPointAt.GetAbsoluteHeight();
                        break;
                    }
                }

                if (objectToPointAt.XOrigin == HorizontalAlignment.Left)
                {
                    switch (direction)
                    {
                    case PointingArrowRuntime.PointDirection.Left:
                        xMod = objectToPointAt.GetAbsoluteWidth();
                        break;

                    case PointingArrowRuntime.PointDirection.Up:
                        xMod = objectToPointAt.GetAbsoluteWidth() / 2;
                        break;

                    case PointingArrowRuntime.PointDirection.Down:
                        xMod = objectToPointAt.GetAbsoluteWidth() / 2;
                        break;
                    }
                }
                else if (objectToPointAt.XOrigin == HorizontalAlignment.Center)
                {
                    switch (direction)
                    {
                    case PointingArrowRuntime.PointDirection.Left:
                        xMod = objectToPointAt.GetAbsoluteWidth() / 2;
                        break;

                    case PointingArrowRuntime.PointDirection.Right:
                        xMod = objectToPointAt.GetAbsoluteWidth() / 2;
                        break;
                    }
                }
                else if (objectToPointAt.XOrigin == HorizontalAlignment.Right)
                {
                    switch (direction)
                    {
                    case PointingArrowRuntime.PointDirection.Right:
                        xMod = objectToPointAt.GetAbsoluteWidth();
                        break;

                    case PointingArrowRuntime.PointDirection.Up:
                        xMod = -objectToPointAt.GetAbsoluteWidth() / 2;
                        break;

                    case PointingArrowRuntime.PointDirection.Down:
                        xMod = -objectToPointAt.GetAbsoluteWidth() / 2;
                        break;
                    }
                }

                arrow.CurrentPointDirectionState = direction;
                arrow.X = objectToPointAt.AbsoluteX + xMod;
                arrow.Y = objectToPointAt.AbsoluteY + yMod;
                arrow.Visible = true;
                arrow.FlashAnimation.Play();
            });
        }