// ==UserScript== // @name Papa's Bakeria Save Manager // @namespace vaminta // @match https://www.coolmathgames.com/0-papas-bakeria // @grant none // @version 0.1.0 // @author Vaminta // @run-at document-idle // @description Allows you to backup your Papa's Bakeria save data on coolmathgames.com // @homepageURL https://github.com/Vaminta/papas-bakeria-save-manager // @downloadURL none // ==/UserScript== //31/07/2023, 17:49:11, 28/08 const pbsmOptions = { preventGameLoad: false }; const lsKeys = ["//papasbakeria1","//papasbakeria2","//papasbakeria3"]; //localstorage keys function slotHasSave(slot){ let result = false; const data = localStorage.getItem(lsKeys[slot]); if(data!=null&&data.length>20) result = true; return result; } function download(filename, text) { let element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } function exportSave(slot){ if(!slotHasSave(slot)){ alert("No save in slot " + (slot+1) + " detected!"); return; } const data = localStorage.getItem(lsKeys[slot]); download("papasbakeria_save.txt",data); } function importSave(slot){ if(slotHasSave(slot)){ let overwrite = confirm("There is already data in slot " + (slot+1) + ". Are you sure you want to overwrite?"); if(!overwrite) return; } const file = document.getElementById("file-picker").files[0]; const reader = new FileReader(); reader.addEventListener("load",function(){ localStorage.setItem(lsKeys[slot],reader.result); },false,); if(file) reader.readAsText(file); } /* Handles button clicks from the import and export buttons */ function handleButtonClick(e,func){ let targetSave = e.parentElement.getAttribute("data-ss")-1; if(func=="import"){ document.getElementById("file-picker").onchange = function(){importSave(targetSave)}; document.getElementById("file-picker").click(); } else if(func=="export"){ exportSave(targetSave); } } function genTableHTML(){ const impButtHTML = ''; const expButtHTML = ''; let table = "
Slot 1 | Slot 2 | Slot 3 |
---|---|---|
" + impButtHTML + " | "+ impButtHTML + " | "+impButtHTML+" |
" + expButtHTML + " | "+ expButtHTML + " | "+expButtHTML+" |