add slant singleton

This commit is contained in:
dfsek 2022-05-26 14:40:58 -07:00
parent eaebc445f6
commit c4c71ac9ef
2 changed files with 32 additions and 2 deletions

View File

@ -79,6 +79,6 @@ public class BiomePaletteTemplate implements ObjectTemplate<PaletteInfo> {
slantLayers.put(threshold, layer.getPalette()); slantLayers.put(threshold, layer.getPalette());
} }
return new PaletteInfo(builder.build(), new SlantHolder(slantLayers, minThreshold), oceanPalette, seaLevel, slantDepth); return new PaletteInfo(builder.build(), SlantHolder.of(slantLayers, minThreshold), oceanPalette, seaLevel, slantDepth);
} }
} }

View File

@ -8,6 +8,7 @@
package com.dfsek.terra.addons.chunkgenerator.palette; package com.dfsek.terra.addons.chunkgenerator.palette;
import java.util.Map.Entry;
import java.util.TreeMap; import java.util.TreeMap;
@ -15,11 +16,19 @@ public class SlantHolder {
private final TreeMap<Double, PaletteHolder> layers; private final TreeMap<Double, PaletteHolder> layers;
private final double minSlope; private final double minSlope;
public SlantHolder(TreeMap<Double, PaletteHolder> layers, double minSlope) { private SlantHolder(TreeMap<Double, PaletteHolder> layers, double minSlope) {
this.layers = layers; this.layers = layers;
this.minSlope = minSlope; this.minSlope = minSlope;
} }
public static SlantHolder of(TreeMap<Double, PaletteHolder> layers, double minSlope) {
if(layers.size() == 1){
Entry<Double, PaletteHolder> firstEntry = layers.firstEntry();
return new Single(firstEntry.getValue(), minSlope);
}
return new SlantHolder(layers, minSlope);
}
public boolean isEmpty() { public boolean isEmpty() {
return layers.isEmpty(); return layers.isEmpty();
} }
@ -31,4 +40,25 @@ public class SlantHolder {
public double getMinSlope() { public double getMinSlope() {
return minSlope; return minSlope;
} }
private static final class Single extends SlantHolder {
private final PaletteHolder layers;
public Single(PaletteHolder layers, double minSlope) {
super(of(minSlope, layers), minSlope);
this.layers = layers;
}
private static TreeMap<Double, PaletteHolder> of(double v, PaletteHolder layer) {
TreeMap<Double, PaletteHolder> map = new TreeMap<>();
map.put(v, layer);
return map;
}
@Override
public PaletteHolder getPalette(double slope) {
return layers;
}
}
} }