// 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(); }); }