diff --git a/game.js b/game.js index 0395f17..14cf0fd 100644 --- a/game.js +++ b/game.js @@ -4129,12 +4129,42 @@ function importSettings() { loadSettings(settings); } +function updateCustomCharacters() { + let select = document.querySelector("#custom-characters"); + select.innerHTML = ""; + + let saves = JSON.parse(storage.getItem("custom-characters")); + + if (Object.keys(saves).length == 0) { + let none = document.createElement("option"); + none.innerText = "No characters to load"; + + select.appendChild(none); + + return; + } else { + Object.entries(saves).forEach(function([name, contents]) { + let entry = document.createElement("option"); + entry.value = name; + entry.innerText = name; + + select.appendChild(entry); + }); + } +} + function saveSettings() { let storage = window.localStorage; let settings = generateSettings(); - storage.setItem('settings',JSON.stringify(settings)); + let saves = JSON.parse(storage.getItem("custom-characters")); + + saves[settings.name] = settings; + + storage.setItem('custom-characters',JSON.stringify(saves)); + + updateCustomCharacters(); } function loadAutosave() { @@ -4147,12 +4177,18 @@ function loadAutosave() { function loadSettings(settings = null) { if (settings == null) { - if (window.localStorage.getItem('settings') == null) - return; let storage = window.localStorage; - settings = JSON.parse(storage.getItem('settings')); + let select = document.querySelector("#custom-characters"); + + let name = select.options[select.selectedIndex].value; + + settings = JSON.parse(storage.getItem('custom-characters'))[name]; + + if (settings == undefined) { + return; + } } migrate(settings); @@ -4814,6 +4850,24 @@ window.addEventListener('load', function(event) { } }()); + if (storage.getItem("custom-characters") == undefined) { + storage.setItem("custom-characters", JSON.stringify({})); + } + + // this migrates the old single custom character slot over + if (storage.getItem("settings") != undefined) { + let character = JSON.parse(storage.getItem("settings")); + + let saves = JSON.parse(storage.getItem("custom-characters")); + + saves[character.name] = character; + + localStorage.setItem("custom-characters", JSON.stringify(saves)); + localStorage.removeItem("settings") + } + + updateCustomCharacters(); + document.querySelectorAll(".version").forEach(function(x) { x.innerText = "Version: " + version; }); diff --git a/stroll.html b/stroll.html index 44c735a..8b110de 100644 --- a/stroll.html +++ b/stroll.html @@ -263,6 +263,11 @@ +
+ +
diff --git a/style.css b/style.css index 75033a9..0257e12 100644 --- a/style.css +++ b/style.css @@ -694,3 +694,7 @@ body.dark .meterLabel { .save-version { display: none; } + +#custom-characters { + font-size: 24px; +}