diff --git a/app/storage/loader/CharacterLoader.js b/app/storage/loader/CharacterLoader.js new file mode 100644 index 0000000..8b5255f --- /dev/null +++ b/app/storage/loader/CharacterLoader.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CharacterLoader = void 0; +const StoreComponent_1 = require("../StoreComponent"); +const FileUtils_1 = require("../FileUtils"); +const ModelComponentType_1 = require("../../../src/app/project/game-model/ModelComponentType"); +const fs = require("fs"); +class CharacterLoader { + constructor(characterDir) { + this.characterDir = characterDir; + } + loadCharacters() { + const characterFiles = FileUtils_1.FileUtils.listFilesInDirectory(this.characterDir); + const loadedCharacters = []; + characterFiles.forEach(characterFile => { + const loadedCharacter = this.loadSingleCharacter(characterFile); + if (loadedCharacter != undefined) { + loadedCharacters.push(loadedCharacter); + } + }); + return loadedCharacters; + } + loadSingleCharacter(characterFile) { + if (characterFile.endsWith(".json")) { + const characterData = fs.readFileSync(characterFile, 'utf-8'); + return new StoreComponent_1.StoreComponent(characterData, characterFile, ModelComponentType_1.ModelComponentType.SCRIPTACCOUNT); + } + } +} +exports.CharacterLoader = CharacterLoader; +//# sourceMappingURL=CharacterLoader.js.map \ No newline at end of file diff --git a/app/storage/loader/CharacterLoader.ts b/app/storage/loader/CharacterLoader.ts new file mode 100644 index 0000000..ace21f5 --- /dev/null +++ b/app/storage/loader/CharacterLoader.ts @@ -0,0 +1,34 @@ +import {StoreComponent} from "../StoreComponent"; +import {FileUtils} from "../FileUtils"; +import {ModelComponentType} from "../../../src/app/project/game-model/ModelComponentType"; +import * as fs from "fs"; +import {ModelComponentFileDirectory} from "../ModelComponentFileDirectory"; +import {load} from "@angular-devkit/build-angular/src/utils/server-rendering/esm-in-memory-loader/loader-hooks"; + +export class CharacterLoader { + characterDir: string + + + constructor(characterDir: string) { + this.characterDir = characterDir; + } + + loadCharacters(): StoreComponent[] { + const characterFiles = FileUtils.listFilesInDirectory(this.characterDir); + const loadedCharacters: StoreComponent[] = [] + characterFiles.forEach(characterFile => { + const loadedCharacter = this.loadSingleCharacter(characterFile); + if(loadedCharacter != undefined) { + loadedCharacters.push(loadedCharacter) + } + }) + return loadedCharacters; + } + + private loadSingleCharacter(characterFile: string) { + if(characterFile.endsWith(".json")) { + const characterData = fs.readFileSync(characterFile, 'utf-8'); + return new StoreComponent(characterData, characterFile, ModelComponentType.SCRIPTACCOUNT); + } + } +} diff --git a/app/storage/loader/GameModelLoader.js b/app/storage/loader/GameModelLoader.js index 47e6436..480dc36 100644 --- a/app/storage/loader/GameModelLoader.js +++ b/app/storage/loader/GameModelLoader.js @@ -6,6 +6,7 @@ const path = require("node:path"); const ModelComponentFileDirectory_1 = require("../ModelComponentFileDirectory"); const ScriptAccountLoader_1 = require("./ScriptAccountLoader"); const GamesystemLoader_1 = require("./GamesystemLoader"); +const CharacterLoader_1 = require("./CharacterLoader"); class GameModelLoader { constructor(gameModelDir) { this.gameModelDir = gameModelDir; @@ -14,7 +15,8 @@ class GameModelLoader { const gameModelName = path.basename(this.gameModelDir); const storedScriptAccounts = this.loadScriptAccountComponents(); const storedGamesystems = this.loadGamesystems(); - return new StoredGameModel_1.StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, []); + const storedCharacters = this.loadCharacters(); + return new StoredGameModel_1.StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters); } loadScriptAccountComponents() { const scriptAccountDir = path.join(this.gameModelDir, ModelComponentFileDirectory_1.ModelComponentFileDirectory.SCRIPTACCOUNT_DIR_NAME); @@ -26,6 +28,11 @@ class GameModelLoader { const gamesystemLoader = new GamesystemLoader_1.GamesystemLoader(gamesystemDir); return gamesystemLoader.loadGamesystems(); } + loadCharacters() { + const characterDir = path.join(this.gameModelDir, ModelComponentFileDirectory_1.ModelComponentFileDirectory.CHARACTER_DIR_NAME); + const characterLoader = new CharacterLoader_1.CharacterLoader(characterDir); + return characterLoader.loadCharacters(); + } } exports.GameModelLoader = GameModelLoader; //# sourceMappingURL=GameModelLoader.js.map \ No newline at end of file diff --git a/app/storage/loader/GameModelLoader.ts b/app/storage/loader/GameModelLoader.ts index 92060a7..615c354 100644 --- a/app/storage/loader/GameModelLoader.ts +++ b/app/storage/loader/GameModelLoader.ts @@ -5,6 +5,7 @@ import * as fs from "fs"; import {ModelComponentFileDirectory} from "../ModelComponentFileDirectory"; import {ScriptAccountLoader} from "./ScriptAccountLoader"; import {GamesystemLoader} from "./GamesystemLoader"; +import {CharacterLoader} from "./CharacterLoader"; export class GameModelLoader { gameModelDir: string @@ -19,8 +20,9 @@ export class GameModelLoader { const storedScriptAccounts = this.loadScriptAccountComponents(); const storedGamesystems = this.loadGamesystems(); + const storedCharacters = this.loadCharacters() - return new StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, []); + return new StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters); } private loadScriptAccountComponents() { @@ -35,6 +37,12 @@ export class GameModelLoader { return gamesystemLoader.loadGamesystems(); } + private loadCharacters(): StoreComponent[] { + const characterDir = path.join(this.gameModelDir, ModelComponentFileDirectory.CHARACTER_DIR_NAME); + const characterLoader = new CharacterLoader(characterDir) + return characterLoader.loadCharacters(); + } + diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 1e2d9aa..41f2835 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -23,6 +23,7 @@ import {GamesystemSerializer} from "./project/serializer/GamesystemSerializer"; import {Character} from "./project/game-model/characters/Character"; import {CharacterOverviewComponent} from "./side-overviews/character-overview/character-overview.component"; import {CharacterSerializer} from "./project/serializer/CharacterSerializer"; +import {CharacterParser} from "./project/parser/characterParser/CharacterParser"; @Component({ selector: 'app-root', @@ -203,11 +204,14 @@ export class AppComponent implements OnInit{ const gamesystemParser = new GamesystemParser(scriptAccounts); const gamesystems = gamesystemParser.parseStoredGamesystems(storedGameModel.storedGamesystems); + const characterParser = new CharacterParser(); + const characters = characterParser.parseCharacters(storedGameModel.storedCharacters); + gameModel.scriptAccounts = scriptAccounts gameModel.gamesystems = gamesystems gameModel.generateProductSystemContents() - console.log(gameModel.scriptAccounts) + gameModel.characters = characters this.gameModel = gameModel; } diff --git a/src/app/project/game-model/GameModel.ts b/src/app/project/game-model/GameModel.ts index 61b8c41..8497737 100644 --- a/src/app/project/game-model/GameModel.ts +++ b/src/app/project/game-model/GameModel.ts @@ -16,8 +16,6 @@ export class GameModel { constructor(gameModelName: string) { this.gameModelName = gameModelName; - this.characters.push(new Character("Astrid Hofferson", "")) - this.characters.push(new Character("Hicks Haddock", "")) } addGamesystem(gamesystem: Gamesystem) { diff --git a/src/app/project/parser/characterParser/CharacterParser.ts b/src/app/project/parser/characterParser/CharacterParser.ts new file mode 100644 index 0000000..07d7378 --- /dev/null +++ b/src/app/project/parser/characterParser/CharacterParser.ts @@ -0,0 +1,16 @@ +import {StoreComponent} from "../../../../../app/storage/StoreComponent"; +import {Character} from "../../game-model/characters/Character"; + + +export class CharacterParser { + + public parseCharacters(characters: StoreComponent[]): Character[] { + const loadedCharacters: Character[] = [] + characters.forEach(character => loadedCharacters.push(this.parseSingleCharacter(JSON.parse(character.jsonString)))) + return loadedCharacters; + } + + private parseSingleCharacter(characterData: any): Character { + return new Character(characterData.componentName, characterData.componentDescription); + } +}