mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-23 06:32:26 +01:00
36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||
|
const greenworks = require("./greenworks");
|
||
|
|
||
|
function enableAchievementsInterval(window) {
|
||
|
// This is backward but the game fills in an array called `document.achievements` and we retrieve it from
|
||
|
// here. Hey if it works it works.
|
||
|
const steamAchievements = greenworks.getAchievementNames();
|
||
|
const intervalID = setInterval(async () => {
|
||
|
try {
|
||
|
const playerAchievements = await window.webContents.executeJavaScript("document.achievements");
|
||
|
for (const ach of playerAchievements) {
|
||
|
if (!steamAchievements.includes(ach)) continue;
|
||
|
greenworks.activateAchievement(ach, () => undefined);
|
||
|
}
|
||
|
} catch (error) {
|
||
|
log.error(error);
|
||
|
|
||
|
// The interval probably did not get cleared after a window kill
|
||
|
log.warn('Clearing achievements timer');
|
||
|
clearInterval(intervalID);
|
||
|
return;
|
||
|
}
|
||
|
}, 1000);
|
||
|
window.achievementsIntervalID = intervalID;
|
||
|
}
|
||
|
|
||
|
function disableAchievementsInterval(window) {
|
||
|
if (window.achievementsIntervalID) {
|
||
|
clearInterval(window.achievementsIntervalID);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
enableAchievementsInterval, disableAchievementsInterval
|
||
|
}
|