semi functional config menu

This commit is contained in:
2025-03-20 14:16:59 +01:00
parent 14dce5cc42
commit c1ba58dd01
6 changed files with 98 additions and 1 deletions
@@ -149,4 +149,8 @@ public class ConfigManager {
SaturnClient.LOGGER.error("Error saving the config file", e); SaturnClient.LOGGER.error("Error saving the config file", e);
} }
} }
public Map<String, Property<?>> getProperties() {
return properties.get(namespace);
}
} }
@@ -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<String, Property<?>> propEntry : config.getProperties().entrySet()) {
Property<?> prop = propEntry.getValue();
if (prop.value instanceof Boolean) {
draw(new SaturnToggle((Property<Boolean>) 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();
}
}
@@ -1,5 +1,7 @@
package org.saturnclient.saturnmods; package org.saturnclient.saturnmods;
import org.saturnclient.saturnclient.config.ConfigManager;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
public interface SaturnMod { public interface SaturnMod {
@@ -10,4 +12,6 @@ public interface SaturnMod {
public String getName(); public String getName();
public Identifier getIconTexture(); public Identifier getIconTexture();
public ConfigManager getConfig();
} }
@@ -110,4 +110,9 @@ public class ArmorDisplay implements SaturnMod, HudMod {
public void setEnabled(boolean e) { public void setEnabled(boolean e) {
enabled.value = e; enabled.value = e;
} }
@Override
public ConfigManager getConfig() {
return config;
}
} }
@@ -67,4 +67,9 @@ public class Coordinates implements SaturnMod, HudMod {
public void setEnabled(boolean e) { public void setEnabled(boolean e) {
enabled.value = e; enabled.value = e;
} }
@Override
public ConfigManager getConfig() {
return config;
}
} }
@@ -1,11 +1,13 @@
package org.saturnclient.ui.components; package org.saturnclient.ui.components;
import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.SaturnClient;
import org.saturnclient.saturnclient.menus.ConfigEditor;
import org.saturnclient.saturnmods.SaturnMod; import org.saturnclient.saturnmods.SaturnMod;
import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.SaturnWidget;
import org.saturnclient.ui.Textures; import org.saturnclient.ui.Textures;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.math.ColorHelper; import net.minecraft.util.math.ColorHelper;
@@ -50,7 +52,7 @@ public class SaturnModComp extends SaturnWidget {
@Override @Override
public void click(int mouseX, int mouseY) { public void click(int mouseX, int mouseY) {
if (settingsHovering(mouseX, mouseY)) { if (settingsHovering(mouseX, mouseY)) {
// TODO: make a config thingy, and implement it on the mods MinecraftClient.getInstance().setScreen(new ConfigEditor(mod.getConfig()));
} else { } else {
mod.setEnabled(!mod.isEnabled()); mod.setEnabled(!mod.isEnabled());
} }