diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 4bfac7a..890bc1f 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -215,11 +215,6 @@ export class AppComponent implements OnInit{ gameModel.gamesystems = gamesystems gameModel.generateProductSystemContents() - const characterTemplateSystems = gameModel.getTemplateSystems(TemplateType.CHARACTER).map(templateSystem => templateSystem as SimpleTemplateGamesystem) - const characterRelationTemplateSystems = gameModel.getTemplateSystems(TemplateType.CHARACTER_RELATION).map(templateSystem => templateSystem as SimpleTemplateGamesystem) - const characterParser = new CharacterParser(characterTemplateSystems, characterRelationTemplateSystems, gameModel.scriptAccounts); - gameModel.characters = characterParser.parseCharacters(storedGameModel.storedCharacters) - const itemgroupParser = new ItemgroupParser(); itemgroupParser.parseItemgroups(storedGameModel.storedItemgroups); gameModel.itemgroups = itemgroupParser.getParsedTopItemgroups(); @@ -227,6 +222,13 @@ export class AppComponent implements OnInit{ const itemParser = new ItemParser(itemgroupParser.getParsedItemgroups()) itemParser.parseItems(storedGameModel.storedItems); + const characterTemplateSystems = gameModel.getTemplateSystems(TemplateType.CHARACTER).map(templateSystem => templateSystem as SimpleTemplateGamesystem) + const characterRelationTemplateSystems = gameModel.getTemplateSystems(TemplateType.CHARACTER_RELATION).map(templateSystem => templateSystem as SimpleTemplateGamesystem) + const characterParser = new CharacterParser(characterTemplateSystems, characterRelationTemplateSystems, gameModel.scriptAccounts, itemgroupParser.getCharacteristics(), itemgroupParser.getParsedItemgroups()); + gameModel.characters = characterParser.parseCharacters(storedGameModel.storedCharacters) + + + this.gameModel = gameModel; } diff --git a/src/app/project/parser/characterParser/CharacterParser.ts b/src/app/project/parser/characterParser/CharacterParser.ts index 6472cb1..f868942 100644 --- a/src/app/project/parser/characterParser/CharacterParser.ts +++ b/src/app/project/parser/characterParser/CharacterParser.ts @@ -7,8 +7,9 @@ import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount"; import {SimpleTemplateState} from "../../game-model/templates/simpleGamesystem/SimpleTemplateState"; 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"; -import {Gamesystem} from "../../game-model/gamesystems/Gamesystem"; +import {InventorySlotParser} from "./InventorySlotParser"; +import {ItemGroupCharacteristic} from "../../game-model/inventory/ItemgroupCharacteristic"; +import {ItemGroup} from "../../game-model/inventory/ItemGroup"; export class CharacterParser { @@ -17,12 +18,14 @@ export class CharacterParser { characterRelationSpecificGamesystems: SimpleTemplateGamesystem[] scriptAccountConditionParser: ScriptAccountConditionParser scriptAccountActionParser: ScriptAccountActionParser + inventorySlotParser: InventorySlotParser - constructor(characterSpecificGamesystems: SimpleTemplateGamesystem[], characterRelationSpecificGamesystems: SimpleTemplateGamesystem[], scriptAccounts: ScriptAccount[]) { + constructor(characterSpecificGamesystems: SimpleTemplateGamesystem[], characterRelationSpecificGamesystems: SimpleTemplateGamesystem[], scriptAccounts: ScriptAccount[], characteristics: ItemGroupCharacteristic[], itemgroups: ItemGroup[]) { this.characterSpecificGamesystems = characterSpecificGamesystems; this.characterRelationSpecificGamesystems = characterRelationSpecificGamesystems; this.scriptAccountActionParser = new ScriptAccountActionParser(scriptAccounts); this.scriptAccountConditionParser = new ScriptAccountConditionParser(scriptAccounts) + this.inventorySlotParser = new InventorySlotParser(characteristics, itemgroups); } @@ -46,6 +49,8 @@ export class CharacterParser { const characterRelationGamesystems = this.parseCharacterSpecificGamesystems(character, characterData.characterRelationGamesystems, this.characterRelationSpecificGamesystems) characterRelationGamesystems.forEach(gamesystem => character.addAsymetricCharacterRelationGamesystem(gamesystem)) + + character.inventorySlots = this.inventorySlotParser.parseInventorySlots(characterData.inventorySlots); return character; } diff --git a/src/app/project/parser/characterParser/InventorySlotParser.ts b/src/app/project/parser/characterParser/InventorySlotParser.ts new file mode 100644 index 0000000..3f637cd --- /dev/null +++ b/src/app/project/parser/characterParser/InventorySlotParser.ts @@ -0,0 +1,64 @@ +import {ItemGroupCharacteristic} from "../../game-model/inventory/ItemgroupCharacteristic"; +import {ItemGroup} from "../../game-model/inventory/ItemGroup"; +import {InventorySlot} from "../../game-model/inventory/intentory-slots/InventorySlot"; +import {InventorySlotSerializer} from "../../serializer/InventorySlotSerializer"; +import {InventoryCharacteristic} from "../../game-model/inventory/intentory-slots/InventoryCharacteristic"; + +export class InventorySlotParser { + private parsedCharacteristics: ItemGroupCharacteristic[] + private parsedItemgroups: ItemGroup[] + + + constructor(parsedCharacteristics: ItemGroupCharacteristic[], parsedItemgroups: ItemGroup[]) { + this.parsedCharacteristics = parsedCharacteristics; + this.parsedItemgroups = parsedItemgroups; + } + + parseInventorySlots(inventorySlotData: any): InventorySlot[] { + const result: InventorySlot[] = [] + for(let i=0; i characteristic.characteristicName === characteristicName); + } + + private findReferencedItemgroup(groupName: string) { + return this.parsedItemgroups.find(group => group.componentName === groupName); + } +} diff --git a/src/app/project/parser/itemParser/ItemgroupParser.ts b/src/app/project/parser/itemParser/ItemgroupParser.ts index fb18e77..3da0cd2 100644 --- a/src/app/project/parser/itemParser/ItemgroupParser.ts +++ b/src/app/project/parser/itemParser/ItemgroupParser.ts @@ -9,6 +9,7 @@ export class ItemgroupParser { private parsedItemgroups: ItemGroup[] = [] private topParsedItemgroups: ItemGroup[] = [] + private parsedCharacteristics: ItemGroupCharacteristic[] = [] parseItemgroups(storeComponents: StoreComponent[]) { const topologicalSort = this.topologicalSort(storeComponents); @@ -81,6 +82,7 @@ export class ItemgroupParser { const characteristic = new ItemGroupCharacteristic(name, description, itemgroup); characteristic.itemgroup.addItemgroupCharacteristic(characteristic); + this.parsedCharacteristics.push(characteristic) return characteristic; } @@ -91,4 +93,8 @@ export class ItemgroupParser { getParsedItemgroups() { return this.parsedItemgroups; } + + getCharacteristics() { + return this.parsedCharacteristics; + } }