Upload via GUI (143 Dateien)
This commit is contained in:
+40
-8
@@ -88,6 +88,8 @@ const DEFAULT_SETTINGS = {
|
||||
bgSkin: '', // '' = aus, 'active' = aktives Konto, sonst Konto-UUID
|
||||
bgSkinOpacity: 55, // Deckkraft des Hintergrund-Skins in %
|
||||
bgSkinPose: 'walking', // Pose des 3D-Renders (falls der Pose-Dienst erreichbar ist)
|
||||
startAnimation: true, // drehendes Logo + Fensteraufbau beim Öffnen des Launchers
|
||||
uiAnimationen: true, // bewegte Oberfläche: lebende Skin-Figur, aufwachsende Fenster, Einblenden, Überblenden
|
||||
bgSkinModel: 'auto', // Armform der Figur: 'auto' (vom Konto), 'classic' (Steve), 'slim' (Alex)
|
||||
bgSkinCycle: false, // bei 2+ angemeldeten Konten automatisch durchwechseln
|
||||
bgSkinCycleSeconds: 30, // Sekunden zwischen zwei Kontowechseln
|
||||
@@ -424,6 +426,35 @@ function createInstance(data) {
|
||||
return writeInstance(inst);
|
||||
}
|
||||
|
||||
/*
|
||||
* Große Instanzordner nicht synchron löschen (das fror den Launcher bei vielen
|
||||
* GB minutenlang ein): sofort in einen versteckten Papierkorb im Instanzordner
|
||||
* verschieben – das ist nur eine Umbenennung – und dort im Hintergrund löschen.
|
||||
* Reste (z. B. nach einem Absturz) räumt raeumePapierkorbAuf() beim Start weg.
|
||||
*/
|
||||
const PAPIERKORB = '.aeromc-papierkorb';
|
||||
function entsorgeOrdner(p) {
|
||||
if (!fs.existsSync(p)) return;
|
||||
const korb = path.join(path.dirname(p), PAPIERKORB);
|
||||
const ziel = path.join(korb, path.basename(p) + '-' + Date.now());
|
||||
try {
|
||||
ensureDir(korb);
|
||||
fs.renameSync(p, ziel);
|
||||
} catch {
|
||||
// Umbenennen klappt nicht (z. B. Datei gerade geöffnet): instance.json sofort
|
||||
// weg, damit die Instanz aus der Liste verschwindet – den Rest im Hintergrund
|
||||
try { fs.rmSync(path.join(p, 'instance.json'), { force: true }); } catch { /* egal */ }
|
||||
fs.promises.rm(p, { recursive: true, force: true }).catch(() => { /* bleibt liegen, stört nicht */ });
|
||||
return;
|
||||
}
|
||||
fs.promises.rm(ziel, { recursive: true, force: true }).catch(() => { /* beim nächsten Start erneut */ });
|
||||
}
|
||||
|
||||
function raeumePapierkorbAuf() {
|
||||
const korb = path.join(getInstancesDir(), PAPIERKORB);
|
||||
if (fs.existsSync(korb)) fs.promises.rm(korb, { recursive: true, force: true }).catch(() => {});
|
||||
}
|
||||
|
||||
function createOrReplaceImportedInstance(data) {
|
||||
const existing = findInstanceByName(data && data.name);
|
||||
if (!existing) return createInstance(data);
|
||||
@@ -435,8 +466,7 @@ function createOrReplaceImportedInstance(data) {
|
||||
inst.totalPlaySeconds = existing.totalPlaySeconds || 0;
|
||||
inst.launchCount = existing.launchCount || 0;
|
||||
|
||||
const p = instancePath(existing.id);
|
||||
if (fs.existsSync(p)) fs.rmSync(p, { recursive: true, force: true });
|
||||
entsorgeOrdner(instancePath(existing.id));
|
||||
return writeInstance(inst);
|
||||
}
|
||||
|
||||
@@ -452,12 +482,11 @@ function updateInstance(id, patch) {
|
||||
}
|
||||
|
||||
function deleteInstance(id) {
|
||||
const p = instancePath(id);
|
||||
if (fs.existsSync(p)) fs.rmSync(p, { recursive: true, force: true });
|
||||
entsorgeOrdner(instancePath(id));
|
||||
return true;
|
||||
}
|
||||
|
||||
function duplicateInstance(id) {
|
||||
function duplicateInstance(id, ohneSpieldaten) {
|
||||
const src = getInstance(id);
|
||||
if (!src) throw new Error('Instanz nicht gefunden: ' + id);
|
||||
const copy = JSON.parse(JSON.stringify(src));
|
||||
@@ -469,9 +498,11 @@ function duplicateInstance(id) {
|
||||
copy.launchCount = 0;
|
||||
ensureDir(gameDir(copy.id));
|
||||
// Spielinhalte mitkopieren (Mods/Configs) – ohne Fehler wenn leer
|
||||
try {
|
||||
fs.cpSync(gameDir(id), gameDir(copy.id), { recursive: true });
|
||||
} catch { /* Quelle evtl. leer */ }
|
||||
if (!ohneSpieldaten) {
|
||||
try {
|
||||
fs.cpSync(gameDir(id), gameDir(copy.id), { recursive: true });
|
||||
} catch { /* Quelle evtl. leer */ }
|
||||
}
|
||||
writeJson(instanceFile(copy.id), copy);
|
||||
return copy;
|
||||
}
|
||||
@@ -500,5 +531,6 @@ module.exports = {
|
||||
createOrReplaceImportedInstance,
|
||||
updateInstance,
|
||||
deleteInstance,
|
||||
raeumePapierkorbAuf,
|
||||
duplicateInstance,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user