Load Characters from Persistence
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				E2E Testing / test (push) Successful in 1m31s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	E2E Testing / test (push) Successful in 1m31s
				
			This commit is contained in:
		
							parent
							
								
									0884709603
								
							
						
					
					
						commit
						e890d89cc8
					
				
							
								
								
									
										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