Skip to content

Commit

Permalink
Улучшения else-if. Компактнее и читаемее
Browse files Browse the repository at this point in the history
  • Loading branch information
Genife authored and Genife committed Apr 28, 2023
1 parent 49c5cf5 commit c12383a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
4 changes: 4 additions & 0 deletions src/main/java/com/genife/adventbombs/Rockets/Rocket.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ public Rocket(Player sender, Location targetLocation) {
setDuration(0);
}

public boolean isFlying() {
return getState() == RocketState.FLYING;
}

public boolean isMovingWithY() {
return getState() == RocketState.MOVING_WITH_Y;
}
Expand Down
14 changes: 6 additions & 8 deletions src/main/java/com/genife/adventbombs/Rockets/RocketLogic.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,29 +50,30 @@ public void move() {
return;
}

// движение ракеты, логика в зависимости от высоты
// Действия в зависимости от высоты, дистанции и других факторов
if (getDuration() == 0) {
// .setPitch() обязателен, ибо он определяет под каким углом будет ракета при взлёте
// в этом случае ровно вверх по Y (в сторону увеличения)
getRocketLocation().setPitch(-90);
new PlaySound(ROCKET_START_FLYING_SOUND, 200, getRocketLocation());
}

if (getRocketLocation().getBlockY() < FLYING_ROCKET_HEIGHT && !isMovingWithY()) {
if (getRocketLocation().getBlockY() < FLYING_ROCKET_HEIGHT && !isMovingWithY() && !isFlying()) {
if (getState() != RocketState.MOVING_UP) {
setState(RocketState.MOVING_UP);
}
moveUp();
} else if (distanceToTargetLoc >= DISTANCE_TO_MOVE_ROCKET_WITH_Y) {
} else {
new PlaySound(ROCKET_FLYING_SOUND, 316, getRocketLocation());

// Вычисляем отклонение координат X, Z между локациями ракеты и цели
int differenceX = Math.abs(getRocketLocation().getBlockX() - getTargetLocation().getBlockX());
int differenceZ = Math.abs(getRocketLocation().getBlockZ() - getTargetLocation().getBlockZ());

// Проверяем, совпадают ли примерно X и Z, если да - начинаем движение с учётом Y до того момента,
// Проверяем, меньше ли наша дистанция дистанции для движения с учётом Y
// Ещё проверяем, совпадают ли примерно X и Z, если да - начинаем движение с учётом Y до того момента,
// пока итоговая дистанция между локациями ракеты и цели не станет меньше MAX_DISTANCE_TO_TARGET
if (differenceX <= FLYING_ROCKET_SPEED && differenceZ <= FLYING_ROCKET_SPEED) {
if (distanceToTargetLoc <= DISTANCE_TO_MOVE_ROCKET_WITH_Y || (differenceX <= FLYING_ROCKET_SPEED && differenceZ <= FLYING_ROCKET_SPEED)) {
moveWithY();
} else {
// в ином (нормальном) случае двигаемся по одной высоте - MIN_HEIGHT:
Expand All @@ -81,9 +82,6 @@ public void move() {
}
getRocketLocation().add(findPath(false).multiply(FLYING_ROCKET_SPEED));
}
} else if (distanceToTargetLoc < DISTANCE_TO_MOVE_ROCKET_WITH_Y) {
new PlaySound(ROCKET_FLYING_SOUND, 316, getRocketLocation());
moveWithY();
}
addDuration();
}
Expand Down

0 comments on commit c12383a

Please sign in to comment.