mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-18 12:15:44 +01:00
Add launch option to directly export save game
If --export-save is set, it will not launch the index.html and instead launch a blank page. It then reads from the IndexedDb to fetch the bitburnerSave value and prompts a save file dialog.
This commit is contained in:
parent
bf1a2b56ba
commit
bc0791840f
30
electron/export.html
Normal file
30
electron/export.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title>Bitburner</title>
|
||||||
|
<link rel="stylesheet" href="main.css" />
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: black;
|
||||||
|
color: #0c0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div>
|
||||||
|
<h1>Close me when operation is completed.</h1>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,11 +1,12 @@
|
|||||||
/* eslint-disable no-process-exit */
|
/* eslint-disable no-process-exit */
|
||||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||||
const { app } = require("electron");
|
const { app, BrowserWindow } = require("electron");
|
||||||
const log = require("electron-log");
|
const log = require("electron-log");
|
||||||
const greenworks = require("./greenworks");
|
const greenworks = require("./greenworks");
|
||||||
const api = require("./api-server");
|
const api = require("./api-server");
|
||||||
const gameWindow = require("./gameWindow");
|
const gameWindow = require("./gameWindow");
|
||||||
const achievements = require("./achievements");
|
const achievements = require("./achievements");
|
||||||
|
const utils = require("./utils");
|
||||||
|
|
||||||
log.catchErrors();
|
log.catchErrors();
|
||||||
log.info(`Started app: ${JSON.stringify(process.argv)}`);
|
log.info(`Started app: ${JSON.stringify(process.argv)}`);
|
||||||
@ -88,7 +89,16 @@ global.app_handlers = {
|
|||||||
createWindow: startWindow,
|
createWindow: startWindow,
|
||||||
}
|
}
|
||||||
|
|
||||||
app.whenReady().then(() => {
|
app.whenReady().then(async () => {
|
||||||
log.info('Application is ready!');
|
log.info('Application is ready!');
|
||||||
|
|
||||||
|
if (process.argv.includes("--export-save")) {
|
||||||
|
const window = new BrowserWindow({ show: false });
|
||||||
|
await window.loadFile("export.html", false);
|
||||||
|
window.show();
|
||||||
|
setStopProcessHandler(app, window, true);
|
||||||
|
await utils.exportSave(window);
|
||||||
|
} else {
|
||||||
startWindow(process.argv.includes("--no-scripts"));
|
startWindow(process.argv.includes("--no-scripts"));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
@ -62,7 +62,38 @@ function showErrorBox(title, error) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function exportSaveFromIndexedDb() {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const dbRequest = indexedDB.open("bitburnerSave");
|
||||||
|
dbRequest.onsuccess = () => {
|
||||||
|
const db = dbRequest.result;
|
||||||
|
const transaction = db.transaction(['savestring'], "readonly");
|
||||||
|
const store = transaction.objectStore('savestring');
|
||||||
|
const request = store.get('save');
|
||||||
|
request.onsuccess = () => {
|
||||||
|
const file = new Blob([request.result], {type: 'text/plain'});
|
||||||
|
const a = document.createElement("a");
|
||||||
|
const url = URL.createObjectURL(file);
|
||||||
|
a.href = url;
|
||||||
|
a.download = 'save.json';
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
setTimeout(function () {
|
||||||
|
document.body.removeChild(a);
|
||||||
|
window.URL.revokeObjectURL(url);
|
||||||
|
resolve();
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async function exportSave(window) {
|
||||||
|
await window.webContents
|
||||||
|
.executeJavaScript(`${exportSaveFromIndexedDb.toString()}; exportSaveFromIndexedDb();`, true);
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
reloadAndKill, showErrorBox,
|
reloadAndKill, showErrorBox, exportSave,
|
||||||
attachUnresponsiveAppHandler, detachUnresponsiveAppHandler,
|
attachUnresponsiveAppHandler, detachUnresponsiveAppHandler,
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user