Add Clear inventory button

This commit is contained in:
Justin Oros
2026-09-21 21:06:07 -07:00
parent 9e8fd5919b
commit 7fc73c1f89
2 changed files with 14 additions and 0 deletions
+13
View File
@@ -2,6 +2,7 @@
const DISCLAIMER_KEY = "sotf-inventory-disclaimer-v1";
const SAVES_PATH = "%USERPROFILE%\\AppData\\LocalLow\\Endnight\\SonsOfTheForest\\Saves";
const INVENTORY_FILE = "PlayerInventorySaveData.json";
const KEEP_ON_CLEAR = new Set([351, 379, 380, 402, 412, 413, 483, 486, 552, 589]);
const $ = (id) => document.getElementById(id);
const els = {
@@ -20,6 +21,7 @@
emptyState: $("emptyState"),
changeSummary: $("changeSummary"),
resetBtn: $("resetBtn"),
clearBtn: $("clearBtn"),
saveBtn: $("saveBtn"),
disclaimer: $("disclaimer"),
disclaimerOk: $("disclaimerOk"),
@@ -157,11 +159,16 @@
return [...state.items.values()].filter((i) => i.count !== i.original);
}
function clearableItems() {
return [...state.items.values()].filter((i) => !i.equipped && !KEEP_ON_CLEAR.has(i.id));
}
function updateSummary() {
const n = changedItems().length;
els.changeSummary.textContent = n === 0 ? "No changes" : `${n} item${n === 1 ? "" : "s"} changed`;
els.changeSummary.classList.toggle("has-changes", n > 0);
els.resetBtn.disabled = n === 0;
els.clearBtn.disabled = !clearableItems().some((i) => i.count > 0);
els.saveBtn.disabled = !state.source || n === 0;
els.saveBtn.title = state.source ? "" : "Load a save first";
}
@@ -442,6 +449,12 @@
render();
});
els.clearBtn.addEventListener("click", () => {
for (const item of clearableItems()) item.count = 0;
render();
toast("Inventory cleared. Equipped items and starting tools were kept. Use Undo changes to restore.");
});
els.saveBtn.addEventListener("click", () => {
if (!state.source) return;
els.saveFileName.textContent = state.source.fileName;
+1
View File
@@ -68,6 +68,7 @@
<footer class="savebar">
<span id="changeSummary">No changes</span>
<div class="savebar-actions">
<button type="button" class="btn-link" id="clearBtn" title="Sets every item to 0 except equipped items and starting tools">Clear inventory</button>
<button type="button" class="btn-link" id="resetBtn" disabled>Undo changes</button>
<button type="button" class="btn btn-primary" id="saveBtn" disabled>Save</button>
</div>