Introduce Symetric and Asymetric Template Relation Systems #40
@ -15,6 +15,24 @@
|
|||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
|
|
||||||
|
<mat-card>
|
||||||
|
<mat-card-header>
|
||||||
|
<mat-card-title>Characterrelationspecifc Gamesystems</mat-card-title>
|
||||||
|
</mat-card-header>
|
||||||
|
<mat-card-content>
|
||||||
|
<mat-accordion>
|
||||||
|
<mat-expansion-panel *ngFor="let templateSystem of character!.assymetricCharacterRelationSpecificTemplateSystems">
|
||||||
|
<mat-expansion-panel-header>
|
||||||
|
<mat-panel-title>{{templateSystem.componentName}}</mat-panel-title>
|
||||||
|
</mat-expansion-panel-header>
|
||||||
|
<app-gamesystem-editor [templateElement]="character" [gamesystem]="templateSystem" [scriptAccounts]="gameModel!.scriptAccounts"></app-gamesystem-editor>
|
||||||
|
</mat-expansion-panel>
|
||||||
|
<button mat-stroked-button class="specify-btn" (click)="openCharacterRelationTemplateSpecificator()">Specify Templatesystem</button>
|
||||||
|
</mat-accordion>
|
||||||
|
</mat-card-content>
|
||||||
|
</mat-card>
|
||||||
|
|
||||||
|
|
||||||
<mat-card>
|
<mat-card>
|
||||||
<mat-card-header>
|
<mat-card-header>
|
||||||
<mat-card-title>Character-Relations</mat-card-title>
|
<mat-card-title>Character-Relations</mat-card-title>
|
||||||
|
@ -29,4 +29,12 @@ export class CharacterEditorComponent {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openCharacterRelationTemplateSpecificator() {
|
||||||
|
const dialogRef = this.dialog.open(TemplateSpecificatorComponent, {data: this.gameModel!.getTemplateSystems(TemplateType.CHARACTER_RELATION), minWidth: "400px"});
|
||||||
|
dialogRef.afterClosed().subscribe(res => {
|
||||||
|
if(res != undefined) {
|
||||||
|
this.character!.addAsymetricCharacterRelationGamesystem(res);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,8 @@ export class Character extends ModelComponent implements TemplateElement {
|
|||||||
|
|
||||||
characterRelations: CharacterRelation[] = []
|
characterRelations: CharacterRelation[] = []
|
||||||
|
|
||||||
|
assymetricCharacterRelationSpecificTemplateSystems: Gamesystem<any, any>[] = []
|
||||||
|
|
||||||
constructor(componentName: string, componentDescription: string) {
|
constructor(componentName: string, componentDescription: string) {
|
||||||
super(componentName, componentDescription, ModelComponentType.CHARACTER);
|
super(componentName, componentDescription, ModelComponentType.CHARACTER);
|
||||||
}
|
}
|
||||||
@ -39,6 +41,12 @@ export class Character extends ModelComponent implements TemplateElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addAsymetricCharacterRelationGamesystem(gamesystem: Gamesystem<any, any>, recursiveCall: boolean = false) {
|
||||||
|
if(!this.isTemplateSystemCharacterRelationSpecific(gamesystem.componentName)) {
|
||||||
|
this.assymetricCharacterRelationSpecificTemplateSystems.push(gamesystem)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
addCharacterRelation(characterRelation: CharacterRelation) {
|
addCharacterRelation(characterRelation: CharacterRelation) {
|
||||||
this.characterRelations.push(characterRelation)
|
this.characterRelations.push(characterRelation)
|
||||||
}
|
}
|
||||||
@ -47,4 +55,10 @@ export class Character extends ModelComponent implements TemplateElement {
|
|||||||
return this.characterSpecificTemplateSystems.find(gamesystem => gamesystem.componentName === gamesystemName) != undefined
|
return this.characterSpecificTemplateSystems.find(gamesystem => gamesystem.componentName === gamesystemName) != undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private isTemplateSystemCharacterRelationSpecific(gamesystemName: string) {
|
||||||
|
return this.assymetricCharacterRelationSpecificTemplateSystems.find(gamesystem =>
|
||||||
|
gamesystem.componentName === gamesystemName) != undefined;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
51
testModel/gamesystems/Characterbeziehungssystem.json
Normal file
51
testModel/gamesystems/Characterbeziehungssystem.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"componentName": "Characterbeziehungssystem",
|
||||||
|
"componentDescription": "",
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"initial": false,
|
||||||
|
"conditions": [],
|
||||||
|
"stateLabel": "Feind",
|
||||||
|
"stateDescription": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"initial": true,
|
||||||
|
"conditions": [],
|
||||||
|
"stateLabel": "Freund",
|
||||||
|
"stateDescription": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"initial": false,
|
||||||
|
"conditions": [],
|
||||||
|
"stateLabel": "Fester Freund",
|
||||||
|
"stateDescription": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"transitions": [
|
||||||
|
{
|
||||||
|
"scriptAccountActions": [],
|
||||||
|
"scriptAccountConditions": [],
|
||||||
|
"startingState": "Feind",
|
||||||
|
"endingState": "Freund"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"scriptAccountActions": [],
|
||||||
|
"scriptAccountConditions": [],
|
||||||
|
"startingState": "Freund",
|
||||||
|
"endingState": "Feind"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"scriptAccountActions": [],
|
||||||
|
"scriptAccountConditions": [],
|
||||||
|
"startingState": "Freund",
|
||||||
|
"endingState": "Fester Freund"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"scriptAccountActions": [],
|
||||||
|
"scriptAccountConditions": [],
|
||||||
|
"startingState": "Fester Freund",
|
||||||
|
"endingState": "Feind"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"templateType": 1
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user