public VectorAI getDeployPosition(BoardObj bo, deployDirectionRelative relativeDirection = deployDirectionRelative.none, int deployDistance = 0) //for deployDistance you can use hc.card.DamageRadius { if (bo == null) { Logger.Debug("!!![getDeployPosition]Error:BoardObj == NULL"); return(new VectorAI(0, 0)); } else { return(getDeployPosition(bo.Position, relativeDirection, deployDistance)); } }
public VectorAI getDeployPosition(VectorAI targetPosition, deployDirectionRelative relativeDirection = deployDirectionRelative.none, int deployDistance = 0) //for deployDistance you can use hc.card.DamageRadius; we use only for Absolute directions { //Relative directions int sign = this.home ? 1 : -1; int lineSign = targetPosition.X > 8700 ? 1 : -1; if (targetPosition == null) { Logger.Debug("!!![getDeployPosition]Error: Relative targetPosition == NULL"); return(new VectorAI(0, 0)); } switch (relativeDirection) { case deployDirectionRelative.Up: return(new VectorAI(targetPosition.X, targetPosition.Y + sign * (1000 + deployDistance))); case deployDirectionRelative.Down: return(new VectorAI(targetPosition.X, targetPosition.Y - sign * (1000 + deployDistance))); case deployDirectionRelative.RightUp: return(new VectorAI(targetPosition.X - sign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y + sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.Right: return(new VectorAI(targetPosition.X - sign * (1000 + deployDistance), targetPosition.Y)); case deployDirectionRelative.RightDown: return(new VectorAI(targetPosition.X - sign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y - sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.LeftDown: return(new VectorAI(targetPosition.X + sign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y - sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.Left: return(new VectorAI(targetPosition.X + sign * (1000 + deployDistance), targetPosition.Y)); case deployDirectionRelative.LeftUp: return(new VectorAI(targetPosition.X + sign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y + sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.borderSideUp: return(new VectorAI(targetPosition.X + lineSign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y + sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.borderSideMiddle: return(new VectorAI(targetPosition.X + lineSign * (1000 + deployDistance), targetPosition.Y)); case deployDirectionRelative.borderSideDown: return(new VectorAI(targetPosition.X + lineSign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y - sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.centerSideUp: return(new VectorAI(targetPosition.X - lineSign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y + sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.centerSideMiddle: return(new VectorAI(targetPosition.X - lineSign * (1000 + deployDistance), targetPosition.Y)); case deployDirectionRelative.centerSideDown: return(new VectorAI(targetPosition.X - lineSign * (1000 + deployDistance * 7071 / 10000), targetPosition.Y - sign * (1000 + deployDistance * 7071 / 10000))); case deployDirectionRelative.lineCorner: return((lineSign > 0) ? (home ? new VectorAI(17000, 2500) : new VectorAI(17450, 30080)) : (home ? new VectorAI(800, 2200) : new VectorAI(550, 30050))); default: return(new VectorAI(targetPosition)); } }