33 lines
1.0 KiB
Java
33 lines
1.0 KiB
Java
public class MoveToBorder extends AbstractStrategy {
|
|
@Override
|
|
protected boolean isTargetDestination() {
|
|
var objParams = getObjectParameters();
|
|
if (objParams == null) {
|
|
return false;
|
|
}
|
|
return objParams.rightBorder() <= getFieldWidth() &&
|
|
objParams.rightBorder() + getStep() >= getFieldWidth() &&
|
|
objParams.downBorder() <= getFieldHeight() &&
|
|
objParams.downBorder() + getStep() >= getFieldHeight();
|
|
}
|
|
@Override
|
|
protected void moveToTarget() {
|
|
var objParams = getObjectParameters();
|
|
if (objParams == null) {
|
|
return;
|
|
}
|
|
var diffX = objParams.objectMiddleHorizontal() - getFieldWidth();
|
|
if (Math.abs(diffX) > getStep()) {
|
|
if (diffX < 0) {
|
|
moveRight();
|
|
}
|
|
}
|
|
var diffY = objParams.objectMiddleVertical() - getFieldHeight();
|
|
if (Math.abs(diffY) > getStep()) {
|
|
if (diffY < 0) {
|
|
moveDown();
|
|
}
|
|
}
|
|
}
|
|
}
|