Implement basic version of characters #32
31
app/storage/loader/CharacterLoader.js
Normal file
31
app/storage/loader/CharacterLoader.js
Normal 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
|
34
app/storage/loader/CharacterLoader.ts
Normal file
34
app/storage/loader/CharacterLoader.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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>) {
|
||||||
|
16
src/app/project/parser/characterParser/CharacterParser.ts
Normal file
16
src/app/project/parser/characterParser/CharacterParser.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user