1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00
tobspr_shapez.io/electron/steam.js
2021-03-12 12:40:56 +01:00

88 lines
2.1 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const { ipcMain } = require("electron");
let greenworks = null;
let appId = null;
let initialized = false;
try {
greenworks = require("shapez.io-private-artifacts/steam/greenworks");
appId = parseInt(fs.readFileSync(path.join(__dirname, "steam_appid.txt"), "utf8"));
} catch (err) {
// greenworks is not installed
// throw err;
}
function init (isDev) {
if (!greenworks) {
return;
}
if (!isDev) {
if (greenworks.restartAppIfNecessary(appId)) {
console.log("Restarting ...");
process.exit(0);
}
}
if (!greenworks.init()) {
console.log("Failed to initialize greenworks");
process.exit(1);
}
initialized = true;
}
function listen () {
ipcMain.handle("steam:is-initialized", isInitialized);
if (!greenworks || !initialized) {
console.log("Ignoring Steam IPC events");
return;
}
ipcMain.handle("steam:get-achievement-names", getAchievementNames);
ipcMain.handle("steam:get-achievement", getAchievement);
ipcMain.handle("steam:activate-achievement", activateAchievement);
ipcMain.handle("steam:deactivate-achievement", deactivateAchievement);
}
function isInitialized(event) {
return Promise.resolve(initialized);
}
function getAchievementNames(event) {
return new Promise((resolve, reject) => {
try {
const achievements = greenworks.getAchievementNames()
resolve(achievements);
} catch (err) {
reject(err);
}
});
}
function getAchievement(event, id) {
return new Promise((resolve, reject) => {
greenworks.getAchievement(id, () => resolve(), err => reject(err))
});
}
function activateAchievement(event, id) {
return new Promise((resolve, reject) => {
greenworks.activateAchievement(id, (is_achieved) => resolve(is_achieved), err => reject(err))
});
}
function deactivateAchievement(event, id) {
return new Promise((resolve, reject) => {
greenworks.clearAchievement(id, () => resolve(), err => reject(err))
});
}
module.exports = {
init,
listen
};