template-systems #41
@ -14,3 +14,12 @@
 | 
				
			|||||||
    <button mat-stroked-button class="specify-btn" (click)="openTemplateSpecificator()">Specify Templatesystem</button>
 | 
					    <button mat-stroked-button class="specify-btn" (click)="openTemplateSpecificator()">Specify Templatesystem</button>
 | 
				
			||||||
  </mat-card-content>
 | 
					  </mat-card-content>
 | 
				
			||||||
</mat-card>
 | 
					</mat-card>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<mat-card>
 | 
				
			||||||
 | 
					  <mat-card-header>
 | 
				
			||||||
 | 
					    <mat-card-title>Character-Relations</mat-card-title>
 | 
				
			||||||
 | 
					  </mat-card-header>
 | 
				
			||||||
 | 
					  <mat-card-content>
 | 
				
			||||||
 | 
					    <p *ngFor="let characterRelation of character!.characterRelations">{{characterRelation.firstCharacter.componentName}} - {{characterRelation.secondCharacter.componentName}}</p>
 | 
				
			||||||
 | 
					  </mat-card-content>
 | 
				
			||||||
 | 
					</mat-card>
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,7 @@ import {TemplateType} from "./templates/TemplateType";
 | 
				
			|||||||
import {SimpleTemplateGamesystem} from "./templates/simpleGamesystem/SimpleTemplateGamesystem";
 | 
					import {SimpleTemplateGamesystem} from "./templates/simpleGamesystem/SimpleTemplateGamesystem";
 | 
				
			||||||
import {ProductTemplateSystem} from "./templates/productGamesystem/ProductTemplateSystem";
 | 
					import {ProductTemplateSystem} from "./templates/productGamesystem/ProductTemplateSystem";
 | 
				
			||||||
import {ProductTemplateCreator} from "./templates/productGamesystem/ProductTemplateCreator";
 | 
					import {ProductTemplateCreator} from "./templates/productGamesystem/ProductTemplateCreator";
 | 
				
			||||||
 | 
					import {CharacterRelation} from "./characters/CharacterRelation";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class GameModel {
 | 
					export class GameModel {
 | 
				
			||||||
  gameModelName: string
 | 
					  gameModelName: string
 | 
				
			||||||
@ -127,12 +128,21 @@ export class GameModel {
 | 
				
			|||||||
    const searchedCharacter = this.characters.find(character => character.componentName === characterName);
 | 
					    const searchedCharacter = this.characters.find(character => character.componentName === characterName);
 | 
				
			||||||
    if(searchedCharacter == undefined) {
 | 
					    if(searchedCharacter == undefined) {
 | 
				
			||||||
      const character = new Character(characterName, "");
 | 
					      const character = new Character(characterName, "");
 | 
				
			||||||
 | 
					      this.createCharacterRelation(character)
 | 
				
			||||||
      this.characters.push(character)
 | 
					      this.characters.push(character)
 | 
				
			||||||
      return character
 | 
					      return character
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return undefined
 | 
					    return undefined
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private createCharacterRelation(addedCharacter: Character) {
 | 
				
			||||||
 | 
					    this.characters.forEach(character => {
 | 
				
			||||||
 | 
					      const characterRelation = new CharacterRelation(character, addedCharacter);
 | 
				
			||||||
 | 
					      character.addCharacterRelation(characterRelation);
 | 
				
			||||||
 | 
					      addedCharacter.addCharacterRelation(characterRelation);
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  removeScriptAccount(scriptAccount: ScriptAccount) {
 | 
					  removeScriptAccount(scriptAccount: ScriptAccount) {
 | 
				
			||||||
    if(scriptAccount != undefined) {
 | 
					    if(scriptAccount != undefined) {
 | 
				
			||||||
      this.scriptAccounts = this.scriptAccounts.filter(s => s != scriptAccount);
 | 
					      this.scriptAccounts = this.scriptAccounts.filter(s => s != scriptAccount);
 | 
				
			||||||
 | 
				
			|||||||
@ -6,11 +6,14 @@ import {Gamesystem} from "../gamesystems/Gamesystem";
 | 
				
			|||||||
import {SimpleTemplateGamesystem} from "../templates/simpleGamesystem/SimpleTemplateGamesystem";
 | 
					import {SimpleTemplateGamesystem} from "../templates/simpleGamesystem/SimpleTemplateGamesystem";
 | 
				
			||||||
import {ProductTemplateSystem} from "../templates/productGamesystem/ProductTemplateSystem";
 | 
					import {ProductTemplateSystem} from "../templates/productGamesystem/ProductTemplateSystem";
 | 
				
			||||||
import {ProductGamesystem} from "../gamesystems/ProductGamesystem";
 | 
					import {ProductGamesystem} from "../gamesystems/ProductGamesystem";
 | 
				
			||||||
 | 
					import {CharacterRelation} from "./CharacterRelation";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class Character extends ModelComponent implements TemplateElement {
 | 
					export class Character extends ModelComponent implements TemplateElement {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  characterSpecificTemplateSystems: Gamesystem<any, any>[] = []
 | 
					  characterSpecificTemplateSystems: Gamesystem<any, any>[] = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  characterRelations: CharacterRelation[] = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  constructor(componentName: string, componentDescription: string) {
 | 
					  constructor(componentName: string, componentDescription: string) {
 | 
				
			||||||
    super(componentName, componentDescription, ModelComponentType.CHARACTER);
 | 
					    super(componentName, componentDescription, ModelComponentType.CHARACTER);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -36,6 +39,10 @@ export class Character extends ModelComponent implements TemplateElement {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  addCharacterRelation(characterRelation: CharacterRelation) {
 | 
				
			||||||
 | 
					    this.characterRelations.push(characterRelation)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private isTemplateSystemCharacterSpecific(gamesystemName: string) {
 | 
					  private isTemplateSystemCharacterSpecific(gamesystemName: string) {
 | 
				
			||||||
    return this.characterSpecificTemplateSystems.find(gamesystem => gamesystem.componentName === gamesystemName) != undefined
 | 
					    return this.characterSpecificTemplateSystems.find(gamesystem => gamesystem.componentName === gamesystemName) != undefined
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										14
									
								
								src/app/project/game-model/characters/CharacterRelation.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/app/project/game-model/characters/CharacterRelation.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					import {TemplateElement} from "../templates/TemplateElement";
 | 
				
			||||||
 | 
					import {Character} from "./Character";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class CharacterRelation implements TemplateElement{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  firstCharacter: Character
 | 
				
			||||||
 | 
					  secondCharacter: Character
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(firstCharacter: Character, secondCharacter: Character) {
 | 
				
			||||||
 | 
					    this.firstCharacter = firstCharacter;
 | 
				
			||||||
 | 
					    this.secondCharacter = secondCharacter;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -6,6 +6,8 @@ import {ScriptAccountConditionParser} from "../gamesystemParser/ScriptAccountCon
 | 
				
			|||||||
import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount";
 | 
					import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount";
 | 
				
			||||||
import {SimpleTemplateState} from "../../game-model/templates/simpleGamesystem/SimpleTemplateState";
 | 
					import {SimpleTemplateState} from "../../game-model/templates/simpleGamesystem/SimpleTemplateState";
 | 
				
			||||||
import {SimpleTemplateTransition} from "../../game-model/templates/simpleGamesystem/SimpleTemplateTransition";
 | 
					import {SimpleTemplateTransition} from "../../game-model/templates/simpleGamesystem/SimpleTemplateTransition";
 | 
				
			||||||
 | 
					import {CharacterRelation} from "../../game-model/characters/CharacterRelation";
 | 
				
			||||||
 | 
					import {load} from "@angular-devkit/build-angular/src/utils/server-rendering/esm-in-memory-loader/loader-hooks";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class CharacterParser {
 | 
					export class CharacterParser {
 | 
				
			||||||
@ -23,12 +25,19 @@ export class CharacterParser {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  public parseCharacters(characters: StoreComponent[]): Character[] {
 | 
					  public parseCharacters(characters: StoreComponent[]): Character[] {
 | 
				
			||||||
    const loadedCharacters: Character[] = []
 | 
					    const loadedCharacters: Character[] = []
 | 
				
			||||||
    characters.forEach(character => loadedCharacters.push(this.parseSingleCharacter(JSON.parse(character.jsonString))))
 | 
					    characters.forEach(character => loadedCharacters.push(this.parseSingleCharacter(JSON.parse(character.jsonString), loadedCharacters)))
 | 
				
			||||||
    return loadedCharacters;
 | 
					    return loadedCharacters;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private parseSingleCharacter(characterData: any): Character {
 | 
					  private parseSingleCharacter(characterData: any, loadedCharacters: Character[]): Character {
 | 
				
			||||||
    const character = new Character(characterData.componentName, characterData.componentDescription);
 | 
					    const character = new Character(characterData.componentName, characterData.componentDescription);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    loadedCharacters.forEach(loadedCharacter => {
 | 
				
			||||||
 | 
					      const characterRelation = new CharacterRelation(loadedCharacter, character);
 | 
				
			||||||
 | 
					      loadedCharacter.addCharacterRelation(characterRelation)
 | 
				
			||||||
 | 
					      character.addCharacterRelation(characterRelation)
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const templateSpecificGamesystems = this.parseCharacterSpecificGamesystems(character, characterData.characterSpecificTemplateSystems);
 | 
					    const templateSpecificGamesystems = this.parseCharacterSpecificGamesystems(character, characterData.characterSpecificTemplateSystems);
 | 
				
			||||||
    templateSpecificGamesystems.forEach(system => character.addCharacterSpecificSimpleTemplatesystem(system))
 | 
					    templateSpecificGamesystems.forEach(system => character.addCharacterSpecificSimpleTemplatesystem(system))
 | 
				
			||||||
    return character;
 | 
					    return character;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user