add auto path detection

This commit is contained in:
2026-01-16 14:49:01 +01:00
parent 57f9bfb8cb
commit 3e1b938e9a
5 changed files with 38 additions and 6 deletions

14
main.js
View File

@@ -1,6 +1,7 @@
const { app, BrowserWindow , ipcMain} = require('electron/main');
const path = require('node:path');
const Store = require('electron-store').default;
const fs = require('fs/promises');
const store = new Store();
@@ -39,3 +40,16 @@ ipcMain.handle('save-path', (event, path) => {
ipcMain.handle('load-path', () => {
return store.get('silksong-path');
});
async function fileExists(filePath) {
try {
await fs.access(filePath);
return true;
} catch {
return false;
}
}
ipcMain.handle('file-exists', async (_, filePath) => {
return await fileExists(filePath);
});

View File

@@ -12,3 +12,7 @@ contextBridge.exposeInMainWorld('save', {
loadSilksongPath: () =>
ipcRenderer.invoke('load-path')
})
contextBridge.exposeInMainWorld('files', {
fileExists: (path) => ipcRenderer.invoke('file-exists', path)
});

View File

@@ -83,7 +83,7 @@
<template id="settings-template">
<h2>General settings</h2>
<label for="silksong-path-label">Enter Silksong path: </label>
<input type="text" id="silksong-path-input" name="silksong-path-input">
<input type="text" id="silksong-path-input" name="silksong-path-input"> <button class="default-button">Auto Dectect</button>
</template>
<script src="renderer.js"></script>

View File

@@ -9,6 +9,7 @@ const settingsTemplate = document.getElementById("settings-template");
const versionText = HomeTemplate.content.getElementById("version-text")
navigate("home")
autoDetectGamePath()
async function navigate(page) {
view.replaceChildren()
@@ -37,13 +38,11 @@ async function navigate(page) {
const settingsTemplateCopy = settingsTemplate.content.cloneNode(true)
const silksongPathInput = settingsTemplateCopy.getElementById("silksong-path-input")
silksongPathInput.value = await window.save.loadSilksongPath()
silksongPathInput.value = await save.loadSilksongPath()
silksongPathInput.addEventListener('input', async function(event) {
let silksongPath = silksongPathInput.value
console.log(silksongPath)
await window.save.saveSilksongPath(silksongPath)
console.log(await window.save.loadSilksongPath())
await save.saveSilksongPath(silksongPath)
});
view.appendChild(settingsTemplateCopy)
@@ -53,3 +52,10 @@ async function navigate(page) {
function launch(mode) {
alert(`Launching the game in ${mode} mode.`);
}
async function autoDetectGamePath() {
const defaultSilksongPath = "C:/Program Files (x86)/Steam/steamapps/common/Hollow Knight Silksong/Hollow Knight Silksong.exe"
if (files.fileExists(defaultSilksongPath)) {
await save.saveSilksongPath(defaultSilksongPath)
}
}

View File

@@ -134,3 +134,11 @@ body {
input[type="range"] {
width: 100%;
}
.default-button {
}
.default-button:hover {
}