import {StorageModel} from "../src/app/game-model/StorageModel"; import * as fs from "fs"; import * as path from "node:path"; import {LoadModel} from "./LoadModel"; import {ModelComponentType} from "../src/app/game-model/ModelComponentType"; import {BrowserWindow} from "electron"; import {LoadedProject} from "./LoadedProject"; export class SaveProject { static saveProject(projectDir: string, storageModels: StorageModel[]) { if(!fs.existsSync(projectDir)) { fs.mkdirSync(projectDir, {recursive: true}); } storageModels.forEach(storageModel => { const modelDir = path.join(projectDir, storageModel.storageDir); if(!fs.existsSync(modelDir)) { fs.mkdirSync(modelDir, {recursive: true}); } const filePath = path.join(modelDir, storageModel.fileName + ".json"); fs.writeFile(filePath, storageModel.jsonString ,'utf-8', (err) => { if (err) { console.error('Error writing JSON to file:', err); } else { console.log('JSON file saved successfully:', filePath); } }) }) } static loadProject(projectDir: string) { const loadedScriptAccounts: LoadModel[] = SaveProject.loadScriptAccounts(projectDir) return new LoadedProject(path.basename(projectDir), loadedScriptAccounts); } static loadScriptAccounts(projectDir: string): LoadModel[] { const scriptAccountDir = path.join(projectDir, "script-accounts"); if (!fs.existsSync(scriptAccountDir)) { return []; } const loadedScriptAccounts: LoadModel[] = []; const scriptAccountFileNames = fs.readdirSync(scriptAccountDir); scriptAccountFileNames.forEach(scriptAccountFileName => { const scriptAccountFile = path.join(scriptAccountDir, scriptAccountFileName) const scriptAccountData: string = fs.readFileSync(scriptAccountFile, 'utf-8'); loadedScriptAccounts.push({ modelType: ModelComponentType.SCRIPTACCOUNT, jsonString: scriptAccountData }); }) return loadedScriptAccounts; } }