From 225d6ab43cd847801af3a93c5b18bb8d90092740 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Sat, 13 Apr 2024 07:35:39 +0200 Subject: [PATCH] Add Hierarchy as Template when one member of hierarchy is added --- src/app/project/game-model/characters/Character.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/app/project/game-model/characters/Character.ts b/src/app/project/game-model/characters/Character.ts index 8cae691..96cf618 100644 --- a/src/app/project/game-model/characters/Character.ts +++ b/src/app/project/game-model/characters/Character.ts @@ -1,9 +1,9 @@ import {ModelComponent} from "../ModelComponent"; import {ModelComponentType} from "../ModelComponentType"; import {SimpleTemplateGamesystem} from "../gamesystems/SimpleTemplateGamesystem"; -import {TemplateGamesystem} from "../gamesystems/TemplateGamesystem"; import {ProductTemplateSystem} from "../gamesystems/ProductTemplateSystem"; import {Gamesystem} from "../gamesystems/Gamesystem"; +import {TemplateType} from "../TemplateType"; export class Character extends ModelComponent{ @@ -16,6 +16,17 @@ export class Character extends ModelComponent{ addCharacterSpecificGamesystem(templateGamesystem: SimpleTemplateGamesystem | ProductTemplateSystem) { if(!this.isGamesystemCharacterSpecific(templateGamesystem.componentName)) { this.characterSpecificGamesystems.push(templateGamesystem); + if(templateGamesystem instanceof ProductTemplateSystem){ + templateGamesystem.innerGamesystems.forEach(innerSystem => { + if(innerSystem instanceof SimpleTemplateGamesystem && innerSystem.templateType == TemplateType.CHARACTER) { + this.addCharacterSpecificGamesystem(innerSystem) + } else if(innerSystem instanceof ProductTemplateSystem && innerSystem.templateType == TemplateType.CHARACTER) { + this.addCharacterSpecificGamesystem(innerSystem) + } + }) + } else if(templateGamesystem.parentGamesystem != undefined && templateGamesystem.parentGamesystem instanceof ProductTemplateSystem) { + this.addCharacterSpecificGamesystem(templateGamesystem.parentGamesystem) + } templateGamesystem.addReferenceKey(this); } }