From 78eeb3dca5d9fab520a6cb06151eeccaef7f6897 Mon Sep 17 00:00:00 2001 From: OrekiWoof Date: Sat, 23 May 2026 01:38:00 +0200 Subject: [PATCH] make toggle state persistent --- .timetracker | 7 ++++++- ChestPreview/ChestPreview/Configs/State.cs | 7 +++++++ .../ChestPreview/Core/ChestPreviewModSystem.cs | 15 +++++++++++---- .../ChestPreview/PreviewTargetProvider.cs | 6 +++--- ChestPreview/ChestPreview/modinfo.json | 2 +- 5 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 ChestPreview/ChestPreview/Configs/State.cs diff --git a/.timetracker b/.timetracker index c03cc6a..e68b166 100644 --- a/.timetracker +++ b/.timetracker @@ -1,5 +1,5 @@ { - "total": 85508, + "total": 87144, "sessions": [ { "begin": "2026-03-11T23:50:47+01:00", @@ -135,6 +135,11 @@ "begin": "2026-05-23T00:34:04+02:00", "end": "2026-05-23T01:10:47+02:00", "duration": 2202 + }, + { + "begin": "2026-05-23T01:10:47+02:00", + "end": "2026-05-23T01:38:03+02:00", + "duration": 1636 } ] } \ No newline at end of file diff --git a/ChestPreview/ChestPreview/Configs/State.cs b/ChestPreview/ChestPreview/Configs/State.cs new file mode 100644 index 0000000..4d8b1f6 --- /dev/null +++ b/ChestPreview/ChestPreview/Configs/State.cs @@ -0,0 +1,7 @@ +namespace ChestPreview.Configs; + +public class State +{ + public bool PreviewNearbyToggleActive { get; set; } = false; + public bool PreviewToggleActive { get; set; } = false; +} \ No newline at end of file diff --git a/ChestPreview/ChestPreview/Core/ChestPreviewModSystem.cs b/ChestPreview/ChestPreview/Core/ChestPreviewModSystem.cs index d2c2eec..1d2b32e 100644 --- a/ChestPreview/ChestPreview/Core/ChestPreviewModSystem.cs +++ b/ChestPreview/ChestPreview/Core/ChestPreviewModSystem.cs @@ -10,6 +10,7 @@ namespace ChestPreview.Core; public class ChestPreviewModSystem : ModSystem { internal const string CONFIG_FILENAME = "chestpreview.json"; + internal const string STATE_FILENAME = "chestpreview-state.json"; internal const string CONFIGLIB_DOMAIN = "chestpreview"; internal const string PREVIEW_CONTAINERS_HOTKEY_CODE = "chestpreview-preview-containers"; internal const string PREVIEW_CONTAINERS_NEARBY_HOTKEY_CODE = "chestpreview-preview-containers-nearby"; @@ -22,8 +23,7 @@ public class ChestPreviewModSystem : ModSystem private StorageHoverHudRenderer? storageHoverHudRenderer; private WorldBillboardRenderer? worldBillboardRenderer; - public bool PreviewNearbyToggleActive { get; private set; } = false; - public bool PreviewToggleActive { get; private set; } = false; + public State State { get; } = new(); public override bool ShouldLoad(EnumAppSide forSide) => forSide is EnumAppSide.Client; @@ -45,7 +45,8 @@ public class ChestPreviewModSystem : ModSystem hotkeyCode: TOGGLE_PREVIEW_CONTAINERS_HOTKEY_CODE, keycomb => { - PreviewToggleActive = !PreviewToggleActive; + State.PreviewToggleActive = !State.PreviewToggleActive; + api.StoreModConfig(State, STATE_FILENAME); return true; }); @@ -53,7 +54,8 @@ public class ChestPreviewModSystem : ModSystem hotkeyCode: TOGGLE_PREVIEW_CONTAINERS_NEARBY_HOTKEY_CODE, keycomb => { - PreviewNearbyToggleActive = !PreviewNearbyToggleActive; + State.PreviewNearbyToggleActive = !State.PreviewNearbyToggleActive; + api.StoreModConfig(State, STATE_FILENAME); return true; }); } @@ -84,10 +86,14 @@ public class ChestPreviewModSystem : ModSystem public Config LoadClientConfig(ICoreClientAPI api) { Config config; + State state; try { config = api.LoadModConfig(CONFIG_FILENAME) ?? new Config(); + state = api.LoadModConfig(STATE_FILENAME) ?? new State(); + State.PreviewNearbyToggleActive = state.PreviewNearbyToggleActive; + State.PreviewToggleActive = state.PreviewToggleActive; } catch (Exception ex) { @@ -106,6 +112,7 @@ public class ChestPreviewModSystem : ModSystem config.PreviewNearbyRadius = config.PreviewNearbyRadius; api.StoreModConfig(config, CONFIG_FILENAME); + api.StoreModConfig(State, STATE_FILENAME); return config; } diff --git a/ChestPreview/ChestPreview/PreviewTargetProvider.cs b/ChestPreview/ChestPreview/PreviewTargetProvider.cs index 36dadeb..6ddbee9 100644 --- a/ChestPreview/ChestPreview/PreviewTargetProvider.cs +++ b/ChestPreview/ChestPreview/PreviewTargetProvider.cs @@ -24,7 +24,7 @@ internal partial class PreviewTargetProvider(ICoreClientAPI api, Config config) private readonly Config config = config; private readonly List nearbyContainerEntities = []; private float nearbyScanAccumulator; - private Lazy coreModSystem = new Lazy(() => api.ModLoader.GetModSystem()); + private readonly Lazy state = new(() => api.ModLoader.GetModSystem().State); public void CollectTargets(float deltaTime, List targets) { @@ -87,10 +87,10 @@ internal partial class PreviewTargetProvider(ICoreClientAPI api, Config config) var previewKeyHeld = IsHotkeyHeld(ChestPreviewModSystem.PREVIEW_CONTAINERS_HOTKEY_CODE); var previewNearbyKeyHeld = IsHotkeyHeld(ChestPreviewModSystem.PREVIEW_CONTAINERS_NEARBY_HOTKEY_CODE); - if (coreModSystem.Value.PreviewNearbyToggleActive || previewNearbyKeyHeld) + if (state.Value.PreviewNearbyToggleActive || previewNearbyKeyHeld) return PreviewModes.ON_NEARBY_CONTAINERS; - if (coreModSystem.Value.PreviewToggleActive || previewKeyHeld) + if (state.Value.PreviewToggleActive || previewKeyHeld) return PreviewModes.Normalize(config.Mode); return PreviewModes.NONE; diff --git a/ChestPreview/ChestPreview/modinfo.json b/ChestPreview/ChestPreview/modinfo.json index e3ddc4b..480cae3 100644 --- a/ChestPreview/ChestPreview/modinfo.json +++ b/ChestPreview/ChestPreview/modinfo.json @@ -7,7 +7,7 @@ "OrekiWoof" ], "description": "see containers' contents without having to open them", - "version": "1.2.0", + "version": "2.0.0", "dependencies": { "game": "1.21.0" },