diff --git a/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java b/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java index e74eaf9..5700f7b 100644 --- a/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java +++ b/src/main/java/org/saturnclient/saturnclient/config/ConfigManager.java @@ -149,4 +149,8 @@ public class ConfigManager { SaturnClient.LOGGER.error("Error saving the config file", e); } } + + public Map> getProperties() { + return properties.get(namespace); + } } diff --git a/src/main/java/org/saturnclient/saturnclient/menus/ConfigEditor.java b/src/main/java/org/saturnclient/saturnclient/menus/ConfigEditor.java new file mode 100644 index 0000000..d53cc84 --- /dev/null +++ b/src/main/java/org/saturnclient/saturnclient/menus/ConfigEditor.java @@ -0,0 +1,77 @@ +package org.saturnclient.saturnclient.menus; + +import java.util.Map; + +import org.saturnclient.saturnclient.config.ConfigManager; +import org.saturnclient.saturnclient.config.Property; +import org.saturnclient.ui.SaturnUi; +import org.saturnclient.ui.Textures; +import org.saturnclient.ui.animations.Slide; +import org.saturnclient.ui.components.SaturnToggle; +import org.saturnclient.ui.widgets.SaturnScroll; +import org.saturnclient.ui.widgets.SaturnSprite; + +import net.minecraft.text.Text; + +public class ConfigEditor extends SaturnUi { + private ConfigManager config; + + public ConfigEditor(ConfigManager config) { + super(Text.of("Config editor")); + this.config = config; + } + + @SuppressWarnings("unchecked") + @Override + protected void init() { + int rectWidth = 330; + int rectHeight = 228; + int rectX = (width - rectWidth) / 2; + int rectY = (height - rectHeight + 15) / 2; + + draw(new SaturnSprite(Textures.SETTINGS_BG) + .setX(rectX) + .setY(rectY) + .setWidth(rectWidth) + .setHeight(rectHeight) + .setAnimations(new Slide(1, 10))); + + int tabsX = (width - 43) / 2; + int tabsY = rectY - 17; + + draw(new SaturnSprite(Textures.TABS) + .setX(tabsX) + .setY(tabsY) + .setWidth(43) + .setHeight(15) + .setAnimations(new Slide(1, 10))); + + int modX = 0; + int modY = 0; + int col = 0; + + int propWidth = (rectWidth - 15) / 2; + + SaturnScroll modsScroll = new SaturnScroll(); + + for (Map.Entry> propEntry : config.getProperties().entrySet()) { + Property prop = propEntry.getValue(); + if (prop.value instanceof Boolean) { + draw(new SaturnToggle((Property) prop).setX(modX).setY(modY)); + } + + col++; + if (col < 2) { + modX += propWidth + 21; + } else { + modX = 0; + modY += 20 + 20; + col = 0; + } + } + + draw(modsScroll.setX(rectX + 17).setY(rectY + 10).setWidth(rectWidth - 17).setHeight(rectHeight - 10)); + + super.init(); + } +} diff --git a/src/main/java/org/saturnclient/saturnmods/SaturnMod.java b/src/main/java/org/saturnclient/saturnmods/SaturnMod.java index bb1d1f9..3d0ec34 100644 --- a/src/main/java/org/saturnclient/saturnmods/SaturnMod.java +++ b/src/main/java/org/saturnclient/saturnmods/SaturnMod.java @@ -1,5 +1,7 @@ package org.saturnclient.saturnmods; +import org.saturnclient.saturnclient.config.ConfigManager; + import net.minecraft.util.Identifier; public interface SaturnMod { @@ -10,4 +12,6 @@ public interface SaturnMod { public String getName(); public Identifier getIconTexture(); + + public ConfigManager getConfig(); } diff --git a/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java b/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java index 80c4df6..c626073 100644 --- a/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java +++ b/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java @@ -110,4 +110,9 @@ public class ArmorDisplay implements SaturnMod, HudMod { public void setEnabled(boolean e) { enabled.value = e; } + + @Override + public ConfigManager getConfig() { + return config; + } } diff --git a/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java b/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java index dde209e..0850305 100644 --- a/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java +++ b/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java @@ -67,4 +67,9 @@ public class Coordinates implements SaturnMod, HudMod { public void setEnabled(boolean e) { enabled.value = e; } + + @Override + public ConfigManager getConfig() { + return config; + } } diff --git a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java index 67924d8..edb1c51 100644 --- a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java +++ b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java @@ -1,11 +1,13 @@ package org.saturnclient.ui.components; import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.menus.ConfigEditor; import org.saturnclient.saturnmods.SaturnMod; import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.Textures; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.util.math.ColorHelper; @@ -50,7 +52,7 @@ public class SaturnModComp extends SaturnWidget { @Override public void click(int mouseX, int mouseY) { if (settingsHovering(mouseX, mouseY)) { - // TODO: make a config thingy, and implement it on the mods + MinecraftClient.getInstance().setScreen(new ConfigEditor(mod.getConfig())); } else { mod.setEnabled(!mod.isEnabled()); }