From 97b30423574f5729494c7d69eb4eb8543e9ac5d5 Mon Sep 17 00:00:00 2001 From: dfsek Date: Mon, 14 Jun 2021 13:53:03 -0700 Subject: [PATCH] meta noise type --- .../sampler/NoiseSamplerBuilderLoader.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java b/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java index 65ebf9d38..595698da3 100644 --- a/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java +++ b/common/src/main/java/com/dfsek/terra/config/loaders/config/sampler/NoiseSamplerBuilderLoader.java @@ -1,17 +1,20 @@ package com.dfsek.terra.config.loaders.config.sampler; +import com.dfsek.tectonic.annotations.Value; import com.dfsek.tectonic.config.Configuration; import com.dfsek.tectonic.exception.ConfigException; import com.dfsek.tectonic.exception.LoadException; import com.dfsek.tectonic.loading.ConfigLoader; import com.dfsek.tectonic.loading.TypeLoader; import com.dfsek.tectonic.loading.object.ObjectTemplate; +import com.dfsek.terra.api.config.meta.MetaValue; import com.dfsek.terra.api.util.seeded.NoiseSeeded; import com.dfsek.terra.registry.config.NoiseRegistry; import java.lang.reflect.Type; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; @SuppressWarnings("unchecked") public class NoiseSamplerBuilderLoader implements TypeLoader { @@ -25,11 +28,26 @@ public class NoiseSamplerBuilderLoader implements TypeLoader { public NoiseSeeded load(Type t, Object c, ConfigLoader loader) throws LoadException { Map map = (Map) c; try { - ObjectTemplate normalizerTemplate = noiseRegistry.get(((String) map.get("type")).toUpperCase(Locale.ROOT)).get(); - loader.load(normalizerTemplate, new Configuration(map)); + Template typeTemplate = new Template(); + Configuration configuration = new Configuration(map); + loader.load(typeTemplate, configuration); + ObjectTemplate normalizerTemplate = typeTemplate.get().get(); + loader.load(normalizerTemplate, configuration); return normalizerTemplate.get(); } catch(ConfigException e) { throw new LoadException("Unable to load noise function: ", e); } } + + @SuppressWarnings("unused") + private class Template implements ObjectTemplate>> { + @Value("type") + private MetaValue type; + + + @Override + public Supplier> get() { + return noiseRegistry.get(type.get().toUpperCase(Locale.ROOT)); + } + } }