aboutsummaryrefslogtreecommitdiff
path: root/src/modules/gamepath.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/gamepath.js')
-rw-r--r--src/modules/gamepath.js31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/modules/gamepath.js b/src/modules/gamepath.js
index 93290ec..af98f79 100644
--- a/src/modules/gamepath.js
+++ b/src/modules/gamepath.js
@@ -9,32 +9,38 @@ const settings = require("./settings");
let gamepath = {};
-// Returns true/false depending on if the gamepath currently exists/is
+// returns true/false depending on if the gamepath currently exists/is
// mounted, used to avoid issues...
gamepath.exists = () => {
return fs.existsSync(settings.gamepath);
}
-// Requests to set the game path
+// requests to set the game path
//
-// If running with CLI it takes in the --setpath argument otherwise it
+// if running with CLI it takes in the --setpath argument otherwise it
// open the systems file browser for the user to select a path.
-gamepath.set = async (win, forcedialog) => {
+gamepath.set = async (win, force_dialog) => {
+ // actually sets and saves the gamepath in the settings
function set_gamepath(folder) {
+ // set settings
settings.gamepath = folder;
settings.zip = path.join(settings.gamepath + "/northstar.zip");
- settings.save();
+
+ settings.save(); // save settings
+
+ // tell the renderer the path has changed
win.webContents.send("newpath", settings.gamepath);
ipcMain.emit("newpath", null, settings.gamepath);
-
- modpath = path.join(settings.gamepath, "R2Northstar/mods");
}
if (! win) { // CLI
+ // sets the path to the --setpath argument's value
set_gamepath(cli.param("setpath"));
} else { // GUI
- if (! forcedialog) {
- function set_gamepath(folder, forcedialog) {
+ // unless specified, we will first try to automatically find the
+ // gamepath, and then later fallback to the GUI/manual selection
+ if (! force_dialog) {
+ function set_gamepath(folder, force_dialog) {
settings.gamepath = folder;
settings.zip = path.join(settings.gamepath + "/northstar.zip");
settings.save();
@@ -51,12 +57,13 @@ gamepath.set = async (win, forcedialog) => {
win.alert(lang("general.missingpath"));
}
- // Fallback to manual selection
+ // fallback to GUI/manual selection
dialog.showOpenDialog({properties: ["openDirectory"]}).then(res => {
if (res.canceled) {
ipcMain.emit("newpath", null, false);
return;
}
+
if (! fs.existsSync(path.join(res.filePaths[0], "Titanfall2.exe"))) {
ipcMain.emit("wrong-path");
return;
@@ -70,7 +77,9 @@ gamepath.set = async (win, forcedialog) => {
}
}
-// periodically check for the gamepath still existing
+// periodically check for the gamepath still existing, in case the
+// folder is on a disk that gets unmounted, or anything similar, we dont
+// want to assume the gamepath is available forever and ever.
setInterval(() => {
if (gamepath.exists()) {
ipcMain.emit("gui-getmods");