minecraft-src/net/minecraft/client/gui/navigation/ScreenDirection.java
2025-07-04 01:41:11 +03:00

50 lines
1.1 KiB
Java

package net.minecraft.client.gui.navigation;
import it.unimi.dsi.fastutil.ints.IntComparator;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
public enum ScreenDirection {
UP,
DOWN,
LEFT,
RIGHT;
private final IntComparator coordinateValueComparator = (ix, j) -> ix == j ? 0 : (this.isBefore(ix, j) ? -1 : 1);
public ScreenAxis getAxis() {
return switch (this) {
case UP, DOWN -> ScreenAxis.VERTICAL;
case LEFT, RIGHT -> ScreenAxis.HORIZONTAL;
};
}
public ScreenDirection getOpposite() {
return switch (this) {
case UP -> DOWN;
case DOWN -> UP;
case LEFT -> RIGHT;
case RIGHT -> LEFT;
};
}
public boolean isPositive() {
return switch (this) {
case UP, LEFT -> false;
case DOWN, RIGHT -> true;
};
}
public boolean isAfter(int first, int second) {
return this.isPositive() ? first > second : second > first;
}
public boolean isBefore(int first, int second) {
return this.isPositive() ? first < second : second < first;
}
public IntComparator coordinateValueComparator() {
return this.coordinateValueComparator;
}
}