From ef489b19efd9609eb70c07142d4c42b023ff7b85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Fri, 22 Mar 2024 17:30:05 +0100 Subject: [PATCH] Pass Template Editing on to Character --- .../character-editor/character-editor.component.html | 5 ++++- .../character-editor/character-editor.component.ts | 8 ++++++++ .../template-gamesystem-editor.component.html | 4 +++- .../template-gamesystem-editor.component.ts | 12 +++++++++++- .../template-state-editor.component.ts | 12 +++++++++++- src/app/project/game-model/characters/Character.ts | 11 +++++++++++ 6 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/app/editor/character-editor/character-editor.component.html b/src/app/editor/character-editor/character-editor.component.html index c9e990a..f1246c4 100644 --- a/src/app/editor/character-editor/character-editor.component.html +++ b/src/app/editor/character-editor/character-editor.component.html @@ -3,6 +3,9 @@ {{templateGamesystem.referenceGamesystem.componentName}} - + + diff --git a/src/app/editor/character-editor/character-editor.component.ts b/src/app/editor/character-editor/character-editor.component.ts index 4d5e3a0..40007cf 100644 --- a/src/app/editor/character-editor/character-editor.component.ts +++ b/src/app/editor/character-editor/character-editor.component.ts @@ -30,4 +30,12 @@ export class CharacterEditorComponent implements OnInit{ }) } + onRemoveLastTemplateState(templateGamesystem: TemplateGamesystem) { + this.character!.removeCharacterSpecificGamesystem(templateGamesystem) + } + + onAddFirstTemplateState(templateGamesystem: TemplateGamesystem) { + this.character!.addCharacterSpecificGamesystem(templateGamesystem) + } + } diff --git a/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.html b/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.html index d201e9c..052645f 100644 --- a/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.html +++ b/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.html @@ -1 +1,3 @@ - + diff --git a/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.ts b/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.ts index e04554d..7795b23 100644 --- a/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.ts +++ b/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-gamesystem-editor.component.ts @@ -1,4 +1,4 @@ -import {Component, Input} from '@angular/core'; +import {Component, EventEmitter, Input, Output} from '@angular/core'; import {SimpleGamesystem} from "../../../project/game-model/gamesystems/SimpleGamesystem"; import {ScriptAccount} from "../../../project/game-model/scriptAccounts/ScriptAccount"; import {Gamesystem} from "../../../project/game-model/gamesystems/Gamesystem"; @@ -14,4 +14,14 @@ export class TemplateGamesystemEditorComponent { @Input() gamesystem: TemplateGamesystem | undefined @Input() scriptAccunts: ScriptAccount[] = [] + @Output('onAddFirstTemplateState') addFirstTemplateStateEmitter: EventEmitter = new EventEmitter(); + @Output('onRemoveLastTemplateState') removeLastTemplateStateEmitter: EventEmitter = new EventEmitter(); + + onAddFirstTemplateState() { + this.addFirstTemplateStateEmitter.emit(this.gamesystem!) + } + + onRemoveLastTemplateState() { + this.removeLastTemplateStateEmitter.emit(this.gamesystem!) + } } diff --git a/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-state-editor/template-state-editor.component.ts b/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-state-editor/template-state-editor.component.ts index e0cb89c..bb3314a 100644 --- a/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-state-editor/template-state-editor.component.ts +++ b/src/app/editor/gamesystem-editor/template-gamesystem-editor/template-state-editor/template-state-editor.component.ts @@ -1,4 +1,4 @@ -import {Component, Input, ViewChild} from '@angular/core'; +import {Component, EventEmitter, Input, Output, ViewChild} from '@angular/core'; import {SimpleState} from "../../../../project/game-model/gamesystems/states/SimpleState"; import {TemplateGamesystem} from "../../../../project/game-model/gamesystems/TemplateGamesystem"; import {SimpleStateEditorComponent} from "../../state-editor/simple-state-editor/simple-state-editor.component"; @@ -23,6 +23,8 @@ export class TemplateStateEditorComponent { @Input() templateGamesystem: TemplateGamesystem | undefined @Input() scriptAccounts: ScriptAccount[] = [] + @Output() onAddFirstTemplateState: EventEmitter = new EventEmitter() + @Output() onRemoveLastTemplateState: EventEmitter = new EventEmitter() dataSource = new MatTableDataSource(); displayedColumns = ["name", "initial", "edit", "delete"]; @@ -33,6 +35,10 @@ export class TemplateStateEditorComponent { editedStateLabelError: boolean = false; onExtractReferenceState(state: SimpleState) { + if(this.templateGamesystem!.templateStates.length == 0) { + this.onAddFirstTemplateState.emit(state) + } + this.templateGamesystem!.addReferenceState(state) this.dataSource.data = this.templateGamesystem!.templateStates } @@ -53,6 +59,10 @@ export class TemplateStateEditorComponent { onDeleteState(state: SimpleState) { this.templateGamesystem!.templateStates = this.templateGamesystem!.templateStates.filter(templateState => templateState.stateLabel !== state.stateLabel) this.dataSource.data = this.templateGamesystem!.templateStates + + if(this.templateGamesystem!.templateStates.length == 0) { + this.onRemoveLastTemplateState.emit(state) + } } onCreateCondition(state: SimpleState, condition: ScriptAccountCondition) { diff --git a/src/app/project/game-model/characters/Character.ts b/src/app/project/game-model/characters/Character.ts index 07acf19..8e6b864 100644 --- a/src/app/project/game-model/characters/Character.ts +++ b/src/app/project/game-model/characters/Character.ts @@ -1,9 +1,20 @@ import {ModelComponent} from "../ModelComponent"; import {ModelComponentType} from "../ModelComponentType"; +import {TemplateGamesystem} from "../gamesystems/TemplateGamesystem"; export class Character extends ModelComponent{ + characterSpecificGamesystems: TemplateGamesystem[] = [] + constructor(componentName: string, componentDescription: string) { super(componentName, componentDescription, ModelComponentType.CHARACTER); } + + addCharacterSpecificGamesystem(gamesystem: TemplateGamesystem) { + this.characterSpecificGamesystems.push(gamesystem) + } + + removeCharacterSpecificGamesystem(gamesystem: TemplateGamesystem) { + this.characterSpecificGamesystems = this.characterSpecificGamesystems.filter(templateSystem => templateSystem.referenceGamesystem.componentName !== gamesystem.referenceGamesystem.componentName) + } }