Implement basic version of characters #32

Merged
sebastian merged 8 commits from characters-2 into main 2024-04-13 11:59:09 +02:00
7 changed files with 103 additions and 5 deletions
Showing only changes of commit e890d89cc8 - Show all commits

View File

@ -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

View File

@ -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);
}
}
}

View File

@ -6,6 +6,7 @@ const path = require("node:path");
const ModelComponentFileDirectory_1 = require("../ModelComponentFileDirectory"); const ModelComponentFileDirectory_1 = require("../ModelComponentFileDirectory");
const ScriptAccountLoader_1 = require("./ScriptAccountLoader"); const ScriptAccountLoader_1 = require("./ScriptAccountLoader");
const GamesystemLoader_1 = require("./GamesystemLoader"); const GamesystemLoader_1 = require("./GamesystemLoader");
const CharacterLoader_1 = require("./CharacterLoader");
class GameModelLoader { class GameModelLoader {
constructor(gameModelDir) { constructor(gameModelDir) {
this.gameModelDir = gameModelDir; this.gameModelDir = gameModelDir;
@ -14,7 +15,8 @@ class GameModelLoader {
const gameModelName = path.basename(this.gameModelDir); const gameModelName = path.basename(this.gameModelDir);
const storedScriptAccounts = this.loadScriptAccountComponents(); const storedScriptAccounts = this.loadScriptAccountComponents();
const storedGamesystems = this.loadGamesystems(); 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() { loadScriptAccountComponents() {
const scriptAccountDir = path.join(this.gameModelDir, ModelComponentFileDirectory_1.ModelComponentFileDirectory.SCRIPTACCOUNT_DIR_NAME); 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); const gamesystemLoader = new GamesystemLoader_1.GamesystemLoader(gamesystemDir);
return gamesystemLoader.loadGamesystems(); 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; exports.GameModelLoader = GameModelLoader;
//# sourceMappingURL=GameModelLoader.js.map //# sourceMappingURL=GameModelLoader.js.map

View File

@ -5,6 +5,7 @@ import * as fs from "fs";
import {ModelComponentFileDirectory} from "../ModelComponentFileDirectory"; import {ModelComponentFileDirectory} from "../ModelComponentFileDirectory";
import {ScriptAccountLoader} from "./ScriptAccountLoader"; import {ScriptAccountLoader} from "./ScriptAccountLoader";
import {GamesystemLoader} from "./GamesystemLoader"; import {GamesystemLoader} from "./GamesystemLoader";
import {CharacterLoader} from "./CharacterLoader";
export class GameModelLoader { export class GameModelLoader {
gameModelDir: string gameModelDir: string
@ -19,8 +20,9 @@ export class GameModelLoader {
const storedScriptAccounts = this.loadScriptAccountComponents(); const storedScriptAccounts = this.loadScriptAccountComponents();
const storedGamesystems = this.loadGamesystems(); const storedGamesystems = this.loadGamesystems();
const storedCharacters = this.loadCharacters()
return new StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, []); return new StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters);
} }
private loadScriptAccountComponents() { private loadScriptAccountComponents() {
@ -35,6 +37,12 @@ export class GameModelLoader {
return gamesystemLoader.loadGamesystems(); return gamesystemLoader.loadGamesystems();
} }
private loadCharacters(): StoreComponent[] {
const characterDir = path.join(this.gameModelDir, ModelComponentFileDirectory.CHARACTER_DIR_NAME);
const characterLoader = new CharacterLoader(characterDir)
return characterLoader.loadCharacters();
}

View File

@ -23,6 +23,7 @@ import {GamesystemSerializer} from "./project/serializer/GamesystemSerializer";
import {Character} from "./project/game-model/characters/Character"; import {Character} from "./project/game-model/characters/Character";
import {CharacterOverviewComponent} from "./side-overviews/character-overview/character-overview.component"; import {CharacterOverviewComponent} from "./side-overviews/character-overview/character-overview.component";
import {CharacterSerializer} from "./project/serializer/CharacterSerializer"; import {CharacterSerializer} from "./project/serializer/CharacterSerializer";
import {CharacterParser} from "./project/parser/characterParser/CharacterParser";
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
@ -203,11 +204,14 @@ export class AppComponent implements OnInit{
const gamesystemParser = new GamesystemParser(scriptAccounts); const gamesystemParser = new GamesystemParser(scriptAccounts);
const gamesystems = gamesystemParser.parseStoredGamesystems(storedGameModel.storedGamesystems); const gamesystems = gamesystemParser.parseStoredGamesystems(storedGameModel.storedGamesystems);
const characterParser = new CharacterParser();
const characters = characterParser.parseCharacters(storedGameModel.storedCharacters);
gameModel.scriptAccounts = scriptAccounts gameModel.scriptAccounts = scriptAccounts
gameModel.gamesystems = gamesystems gameModel.gamesystems = gamesystems
gameModel.generateProductSystemContents() gameModel.generateProductSystemContents()
console.log(gameModel.scriptAccounts) gameModel.characters = characters
this.gameModel = gameModel; this.gameModel = gameModel;
} }

View File

@ -16,8 +16,6 @@ export class GameModel {
constructor(gameModelName: string) { constructor(gameModelName: string) {
this.gameModelName = gameModelName; this.gameModelName = gameModelName;
this.characters.push(new Character("Astrid Hofferson", ""))
this.characters.push(new Character("Hicks Haddock", ""))
} }
addGamesystem(gamesystem: Gamesystem<any, any>) { addGamesystem(gamesystem: Gamesystem<any, any>) {

View File

@ -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);
}
}