feat: add way to select game dir
This commit is contained in:
+22
-9
@@ -1,19 +1,34 @@
|
||||
import { app } from 'electron'
|
||||
import { join } from 'path'
|
||||
import { mkdirSync } from 'fs'
|
||||
import { readLauncherConfigSync } from './launcher-config'
|
||||
|
||||
/**
|
||||
* Arborescence des données du launcher, rangée sous le userData d'Electron :
|
||||
* Windows : %APPDATA%/OFLauncher
|
||||
* Linux : ~/.config/OFLauncher
|
||||
* Arborescence des données du launcher.
|
||||
*
|
||||
* On garde le runtime (MC/NeoForge/assets/libs/java) séparé de l'instance de
|
||||
* jeu (mods/config/saves) pour que la sync packwiz ne touche jamais au runtime.
|
||||
* La racine est configurable via launcher.json (userData/launcher.json) :
|
||||
* { "dataDir": "/chemin/choisi/par/l/utilisateur" }
|
||||
* Par défaut : userData d'Electron (%APPDATA%/OFLauncher sur Windows,
|
||||
* ~/.config/OFLauncher sur Linux).
|
||||
*
|
||||
* La config launcher.json elle-même reste toujours dans userData
|
||||
* (point d'ancrage fixe, indépendant du dataDir choisi).
|
||||
*/
|
||||
class LauncherPaths {
|
||||
/** Racine : userData d'Electron. */
|
||||
private _root: string | null = null
|
||||
|
||||
/** Racine des données du jeu (configurable). */
|
||||
get root(): string {
|
||||
return app.getPath('userData')
|
||||
if (!this._root) {
|
||||
const { dataDir } = readLauncherConfigSync()
|
||||
this._root = dataDir ?? app.getPath('userData')
|
||||
}
|
||||
return this._root
|
||||
}
|
||||
|
||||
/** Invalide le cache de root (à appeler après écriture d'un nouveau dataDir). */
|
||||
invalidate(): void {
|
||||
this._root = null
|
||||
}
|
||||
|
||||
/** Dossier "Minecraft" géré par @xmcl : versions/, libraries/, assets/. */
|
||||
@@ -53,8 +68,6 @@ class LauncherPaths {
|
||||
|
||||
/** jar packwiz-installer-bootstrap embarqué dans les resources. */
|
||||
get packwizBootstrapJar(): string {
|
||||
// En prod, electron-builder copie resources/ via extraResources.
|
||||
// En dev, on lit directement le dossier resources/ du repo.
|
||||
const base = app.isPackaged
|
||||
? join(process.resourcesPath, 'resources')
|
||||
: join(app.getAppPath(), 'resources')
|
||||
|
||||
Reference in New Issue
Block a user