import {StoredGameModel} from "../StoredGameModel"; import {StoreComponent} from "../StoreComponent"; import * as path from "node:path"; import * as fs from "fs"; import {ModelComponentFileDirectory} from "../ModelComponentFileDirectory"; import {ScriptAccountLoader} from "./ScriptAccountLoader"; import {GamesystemLoader} from "./GamesystemLoader"; export class GameModelLoader { gameModelDir: string constructor(gameModelDir: string) { this.gameModelDir = gameModelDir; } loadGameModel(): StoredGameModel { const gameModelName = path.basename(this.gameModelDir) const storedScriptAccounts = this.loadScriptAccountComponents(); const storedGamesystems = this.loadGamesystems(); return new StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems); } private loadScriptAccountComponents() { const scriptAccountDir = path.join(this.gameModelDir, ModelComponentFileDirectory.SCRIPTACCOUNT_DIR_NAME); const scriptAccountLoader = new ScriptAccountLoader(scriptAccountDir); return scriptAccountLoader.loadScriptAccounts() } private loadGamesystems(): StoreComponent[] { const gamesystemDir = path.join(this.gameModelDir, ModelComponentFileDirectory.GAMESYSTEM_DIR_NAME); const gamesystemLoader = new GamesystemLoader(gamesystemDir); return gamesystemLoader.loadGamesystems(); } }