"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GamesystemLoader = void 0; const StoreComponent_1 = require("../StoreComponent"); const FileUtils_1 = require("../FileUtils"); const fs = require("fs"); const path = require("node:path"); const ModelComponentType_1 = require("../../../src/app/project/game-model/ModelComponentType"); class GamesystemLoader { constructor(gamesystemDir) { this.gamesystemDir = gamesystemDir; } loadGamesystems() { return this.loadGamesystemsRecursivly(this.gamesystemDir); } loadGamesystemsRecursivly(currentGamesystemDir) { let loadedGamesystems = []; const gamesystemFiles = FileUtils_1.FileUtils.listFilesInDirectory(currentGamesystemDir); gamesystemFiles.forEach(gamesystemFile => { if (fs.lstatSync(gamesystemFile).isDirectory()) { const childGamesystems = this.loadGamesystemsRecursivly(gamesystemFile); loadedGamesystems = loadedGamesystems.concat(childGamesystems); } else if (path.basename(gamesystemFile).endsWith(".json")) { const loadedGamesystem = this.loadGamesystem(gamesystemFile); if (loadedGamesystem != undefined) { loadedGamesystems.push(loadedGamesystem); } } }); return loadedGamesystems; } loadGamesystem(gamesystemFile) { if (gamesystemFile.endsWith(".json")) { const gamesystemData = fs.readFileSync(gamesystemFile, 'utf-8'); return new StoreComponent_1.StoreComponent(gamesystemData, gamesystemFile, ModelComponentType_1.ModelComponentType.GAMESYTEM); } } } exports.GamesystemLoader = GamesystemLoader; //# sourceMappingURL=GamesystemLoader.js.map