// ==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 = ""; table += ""; table += ""; //data-saveslot table += ""; table += "
Slot 1Slot 2Slot 3
" + impButtHTML + ""+ impButtHTML + ""+impButtHTML+"
" + expButtHTML + ""+ expButtHTML + ""+expButtHTML+"
"; return table; } function addOnclicks(){ let importButtons = document.getElementsByClassName("pbsm-imp-button"); let exportButtons = document.getElementsByClassName("pbsm-exp-button"); for(let i=0;i