forked from SteamWar/SteamWar
Add VariantSelector
This commit is contained in:
+36
@@ -19,8 +19,13 @@
|
||||
|
||||
package de.steamwar.bausystem.region.dynamic.variants;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
|
||||
public interface VariantSelector {
|
||||
|
||||
@@ -29,4 +34,35 @@ public interface VariantSelector {
|
||||
default VariantSelector or(VariantSelector other) {
|
||||
return (minX, minZ) -> selectVariant(minX, minZ).or(() -> other.selectVariant(minX, minZ));
|
||||
}
|
||||
|
||||
static VariantSelector AtDate(int day, int month, File file) {
|
||||
return (minX, minZ) -> {
|
||||
LocalDate date = LocalDate.now();
|
||||
if (date.getDayOfMonth() == day && date.getMonthValue() == month) {
|
||||
return Optional.of(file);
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
static VariantSelector File(@NonNull File file) {
|
||||
return (minX, minZ) -> Optional.of(file);
|
||||
}
|
||||
|
||||
static VariantSelector StableVariants(@NonNull File directory) {
|
||||
File[] files = directory.listFiles();
|
||||
return (minX, minZ) -> {
|
||||
Random rand = new Random(Objects.hash(minX, minZ));
|
||||
return Optional.of(files[rand.nextInt(files.length)]);
|
||||
};
|
||||
}
|
||||
|
||||
static VariantSelector RandomVariants(@NonNull File directory) {
|
||||
File[] files = directory.listFiles();
|
||||
Random rand = new Random();
|
||||
return (minX, minZ) -> {
|
||||
return Optional.of(files[rand.nextInt(files.length)]);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user