diff --git a/core/src/main/java/com/seibel/lod/core/config/Config.java b/core/src/main/java/com/seibel/lod/core/config/Config.java index 56de6360c..88981d2ed 100644 --- a/core/src/main/java/com/seibel/lod/core/config/Config.java +++ b/core/src/main/java/com/seibel/lod/core/config/Config.java @@ -36,10 +36,15 @@ import java.util.*; /** - * This handles any configuration the user has access to. + * This handles any configuration the user has access to.

+ * + * Note:
+ * Only add simpler listeners here (IE listeners that only depend on 1 config entry). + * For listeners that depend on 2 or more config entries, add them before the config menu is opened. + * Otherwise, you will have issues where only some of the config entries will exist when your listener is created. * * @author coolGi - * @version 2023-6-7 + * @version 2023-6-12 */ public class Config @@ -68,14 +73,12 @@ public class Config public static class Client { - // TODO modify debugging.rendererMode public static ConfigEntry quickEnableRendering = new ConfigEntry.Builder() .set(true) .comment("" + "If true, Distant Horizons will render LODs beyond the vanilla render distance." + "") - .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) // TODO set when the game boots - //.addListener(null) // TODO add listener + .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) .build(); public static ConfigLinkedEntry quickLodChunkRenderDistance = new ConfigLinkedEntry(Advanced.Graphics.Quality.lodChunkRenderDistance); @@ -1077,10 +1080,11 @@ public class Config { public static ConfigUIComment resetConfirmationNote = new ConfigUIComment(); + // TODO implement public static ConfigEntry resetAllSettings = new ConfigEntry.Builder() .set(false) .setAppearance(EConfigEntryAppearance.ONLY_IN_GUI) - //.addListener(null) // TODO add listener + //.addListener(null) .build(); } diff --git a/core/src/main/java/com/seibel/lod/core/config/eventHandlers/QuickRenderToggleConfigEventHandler.java b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/QuickRenderToggleConfigEventHandler.java new file mode 100644 index 000000000..73a671dfd --- /dev/null +++ b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/QuickRenderToggleConfigEventHandler.java @@ -0,0 +1,32 @@ +package com.seibel.lod.core.config.eventHandlers; + +import com.seibel.lod.api.enums.rendering.ERendererMode; +import com.seibel.lod.core.config.Config; +import com.seibel.lod.core.config.listeners.ConfigChangeListener; + +public class QuickRenderToggleConfigEventHandler +{ + public static QuickRenderToggleConfigEventHandler INSTANCE = new QuickRenderToggleConfigEventHandler(); + + private final ConfigChangeListener quickRenderChangeListener; + private final ConfigChangeListener rendererModeChangeListener; + + + + /** private since we only ever need one handler at a time */ + private QuickRenderToggleConfigEventHandler() + { + this.quickRenderChangeListener = new ConfigChangeListener<>(Config.Client.quickEnableRendering, (val) -> { Config.Client.Advanced.Debugging.rendererMode.set(Config.Client.quickEnableRendering.get() ? ERendererMode.DEFAULT : ERendererMode.DISABLED); }); + this.rendererModeChangeListener = new ConfigChangeListener<>(Config.Client.Advanced.Debugging.rendererMode, (val) -> { Config.Client.quickEnableRendering.set(Config.Client.Advanced.Debugging.rendererMode.get() != ERendererMode.DISABLED); }); + } + + /** + * Set the UI only config based on what is set in the file.
+ * This should only be called once. + */ + public void setUiOnlyConfigValues() + { + Config.Client.quickEnableRendering.set(Config.Client.Advanced.Debugging.rendererMode.get() != ERendererMode.DISABLED); + } + +} diff --git a/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java index 3c66d4f36..7351a1e84 100644 --- a/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java +++ b/core/src/main/java/com/seibel/lod/core/config/eventHandlers/presets/AbstractPresetConfigEventHandler.java @@ -20,6 +20,17 @@ public abstract class AbstractPresetConfigEventHandler + * This should only be called once. + */ + public void setUiOnlyConfigValues() + { + TPresetEnum currentQualitySetting = this.getCurrentQualityPreset(); + this.getPresetConfigEntry().set(currentQualitySetting); + } + + //===========// // listeners // //===========// @@ -28,15 +39,6 @@ public abstract class AbstractPresetConfigEventHandler extends AbstractConfigType> implem public ConfigEntry build() { - return new ConfigEntry(tmpAppearance, tmpValue, tmpComment, tmpMin, tmpMax, tmpUseApiOverwrite, tmpPerformance, tmpIConfigListener); + return new ConfigEntry<>(this.tmpAppearance, this.tmpValue, this.tmpComment, this.tmpMin, this.tmpMax, this.tmpUseApiOverwrite, this.tmpPerformance, this.tmpIConfigListener); } }