mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-04-13 19:26:14 +00:00
use expression switches
This commit is contained in:
@@ -9,19 +9,19 @@ import com.dfsek.terra.api.util.generic.Lazy;
|
||||
|
||||
public interface EnumProperty<T extends Enum<T>> extends Property<T> {
|
||||
static <T extends Enum<T>> EnumProperty<T> of(String name, Class<T> clazz) {
|
||||
return new EnumProperty<T>() {
|
||||
return new EnumProperty<>() {
|
||||
private final Lazy<Collection<T>> constants = Lazy.lazy(() -> Arrays.asList(clazz.getEnumConstants()));
|
||||
|
||||
|
||||
@Override
|
||||
public Collection<T> values() {
|
||||
return constants.value();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Class<T> getType() {
|
||||
return clazz;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
|
||||
@@ -28,32 +28,21 @@ public enum Direction {
|
||||
}
|
||||
|
||||
public Direction rotate(Rotation rotation) {
|
||||
switch(this) {
|
||||
case UP:
|
||||
case DOWN:
|
||||
return this;
|
||||
default:
|
||||
return rotations[(this.rotation + rotation.getDegrees() / 90) % 4];
|
||||
}
|
||||
return switch(this) {
|
||||
case UP, DOWN -> this;
|
||||
default -> rotations[(this.rotation + rotation.getDegrees() / 90) % 4];
|
||||
};
|
||||
}
|
||||
|
||||
public Direction opposite() {
|
||||
switch(this) {
|
||||
case DOWN:
|
||||
return UP;
|
||||
case UP:
|
||||
return DOWN;
|
||||
case EAST:
|
||||
return WEST;
|
||||
case WEST:
|
||||
return EAST;
|
||||
case NORTH:
|
||||
return SOUTH;
|
||||
case SOUTH:
|
||||
return NORTH;
|
||||
}
|
||||
|
||||
throw new IllegalStateException();
|
||||
return switch(this) {
|
||||
case DOWN -> UP;
|
||||
case UP -> DOWN;
|
||||
case EAST -> WEST;
|
||||
case WEST -> EAST;
|
||||
case NORTH -> SOUTH;
|
||||
case SOUTH -> NORTH;
|
||||
};
|
||||
}
|
||||
|
||||
public int getModX() {
|
||||
|
||||
@@ -16,33 +16,22 @@ public enum Rotation {
|
||||
}
|
||||
|
||||
public static Rotation fromDegrees(int deg) {
|
||||
switch(FastMath.floorMod(deg, 360)) {
|
||||
case 0:
|
||||
return Rotation.NONE;
|
||||
case 90:
|
||||
return Rotation.CW_90;
|
||||
case 180:
|
||||
return Rotation.CW_180;
|
||||
case 270:
|
||||
return Rotation.CCW_90;
|
||||
default:
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
return switch(FastMath.floorMod(deg, 360)) {
|
||||
case 0 -> Rotation.NONE;
|
||||
case 90 -> Rotation.CW_90;
|
||||
case 180 -> Rotation.CW_180;
|
||||
case 270 -> Rotation.CCW_90;
|
||||
default -> throw new IllegalArgumentException();
|
||||
};
|
||||
}
|
||||
|
||||
public Rotation inverse() {
|
||||
switch(this) {
|
||||
case NONE:
|
||||
return NONE;
|
||||
case CCW_90:
|
||||
return CW_90;
|
||||
case CW_90:
|
||||
return CCW_90;
|
||||
case CW_180:
|
||||
return CW_180;
|
||||
default:
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
return switch(this) {
|
||||
case NONE -> NONE;
|
||||
case CCW_90 -> CW_90;
|
||||
case CW_90 -> CCW_90;
|
||||
case CW_180 -> CW_180;
|
||||
};
|
||||
}
|
||||
|
||||
public Rotation rotate(Rotation rotation) {
|
||||
|
||||
@@ -23,15 +23,9 @@ public final class RotationUtil {
|
||||
public static void rotateVector(Vector2 orig, Rotation r) {
|
||||
Vector2 copy = orig.clone();
|
||||
switch(r) {
|
||||
case CW_90:
|
||||
copy.setX(orig.getZ()).setZ(-orig.getX());
|
||||
break;
|
||||
case CCW_90:
|
||||
copy.setX(-orig.getZ()).setZ(orig.getX());
|
||||
break;
|
||||
case CW_180:
|
||||
copy.multiply(-1);
|
||||
break;
|
||||
case CW_90 -> copy.setX(orig.getZ()).setZ(-orig.getX());
|
||||
case CCW_90 -> copy.setX(-orig.getZ()).setZ(orig.getX());
|
||||
case CW_180 -> copy.multiply(-1);
|
||||
}
|
||||
orig.setX(copy.getX());
|
||||
orig.setZ(copy.getZ());
|
||||
@@ -64,74 +58,44 @@ public final class RotationUtil {
|
||||
public static RailShape getRotatedRail(RailShape orig, Rotation r) {
|
||||
switch(r) {
|
||||
case CCW_90:
|
||||
switch(orig) {
|
||||
case NORTH_WEST:
|
||||
return RailShape.SOUTH_WEST;
|
||||
case NORTH_SOUTH:
|
||||
return RailShape.EAST_WEST;
|
||||
case SOUTH_WEST:
|
||||
return RailShape.SOUTH_EAST;
|
||||
case SOUTH_EAST:
|
||||
return RailShape.NORTH_EAST;
|
||||
case EAST_WEST:
|
||||
return RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST:
|
||||
return RailShape.NORTH_WEST;
|
||||
case ASCENDING_EAST:
|
||||
return RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_WEST:
|
||||
return RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_NORTH:
|
||||
return RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_SOUTH:
|
||||
return RailShape.ASCENDING_EAST;
|
||||
}
|
||||
return switch(orig) {
|
||||
case NORTH_WEST -> RailShape.SOUTH_WEST;
|
||||
case NORTH_SOUTH -> RailShape.EAST_WEST;
|
||||
case SOUTH_WEST -> RailShape.SOUTH_EAST;
|
||||
case SOUTH_EAST -> RailShape.NORTH_EAST;
|
||||
case EAST_WEST -> RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST -> RailShape.NORTH_WEST;
|
||||
case ASCENDING_EAST -> RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_WEST -> RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_NORTH -> RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_SOUTH -> RailShape.ASCENDING_EAST;
|
||||
};
|
||||
case CW_90:
|
||||
switch(orig) {
|
||||
case NORTH_WEST:
|
||||
return RailShape.NORTH_EAST;
|
||||
case NORTH_SOUTH:
|
||||
return RailShape.EAST_WEST;
|
||||
case SOUTH_WEST:
|
||||
return RailShape.NORTH_WEST;
|
||||
case SOUTH_EAST:
|
||||
return RailShape.SOUTH_WEST;
|
||||
case EAST_WEST:
|
||||
return RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST:
|
||||
return RailShape.SOUTH_EAST;
|
||||
case ASCENDING_EAST:
|
||||
return RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_WEST:
|
||||
return RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_NORTH:
|
||||
return RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_SOUTH:
|
||||
return RailShape.ASCENDING_WEST;
|
||||
}
|
||||
return switch(orig) {
|
||||
case NORTH_WEST -> RailShape.NORTH_EAST;
|
||||
case NORTH_SOUTH -> RailShape.EAST_WEST;
|
||||
case SOUTH_WEST -> RailShape.NORTH_WEST;
|
||||
case SOUTH_EAST -> RailShape.SOUTH_WEST;
|
||||
case EAST_WEST -> RailShape.NORTH_SOUTH;
|
||||
case NORTH_EAST -> RailShape.SOUTH_EAST;
|
||||
case ASCENDING_EAST -> RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_WEST -> RailShape.ASCENDING_NORTH;
|
||||
case ASCENDING_NORTH -> RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_SOUTH -> RailShape.ASCENDING_WEST;
|
||||
};
|
||||
case CW_180:
|
||||
switch(orig) {
|
||||
case NORTH_WEST:
|
||||
return RailShape.SOUTH_EAST;
|
||||
case NORTH_SOUTH:
|
||||
return RailShape.NORTH_SOUTH;
|
||||
case SOUTH_WEST:
|
||||
return RailShape.NORTH_EAST;
|
||||
case SOUTH_EAST:
|
||||
return RailShape.NORTH_WEST;
|
||||
case EAST_WEST:
|
||||
return RailShape.EAST_WEST;
|
||||
case NORTH_EAST:
|
||||
return RailShape.SOUTH_WEST;
|
||||
case ASCENDING_EAST:
|
||||
return RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_WEST:
|
||||
return RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_NORTH:
|
||||
return RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_SOUTH:
|
||||
return RailShape.ASCENDING_NORTH;
|
||||
}
|
||||
return switch(orig) {
|
||||
case NORTH_WEST -> RailShape.SOUTH_EAST;
|
||||
case NORTH_SOUTH -> RailShape.NORTH_SOUTH;
|
||||
case SOUTH_WEST -> RailShape.NORTH_EAST;
|
||||
case SOUTH_EAST -> RailShape.NORTH_WEST;
|
||||
case EAST_WEST -> RailShape.EAST_WEST;
|
||||
case NORTH_EAST -> RailShape.SOUTH_WEST;
|
||||
case ASCENDING_EAST -> RailShape.ASCENDING_WEST;
|
||||
case ASCENDING_WEST -> RailShape.ASCENDING_EAST;
|
||||
case ASCENDING_NORTH -> RailShape.ASCENDING_SOUTH;
|
||||
case ASCENDING_SOUTH -> RailShape.ASCENDING_NORTH;
|
||||
};
|
||||
}
|
||||
return orig;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user