public void PointAtGumObject(GraphicalUiElement objectToPointAt, PointingArrowRuntime.PointDirection direction = PointingArrowRuntime.PointDirection.Right, string cmdName = null) { var action = GetPointingAction(objectToPointAt, direction); var generalAction = CreateGeneralAction(action, cmdName); generalAction.IsCompleteFunction = () => _gameScreen.PointingArrowInstance.Visible; }
public void PointAtUpgradeStatus(PointingArrowRuntime.PointDirection direction, string cmdName = null) { Action action = () => { GetPointingAction(_gameScreen.AllStructuresList.Last.StructureUpgradeStatusInstance, direction).Invoke(); }; var generalAction = CreateGeneralAction(action, cmdName); generalAction.IsCompleteFunction = () => _gameScreen.PointingArrowInstance.Visible; }
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(); }); }