From 7a650524f350d23021adabdc7df4916daa393e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Thu, 9 May 2024 18:52:27 +0200 Subject: [PATCH] Refactor Creating New Characters --- src/app/app.component.ts | 13 ++++------- src/app/project/game-model/GameModel.ts | 8 +++++++ .../utils/creator/CharacterCreator.ts | 22 +++++++++++++++++++ 3 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 src/app/project/game-model/utils/creator/CharacterCreator.ts diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 650b6a5..790132e 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -34,6 +34,7 @@ import {ItemOverviewComponent} from "./side-overviews/item-overview/item-overvie import {Overview} from "./side-overviews/Overview"; import {ItemCreator} from "./project/game-model/utils/creator/ItemCreator"; import {ScriptAccountCreator} from "./project/game-model/utils/creator/ScriptAccountCreator"; +import {CharacterCreator} from "./project/game-model/utils/creator/CharacterCreator"; @Component({ selector: 'app-root', @@ -104,6 +105,9 @@ export class AppComponent implements OnInit{ case ModelComponentType.SCRIPTACCOUNT: { componentCreator = new ScriptAccountCreator(creationContext, this.gameModel!, this.selectedModelComponent); } break + case ModelComponentType.CHARACTER: { + componentCreator = new CharacterCreator(creationContext, this.gameModel!, this.selectedModelComponent); + } break } if(componentCreator) { @@ -188,15 +192,6 @@ export class AppComponent implements OnInit{ } } - private onCreateNewCharacter() { - const createdCharacter = this.gameModel!.createCharacter("New Character") - if(createdCharacter != undefined) { - this.editor?.openGameModelComponent(createdCharacter); - } else { - console.log("[DEBUG] [App-Component] ScriptAccount could not be created (Name not unique)"); - } - } - private getSelectedModelComponent(): ModelComponent | undefined { if(this.openContent == ModelComponentType.SCRIPTACCOUNT) { if(this.scriptAccountOverview != undefined) { diff --git a/src/app/project/game-model/GameModel.ts b/src/app/project/game-model/GameModel.ts index b10ffd6..2a34fc9 100644 --- a/src/app/project/game-model/GameModel.ts +++ b/src/app/project/game-model/GameModel.ts @@ -232,4 +232,12 @@ export class GameModel { return result; } + + addCharacter(character: Character) { + if(this.characters.find(c => c.componentName === character.componentName) === undefined) { + this.characters.push(character) + return true; + } + return false; + } } diff --git a/src/app/project/game-model/utils/creator/CharacterCreator.ts b/src/app/project/game-model/utils/creator/CharacterCreator.ts new file mode 100644 index 0000000..03d19a6 --- /dev/null +++ b/src/app/project/game-model/utils/creator/CharacterCreator.ts @@ -0,0 +1,22 @@ +import {ModelComponentCreator} from "./ModelComponentCreator"; +import {GameModel} from "../../GameModel"; +import {ModelComponent} from "../../ModelComponent"; +import {Character} from "../../characters/Character"; + +export class CharacterCreator extends ModelComponentCreator{ + + + constructor(context: string, gameModel: GameModel, selectedComponent: ModelComponent | undefined) { + super(context, gameModel, selectedComponent); + } + + createModelComponent(): ModelComponent | undefined { + const character = new Character("New Character", ""); + if(this.gameModel.addCharacter(character)) { + return character; + } + return undefined; + } + + +}