sandboxels/mods/libpacman-v1.js

62 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2023-01-14 18:30:06 -05:00
/* Helps make managing many dependencies easier */
2023-01-19 22:15:31 -05:00
// Version 1.0.1
// Update Description: Refresh quickfix
let __needRefresh = false;
2023-01-14 18:30:06 -05:00
2023-01-19 22:15:31 -05:00
window.addEventListener("load", e=>{
if(__needRefresh) location.reload();
});
2023-01-14 18:20:39 -05:00
/*
* Requires that certain mods are installed for the callback to proceed.
* @param {array} mods - The mods your mod depends on.
* @param {function} callback - The callback to run when the dependencies are met.
*/
function requireMods(mods, cal) {
if (__checkMods(mods)) {
2023-01-14 18:30:06 -05:00
// The whole callback system remains from a feature that was nerfed soon before release. It will either be removed or taken advantage of in future versions.
2023-01-14 18:20:39 -05:00
cal();
}
else {
__installMods(mods);
2023-01-19 22:15:31 -05:00
__needRefresh = true;
2023-01-14 18:20:39 -05:00
}
}
/*
* Fetches the name of any mods that are missing
* @param {array} mods - The mods your mod depends on.
* @returns {array} An array of missing mods.
*/
function __getMissingMods(mods) {
let missing = [];
for (let i = 0; i < mods.length; i++) {
if (enabledMods.includes(mods[i])) {
continue;
}
missing.push(mods[i]);
}
return missing;
}
/*
* Checks if any mods are missing.
* @param {array} mods - The mods your mod depends on.
* @returns {boolean} True if any mods are missing.
*/
function __checkMods(mods) {
return __getMissingMods(mods).length === 0;
}
function __installMods(mods) {
__getMissingMods(mods).forEach(mod => __installMod(mod));
}
function __installMod(mod) {
2023-01-19 22:15:31 -05:00
let mods = JSON.parse(localStorage.getItem("enabledMods") || "[]");
2023-01-14 18:20:39 -05:00
mods.push(mod);
2023-01-19 22:15:31 -05:00
localStorage.setItem("enabledMods", JSON.stringify(mods));
2023-01-14 18:20:39 -05:00
}
// Ensure it's available in the global scope
window.requireMods = requireMods;