Skip to content

Commit

Permalink
Revert some class name changes for options code
Browse files Browse the repository at this point in the history
This will help to avoid breaking some mods which currently
depend on these internal details for a point release.

Though, please, if you have some use case where you
need to touch this code, please ask us for an API,
rather than using mixins to hack into our code.
  • Loading branch information
jellysquid3 committed Jan 27, 2024
1 parent 7781cc0 commit 2bb3023
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 45 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.client;

import me.jellysquid.mods.sodium.client.data.config.UserConfig;
import me.jellysquid.mods.sodium.client.gui.SodiumGameOptions;
import me.jellysquid.mods.sodium.client.data.fingerprint.FingerprintMeasure;
import me.jellysquid.mods.sodium.client.data.fingerprint.HashedFingerprint;
import me.jellysquid.mods.sodium.client.gui.console.Console;
Expand All @@ -16,7 +16,7 @@
import java.io.IOException;

public class SodiumClientMod implements ClientModInitializer {
private static UserConfig CONFIG;
private static SodiumGameOptions CONFIG;
private static Logger LOGGER;

private static String MOD_VERSION;
Expand All @@ -43,7 +43,7 @@ public void onInitializeClient() {
}
}

public static UserConfig options() {
public static SodiumGameOptions options() {
if (CONFIG == null) {
throw new IllegalStateException("Config not yet available");
}
Expand All @@ -59,27 +59,27 @@ public static Logger logger() {
return LOGGER;
}

private static UserConfig loadConfig() {
private static SodiumGameOptions loadConfig() {
try {
return UserConfig.loadFromDisk();
return SodiumGameOptions.loadFromDisk();
} catch (Exception e) {
LOGGER.error("Failed to load configuration file", e);
LOGGER.error("Using default configuration file in read-only mode");

Console.instance().logMessage(MessageLevel.SEVERE, Text.translatable("sodium.console.config_not_loaded"), 12.5);

var config = UserConfig.defaults();
var config = SodiumGameOptions.defaults();
config.setReadOnly();

return config;
}
}

public static void restoreDefaultOptions() {
CONFIG = UserConfig.defaults();
CONFIG = SodiumGameOptions.defaults();

try {
UserConfig.writeToDisk(CONFIG);
SodiumGameOptions.writeToDisk(CONFIG);
} catch (IOException e) {
throw new RuntimeException("Failed to write config file", e);
}
Expand Down Expand Up @@ -115,7 +115,7 @@ private static void updateFingerprint() {
CONFIG.notifications.hasClearedDonationButton = false;

try {
UserConfig.writeToDisk(CONFIG);
SodiumGameOptions.writeToDisk(CONFIG);
} catch (IOException e) {
LOGGER.error("Failed to update config file", e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package me.jellysquid.mods.sodium.client.gui;

import com.google.common.collect.ImmutableList;
import me.jellysquid.mods.sodium.client.data.config.UserConfig;
import me.jellysquid.mods.sodium.client.gl.arena.staging.MappedStagingBuffer;
import me.jellysquid.mods.sodium.client.gl.device.RenderDevice;
import me.jellysquid.mods.sodium.client.gui.options.*;
Expand All @@ -24,7 +23,8 @@
import java.util.ArrayList;
import java.util.List;

public class RendererSettingsLayout {
// TODO: Rename in Sodium 0.6
public class SodiumGameOptionPages {
private static final SodiumOptionsStorage sodiumOpts = new SodiumOptionsStorage();
private static final MinecraftOptionsStorage vanillaOpts = new MinecraftOptionsStorage();

Expand Down Expand Up @@ -161,17 +161,17 @@ public static OptionPage quality() {
}, opts -> opts.getCloudRenderMode().getValue())
.setImpact(OptionImpact.LOW)
.build())
.add(OptionImpl.createBuilder(UserConfig.GraphicsQuality.class, sodiumOpts)
.add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts)
.setName(Text.translatable("soundCategory.weather"))
.setTooltip(Text.translatable("sodium.options.weather_quality.tooltip"))
.setControl(option -> new CyclingControl<>(option, UserConfig.GraphicsQuality.class))
.setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.class))
.setBinding((opts, value) -> opts.quality.weatherQuality = value, opts -> opts.quality.weatherQuality)
.setImpact(OptionImpact.MEDIUM)
.build())
.add(OptionImpl.createBuilder(UserConfig.GraphicsQuality.class, sodiumOpts)
.add(OptionImpl.createBuilder(SodiumGameOptions.GraphicsQuality.class, sodiumOpts)
.setName(Text.translatable("sodium.options.leaves_quality.name"))
.setTooltip(Text.translatable("sodium.options.leaves_quality.tooltip"))
.setControl(option -> new CyclingControl<>(option, UserConfig.GraphicsQuality.class))
.setControl(option -> new CyclingControl<>(option, SodiumGameOptions.GraphicsQuality.class))
.setBinding((opts, value) -> opts.quality.leavesQuality = value, opts -> opts.quality.leavesQuality)
.setImpact(OptionImpact.MEDIUM)
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package me.jellysquid.mods.sodium.client.data.config;
package me.jellysquid.mods.sodium.client.gui;

import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
Expand All @@ -16,7 +16,8 @@
import java.nio.file.Files;
import java.nio.file.Path;

public class UserConfig {
// TODO: Rename in Sodium 0.6
public class SodiumGameOptions {
private static final String DEFAULT_FILE_NAME = "sodium-options.json";

public final QualitySettings quality = new QualitySettings();
Expand All @@ -26,12 +27,12 @@ public class UserConfig {

private boolean readOnly;

private UserConfig() {
private SodiumGameOptions() {
// NO-OP
}

public static UserConfig defaults() {
return new UserConfig();
public static SodiumGameOptions defaults() {
return new SodiumGameOptions();
}

public static class PerformanceSettings {
Expand Down Expand Up @@ -94,18 +95,18 @@ public boolean isFancy(GraphicsMode graphicsMode) {
.excludeFieldsWithModifiers(Modifier.PRIVATE)
.create();

public static UserConfig loadFromDisk() {
public static SodiumGameOptions loadFromDisk() {
Path path = getConfigPath();
UserConfig config;
SodiumGameOptions config;

if (Files.exists(path)) {
try (FileReader reader = new FileReader(path.toFile())) {
config = GSON.fromJson(reader, UserConfig.class);
config = GSON.fromJson(reader, SodiumGameOptions.class);
} catch (IOException e) {
throw new RuntimeException("Could not parse config", e);
}
} else {
config = new UserConfig();
config = new SodiumGameOptions();
}

try {
Expand All @@ -123,7 +124,7 @@ private static Path getConfigPath() {
.resolve(DEFAULT_FILE_NAME);
}

public static void writeToDisk(UserConfig config) throws IOException {
public static void writeToDisk(SodiumGameOptions config) throws IOException {
if (config.isReadOnly()) {
throw new IllegalStateException("Config file is read-only");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package me.jellysquid.mods.sodium.client.gui;

import me.jellysquid.mods.sodium.client.SodiumClientMod;
import me.jellysquid.mods.sodium.client.data.config.UserConfig;
import me.jellysquid.mods.sodium.client.data.fingerprint.HashedFingerprint;
import me.jellysquid.mods.sodium.client.gui.console.Console;
import me.jellysquid.mods.sodium.client.gui.console.message.MessageLevel;
Expand Down Expand Up @@ -37,7 +36,8 @@
import java.util.List;
import java.util.stream.Stream;

public class RendererSettingsScreen extends Screen implements ScreenPromptable {
// TODO: Rename in Sodium 0.6
public class SodiumOptionsGUI extends Screen implements ScreenPromptable {
private final List<OptionPage> pages = new ArrayList<>();

private final List<ControlElement<?>> controls = new ArrayList<>();
Expand All @@ -54,15 +54,15 @@ public class RendererSettingsScreen extends Screen implements ScreenPromptable {

private @Nullable ScreenPrompt prompt;

private RendererSettingsScreen(Screen prevScreen) {
private SodiumOptionsGUI(Screen prevScreen) {
super(Text.literal("Sodium Renderer Settings"));

this.prevScreen = prevScreen;

this.pages.add(RendererSettingsLayout.general());
this.pages.add(RendererSettingsLayout.quality());
this.pages.add(RendererSettingsLayout.performance());
this.pages.add(RendererSettingsLayout.advanced());
this.pages.add(SodiumGameOptionPages.general());
this.pages.add(SodiumGameOptionPages.quality());
this.pages.add(SodiumGameOptionPages.performance());
this.pages.add(SodiumGameOptionPages.advanced());

this.checkPromptTimers();
}
Expand Down Expand Up @@ -105,15 +105,15 @@ private void checkPromptTimers() {
}
}

private void openDonationPrompt(UserConfig options) {
private void openDonationPrompt(SodiumGameOptions options) {
var prompt = new ScreenPrompt(this, DONATION_PROMPT_MESSAGE, 320, 190,
new ScreenPrompt.Action(Text.literal("Buy us a coffee"), this::openDonationPage));
prompt.setFocused(true);

options.notifications.hasSeenDonationPrompt = true;

try {
UserConfig.writeToDisk(options);
SodiumGameOptions.writeToDisk(options);
} catch (IOException e) {
SodiumClientMod.logger()
.error("Failed to update config file", e);
Expand All @@ -122,9 +122,9 @@ private void openDonationPrompt(UserConfig options) {

public static Screen createScreen(Screen currentScreen) {
if (SodiumClientMod.options().isReadOnly()) {
return new ConfigCorruptedScreen(currentScreen, RendererSettingsScreen::new);
return new ConfigCorruptedScreen(currentScreen, SodiumOptionsGUI::new);
} else {
return new RendererSettingsScreen(currentScreen);
return new SodiumOptionsGUI(currentScreen);
}
}

Expand Down Expand Up @@ -181,11 +181,11 @@ private void setDonationButtonVisibility(boolean value) {
}

private void hideDonationButton() {
UserConfig options = SodiumClientMod.options();
SodiumGameOptions options = SodiumClientMod.options();
options.notifications.hasClearedDonationButton = true;

try {
UserConfig.writeToDisk(options);
SodiumGameOptions.writeToDisk(options);
} catch (IOException e) {
throw new RuntimeException("Failed to save configuration", e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
package me.jellysquid.mods.sodium.client.gui.options.storage;

import me.jellysquid.mods.sodium.client.SodiumClientMod;
import me.jellysquid.mods.sodium.client.data.config.UserConfig;
import me.jellysquid.mods.sodium.client.gui.SodiumGameOptions;

import java.io.IOException;

public class SodiumOptionsStorage implements OptionStorage<UserConfig> {
private final UserConfig options;
public class SodiumOptionsStorage implements OptionStorage<SodiumGameOptions> {
private final SodiumGameOptions options;

public SodiumOptionsStorage() {
this.options = SodiumClientMod.options();
}

@Override
public UserConfig getData() {
public SodiumGameOptions getData() {
return this.options;
}

@Override
public void save() {
try {
UserConfig.writeToDisk(this.options);
SodiumGameOptions.writeToDisk(this.options);
} catch (IOException e) {
throw new RuntimeException("Couldn't save configuration changes", e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package me.jellysquid.mods.sodium.mixin.features.gui.hooks.settings;

import me.jellysquid.mods.sodium.client.gui.RendererSettingsScreen;
import me.jellysquid.mods.sodium.client.gui.SodiumOptionsGUI;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.option.OptionsScreen;
import net.minecraft.text.Text;
Expand All @@ -19,6 +19,6 @@ protected OptionsScreenMixin(Text title) {
@Dynamic
@Inject(method = "method_19828", at = @At("HEAD"), cancellable = true)
private void open(CallbackInfoReturnable<Screen> ci) {
ci.setReturnValue(RendererSettingsScreen.createScreen(this));
ci.setReturnValue(SodiumOptionsGUI.createScreen(this));
}
}

0 comments on commit 2bb3023

Please sign in to comment.