Add Clear inventory button
This commit is contained in:
1 parent
9e8fd5919b
commit
7fc73c1f89
2 files changed
+14
No files matched your search
@@ -2,6 +2,7 @@
|
|||||||
const DISCLAIMER_KEY = "sotf-inventory-disclaimer-v1";
|
const DISCLAIMER_KEY = "sotf-inventory-disclaimer-v1";
|
||||||
const SAVES_PATH = "%USERPROFILE%\\AppData\\LocalLow\\Endnight\\SonsOfTheForest\\Saves";
|
const SAVES_PATH = "%USERPROFILE%\\AppData\\LocalLow\\Endnight\\SonsOfTheForest\\Saves";
|
||||||
const INVENTORY_FILE = "PlayerInventorySaveData.json";
|
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 $ = (id) => document.getElementById(id);
|
||||||
const els = {
|
const els = {
|
||||||
@@ -20,6 +21,7 @@
|
|||||||
emptyState: $("emptyState"),
|
emptyState: $("emptyState"),
|
||||||
changeSummary: $("changeSummary"),
|
changeSummary: $("changeSummary"),
|
||||||
resetBtn: $("resetBtn"),
|
resetBtn: $("resetBtn"),
|
||||||
|
clearBtn: $("clearBtn"),
|
||||||
saveBtn: $("saveBtn"),
|
saveBtn: $("saveBtn"),
|
||||||
disclaimer: $("disclaimer"),
|
disclaimer: $("disclaimer"),
|
||||||
disclaimerOk: $("disclaimerOk"),
|
disclaimerOk: $("disclaimerOk"),
|
||||||
@@ -157,11 +159,16 @@
|
|||||||
return [...state.items.values()].filter((i) => i.count !== i.original);
|
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() {
|
function updateSummary() {
|
||||||
const n = changedItems().length;
|
const n = changedItems().length;
|
||||||
els.changeSummary.textContent = n === 0 ? "No changes" : `${n} item${n === 1 ? "" : "s"} changed`;
|
els.changeSummary.textContent = n === 0 ? "No changes" : `${n} item${n === 1 ? "" : "s"} changed`;
|
||||||
els.changeSummary.classList.toggle("has-changes", n > 0);
|
els.changeSummary.classList.toggle("has-changes", n > 0);
|
||||||
els.resetBtn.disabled = 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.disabled = !state.source || n === 0;
|
||||||
els.saveBtn.title = state.source ? "" : "Load a save first";
|
els.saveBtn.title = state.source ? "" : "Load a save first";
|
||||||
}
|
}
|
||||||
@@ -442,6 +449,12 @@
|
|||||||
render();
|
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", () => {
|
els.saveBtn.addEventListener("click", () => {
|
||||||
if (!state.source) return;
|
if (!state.source) return;
|
||||||
els.saveFileName.textContent = state.source.fileName;
|
els.saveFileName.textContent = state.source.fileName;
|
||||||
|
|||||||
@@ -68,6 +68,7 @@
|
|||||||
<footer class="savebar">
|
<footer class="savebar">
|
||||||
<span id="changeSummary">No changes</span>
|
<span id="changeSummary">No changes</span>
|
||||||
<div class="savebar-actions">
|
<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-link" id="resetBtn" disabled>Undo changes</button>
|
||||||
<button type="button" class="btn btn-primary" id="saveBtn" disabled>Save</button>
|
<button type="button" class="btn btn-primary" id="saveBtn" disabled>Save</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in new issue
Block a user