aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2022-01-02 00:22:28 +0100
committer0neGal <mail@0negal.com>2022-01-02 00:22:28 +0100
commit80eeab10e81a32c00c24608be83e7ea75ff9accf (patch)
treec12fe0163c16dead879e51f564f870fe8a7b980e /src
parent67b32b527aec8d36a4b6cca14677febc46f0e26d (diff)
parent1598d8b3510580cd886c884b80a69c7b2bcfa422 (diff)
downloadViper-80eeab10e81a32c00c24608be83e7ea75ff9accf.tar.gz
Viper-80eeab10e81a32c00c24608be83e7ea75ff9accf.zip
Merge branch 'main' of 0neGal/viper into mod-support
Diffstat (limited to 'src')
-rw-r--r--src/app/main.js7
-rw-r--r--src/cli.js2
-rw-r--r--src/index.js17
-rw-r--r--src/lang/en.json2
-rw-r--r--src/lang/fr.json2
-rw-r--r--src/utils.js17
6 files changed, 46 insertions, 1 deletions
diff --git a/src/app/main.js b/src/app/main.js
index b0f0ebf..ab80ba9 100644
--- a/src/app/main.js
+++ b/src/app/main.js
@@ -6,6 +6,7 @@ const lang = require("../lang");
var settings = {
gamepath: "",
+ autoupdate: true,
zip: "/northstar.zip",
lang: navigator.language,
excludes: [
@@ -66,6 +67,12 @@ ipcRenderer.on("version", (event, versions) => {
nsversion.innerText = lang("gui.versions.northstar") + ": " + versions.ns;
}); ipcRenderer.send("getversion");
+ipcRenderer.on("updateavailable", () => {
+ if (confirm(lang("gui.update.available"))) {
+ ipcRenderer.send("updatenow");
+ }
+})
+
setlang();
setInterval(() => {
ipcRenderer.send("setsize", document.querySelector(".lines").offsetHeight + 20);
diff --git a/src/cli.js b/src/cli.js
index f4cce18..55cee0e 100644
--- a/src/cli.js
+++ b/src/cli.js
@@ -15,6 +15,7 @@ function hasArgs() {
cli.hasSwitch("launch") ||
cli.hasSwitch("setpath") ||
cli.hasSwitch("version") ||
+ cli.hasSwitch("updatevp") ||
cli.hasSwitch("gamepath")) {
return true;
} else {return false}
@@ -33,6 +34,7 @@ async function init() {
--cli ${lang("cli.help.cli")}
--update ${lang("cli.help.update")}
+ --updatevp ${lang("cli.help.updatevp")}
--setpath ${lang("cli.help.setpath")}`)
// In the future --setpath should be able to understand
// relative paths, instead of just absolute ones.
diff --git a/src/index.js b/src/index.js
index 2a5ed2b..511aadb 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,5 +1,6 @@
const fs = require("fs");
const path = require("path");
+const { autoUpdater } = require("electron-updater");
const { app, dialog, ipcMain, BrowserWindow, ipcRenderer } = require("electron");
const Emitter = require("events");
@@ -46,6 +47,16 @@ function start() {
win.webContents.once("dom-ready", () => {
win.webContents.send("mods", utils.mods.list());
});
+
+ if (utils.settings.autoupdate) {utils.updatevp(false)}
+
+ autoUpdater.on("update-downloaded", () => {
+ win.webContents.send("updateavailable")
+ });
+
+ ipcMain.on("updatenow", () => {
+ autoUpdater.quitAndInstall();
+ })
}
ipcMain.on("launch", (event) => {utils.launch()})
@@ -87,7 +98,11 @@ ipcMain.on("getmods", (event) => {
process.chdir(app.getPath("appData"));
if (cli.hasArgs()) {
- cli.init();
+ if (cli.hasParam("updatevp")) {
+ utils.updatevp(true);
+ } else {
+ cli.init();
+ }
} else {
app.on("ready", () => {
app.setPath("userData", path.join(app.getPath("cache"), app.name));
diff --git a/src/lang/en.json b/src/lang/en.json
index 23cb8fb..4221edb 100644
--- a/src/lang/en.json
+++ b/src/lang/en.json
@@ -5,6 +5,7 @@
"cli.help.cli": "forces the CLI to enable",
"cli.help.update": "updates Northstar from your set game path",
"cli.help.setpath": "sets your game path",
+ "cli.help.updatevp": "updates Viper itself, if supported.",
"cli.setpath.noarg": "No argument provided for --setpath",
@@ -36,6 +37,7 @@
"gui.update.extracting": "Extracting update...",
"gui.update.finished": "Done! Ready to play!",
"gui.update.uptodate": "Already up to date!",
+ "gui.update.available": "A new update for Viper is available, do you want to restart and apply it?",
"gui.launch": "Launch",
"gui.launchvanilla": "Vanilla",
diff --git a/src/lang/fr.json b/src/lang/fr.json
index 26648c4..fe4d63c 100644
--- a/src/lang/fr.json
+++ b/src/lang/fr.json
@@ -5,6 +5,7 @@
"cli.help.cli": "force l'activation de la CLI",
"cli.help.update": "met à jour Northstar sur le chemin du jeu précisé",
"cli.help.setpath": "enregistre le chemin du client de jeu",
+ "cli.help.updatevp": "met à jour le client Viper, si le format actuel le permet.",
"cli.setpath.noarg": "Aucun argument donné à --setpath",
@@ -28,6 +29,7 @@
"gui.update.extracting": "Extraction des fichiers...",
"gui.update.finished": "Terminé, vous pouvez jouer !",
"gui.update.uptodate": "Déjà à jour !",
+ "gui.update.available": "Une mise à jour pour Viper est disponible, voulez-vous l'installer maintenant ?",
"gui.launch": "Jouer",
"gui.launchvanilla": "Vanilla",
diff --git a/src/utils.js b/src/utils.js
index ba710dc..c89a033 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -18,6 +18,7 @@ process.chdir(app.getPath("appData"));
var settings = {
gamepath: "",
lang: "en-US",
+ autoupdate: true,
zip: "/northstar.zip",
excludes: [
"ns_startup_args.txt",
@@ -125,6 +126,21 @@ function update() {
})
}
+function updatevp(autoinstall) {
+ const { autoUpdater } = require("electron-updater");
+
+ if (autoinstall) {
+ autoUpdater.on("update-downloaded", (info) => {
+ autoUpdater.quitAndInstall();
+ });
+ }
+
+ autoUpdater.on("error", (info) => {cli.exit(1)});
+ autoUpdater.on("update-not-available", (info) => {cli.exit()});
+
+ autoUpdater.checkForUpdatesAndNotify();
+}
+
function launch(version) {
if (process.platform == "linux") {
console.error("error:", lang("cli.launch.linuxerror"))
@@ -173,6 +189,7 @@ module.exports = {
launch,
update,
setpath,
+ updatevp,
settings,
getNSVersion,
setlang: (lang) => {