Esempio n. 1
0
 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));
     }
 }
Esempio n. 2
0
        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));
            }
        }