Skip to content

Commit

Permalink
Invoke setting consumer on init
Browse files Browse the repository at this point in the history
fixes things like modules enabled by default not being subscribed on first setting load
  • Loading branch information
rfresh2 committed Jul 4, 2023
1 parent 1a589ce commit 15770f4
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 5 deletions.
6 changes: 6 additions & 0 deletions src/main/java/xaeroplus/settings/XaeroPlusBooleanSetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,11 @@ public void setSettingChangeConsumer(final Consumer<Boolean> settingChangeConsum
this.settingChangeConsumer = settingChangeConsumer;
}

@Override
public void init() {
if (nonNull(settingChangeConsumer)) {
settingChangeConsumer.accept(value);
}
}

}
7 changes: 6 additions & 1 deletion src/main/java/xaeroplus/settings/XaeroPlusEnumSetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,5 +82,10 @@ public Consumer<T> getSettingChangeConsumer() {
public T[] getEnumValues() {
return enumValues;
}

@Override
public void init() {
if (nonNull(settingChangeConsumer)) {
settingChangeConsumer.accept(value);
}
}
}
5 changes: 5 additions & 0 deletions src/main/java/xaeroplus/settings/XaeroPlusFloatSetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,9 @@ public Consumer<Float> getSettingChangeConsumer() {
public void setSettingChangeConsumer(final Consumer<Float> settingChangeConsumer) {
this.settingChangeConsumer = settingChangeConsumer;
}
public void init() {
if (nonNull(settingChangeConsumer)) {
settingChangeConsumer.accept(value);
}
}
}
1 change: 1 addition & 0 deletions src/main/java/xaeroplus/settings/XaeroPlusSetting.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,5 @@ public KeyBinding getKeyBinding() {
public void setKeyBinding(KeyBinding keyBinding) {
this.keyBinding = keyBinding;
}
public abstract void init();
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,14 @@ public class XaeroPlusSettingsReflectionHax {
.flatMap(x -> x)
.collect(Collectors.toList());
public static final List<XaeroPlusSetting> XAERO_PLUS_KEYBIND_SETTINGS = new ArrayList<>();
public static final Supplier<List<XaeroPlusSetting>> ALL_SETTINGS = () ->
Stream.of(XAERO_PLUS_WORLDMAP_SETTINGS.stream(),
XAERO_PLUS_MINIMAP_OVERLAY_SETTINGS.stream(),
XAERO_PLUS_MINIMAP_ENTITY_RADAR_SETTINGS.stream(),
XAERO_PLUS_MINIMAP_SETTINGS.stream(),
XAERO_PLUS_KEYBIND_SETTINGS.stream())
.flatMap(x -> x)
.collect(Collectors.toList());

public enum SettingLocation {
WORLD_MAP_MAIN(XAERO_PLUS_WORLDMAP_SETTINGS),
Expand Down
14 changes: 10 additions & 4 deletions src/main/java/xaeroplus/util/Shared.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@
import xaero.map.WorldMapSession;
import xaero.map.mods.SupportMods;
import xaero.map.world.MapDimension;
import xaeroplus.settings.XaeroPlusSetting;
import xaeroplus.settings.XaeroPlusSettingRegistry;
import xaeroplus.settings.XaeroPlusSettingsReflectionHax;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
Expand All @@ -34,9 +36,9 @@ public class Shared {
// Map gui follow mode
public static boolean FOLLOW = false;
// cache and only update this on new world loads
public static boolean nullOverworldDimensionFolder = XaeroPlusSettingRegistry.nullOverworldDimensionFolder.getValue();
public static XaeroPlusSettingRegistry.DataFolderResolutionMode dataFolderResolutionMode = XaeroPlusSettingRegistry.dataFolderResolutionMode.getValue();
public static int minimapScalingFactor = (int) XaeroPlusSettingRegistry.minimapScaling.getValue();
public static boolean nullOverworldDimensionFolder = false;
public static XaeroPlusSettingRegistry.DataFolderResolutionMode dataFolderResolutionMode = XaeroPlusSettingRegistry.DataFolderResolutionMode.IP;
public static int minimapScalingFactor = 1;
public static boolean settingsLoadedInit = false;
public static boolean shouldResetFBO = false;
public static String LOCK_ID = UUID.randomUUID().toString();
Expand All @@ -50,14 +52,18 @@ public class Shared {

public static void onSettingLoad() {
if (!settingsLoadedInit) { // handle settings where we want them to take effect only on first load
XaeroPlusSettingRegistry.fastMapSetting.getValue(); // force load all settings if they haven't been already
XaeroPlusSettingsReflectionHax.ALL_SETTINGS.get().forEach(XaeroPlusSetting::init);
nullOverworldDimensionFolder = XaeroPlusSettingRegistry.nullOverworldDimensionFolder.getValue();
dataFolderResolutionMode = XaeroPlusSettingRegistry.dataFolderResolutionMode.getValue();
minimapScalingFactor = (int) XaeroPlusSettingRegistry.minimapScaling.getValue();
}
}

public static void switchToDimension(final RegistryKey<World> newDimId) {
MapProcessor mapProcessor = WorldMapSession.getCurrentSession().getMapProcessor();
WorldMapSession worldMapSession = WorldMapSession.getCurrentSession();
if (worldMapSession == null) return;
MapProcessor mapProcessor = worldMapSession.getMapProcessor();
mapProcessor.getMapSaveLoad().setRegionDetectionComplete(false);
MapDimension dimension = mapProcessor.getMapWorld().getDimension(newDimId);
if (dimension == null) {
Expand Down

0 comments on commit 15770f4

Please sign in to comment.