in WhackAMole.UWPClient/Services/BaseMovementEngine.cs [93:123]
public Tuple<Point,Point> UpdatePosition(Point start, Point vector)
{
if (MaxX <= 0 || MaxY <= 0)
throw new InvalidOperationException("maxx and/or maxy cannot be zero or negative");
var newPoint = new Point();
var newX = start.X + vector.X;
var newY = start.Y + vector.Y;
if (newY > MaxY || newY < 0)
{
var y = (newY < 0) ? 0 : MaxY;
newPoint = new Point(start.X, y); ;
vector.Y = vector.Y * -1;
}
else
newPoint.X = newX;
if (newX > MaxX || newX < 0)
{
var x = (newX < 0) ? 0 : MaxX;
newPoint = new Point(x, start.Y);
vector.X = vector.X * -1;
}
else
newPoint.Y = newY;
return new Tuple<Point, Point>(newPoint, vector);
}