package net.scapeemulator.game.model.area;
import net.scapeemulator.game.model.Position;
public final class QuadArea extends Area {
private final int minX, minY, maxX, maxY;
public QuadArea(Position left, Position right) {
this(left.getX(), left.getY(), right.getX(), right.getY());
}
public QuadArea(int minX, int minY, int maxX, int maxY) {
this.minX = minX;
this.minY = minY;
this.maxX = maxX;
this.maxY = maxY;
}
@Override
public boolean withinArea(int x, int y, int padding, boolean corners) {
if (!corners && padding != 0) {
int deltaX = x - minX;
int deltaY = y - minY;
if (deltaX < -(padding - 1) || deltaX >= maxX - minX + padding) {
if (deltaY >= maxY - minY + padding || deltaY < -(padding - 1)) {
return false;
}
}
}
return x >= (minX - padding) && x <= (maxX + padding) && y >= (minY - padding) && y <= (maxY + padding);
}
@Override
public Position center() {
return new Position(minX + ((maxX - minX) / 2), minY + ((maxY - minY) / 2));
}
@Override
public Position randomPosition(int height) {
int x = minX + (int) (Math.random() * (maxX - minX + 1));
int y = minY + (int) (Math.random() * (maxY - minY + 1));
return new Position(x, y, height);
}
@Override
public String toString() {
return "QuadArea[(" + minX + ", " + minY + "), (" + maxX + ", " + maxY + ")]";
}
}