inventory-slots #49
@ -215,11 +215,6 @@ export class AppComponent implements OnInit{
 | 
				
			|||||||
    gameModel.gamesystems = gamesystems
 | 
					    gameModel.gamesystems = gamesystems
 | 
				
			||||||
    gameModel.generateProductSystemContents()
 | 
					    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();
 | 
					    const itemgroupParser = new ItemgroupParser();
 | 
				
			||||||
    itemgroupParser.parseItemgroups(storedGameModel.storedItemgroups);
 | 
					    itemgroupParser.parseItemgroups(storedGameModel.storedItemgroups);
 | 
				
			||||||
    gameModel.itemgroups = itemgroupParser.getParsedTopItemgroups();
 | 
					    gameModel.itemgroups = itemgroupParser.getParsedTopItemgroups();
 | 
				
			||||||
@ -227,6 +222,13 @@ export class AppComponent implements OnInit{
 | 
				
			|||||||
    const itemParser = new ItemParser(itemgroupParser.getParsedItemgroups())
 | 
					    const itemParser = new ItemParser(itemgroupParser.getParsedItemgroups())
 | 
				
			||||||
    itemParser.parseItems(storedGameModel.storedItems);
 | 
					    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;
 | 
					    this.gameModel = gameModel;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,8 +7,9 @@ import {ScriptAccount} from "../../game-model/scriptAccounts/ScriptAccount";
 | 
				
			|||||||
import {SimpleTemplateState} from "../../game-model/templates/simpleGamesystem/SimpleTemplateState";
 | 
					import {SimpleTemplateState} from "../../game-model/templates/simpleGamesystem/SimpleTemplateState";
 | 
				
			||||||
import {SimpleTemplateTransition} from "../../game-model/templates/simpleGamesystem/SimpleTemplateTransition";
 | 
					import {SimpleTemplateTransition} from "../../game-model/templates/simpleGamesystem/SimpleTemplateTransition";
 | 
				
			||||||
import {CharacterRelation} from "../../game-model/characters/CharacterRelation";
 | 
					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 {InventorySlotParser} from "./InventorySlotParser";
 | 
				
			||||||
import {Gamesystem} from "../../game-model/gamesystems/Gamesystem";
 | 
					import {ItemGroupCharacteristic} from "../../game-model/inventory/ItemgroupCharacteristic";
 | 
				
			||||||
 | 
					import {ItemGroup} from "../../game-model/inventory/ItemGroup";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class CharacterParser {
 | 
					export class CharacterParser {
 | 
				
			||||||
@ -17,12 +18,14 @@ export class CharacterParser {
 | 
				
			|||||||
  characterRelationSpecificGamesystems: SimpleTemplateGamesystem[]
 | 
					  characterRelationSpecificGamesystems: SimpleTemplateGamesystem[]
 | 
				
			||||||
  scriptAccountConditionParser: ScriptAccountConditionParser
 | 
					  scriptAccountConditionParser: ScriptAccountConditionParser
 | 
				
			||||||
  scriptAccountActionParser: ScriptAccountActionParser
 | 
					  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.characterSpecificGamesystems = characterSpecificGamesystems;
 | 
				
			||||||
    this.characterRelationSpecificGamesystems = characterRelationSpecificGamesystems;
 | 
					    this.characterRelationSpecificGamesystems = characterRelationSpecificGamesystems;
 | 
				
			||||||
    this.scriptAccountActionParser = new ScriptAccountActionParser(scriptAccounts);
 | 
					    this.scriptAccountActionParser = new ScriptAccountActionParser(scriptAccounts);
 | 
				
			||||||
    this.scriptAccountConditionParser = new ScriptAccountConditionParser(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)
 | 
					    const characterRelationGamesystems = this.parseCharacterSpecificGamesystems(character, characterData.characterRelationGamesystems, this.characterRelationSpecificGamesystems)
 | 
				
			||||||
    characterRelationGamesystems.forEach(gamesystem => character.addAsymetricCharacterRelationGamesystem(gamesystem))
 | 
					    characterRelationGamesystems.forEach(gamesystem => character.addAsymetricCharacterRelationGamesystem(gamesystem))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    character.inventorySlots = this.inventorySlotParser.parseInventorySlots(characterData.inventorySlots);
 | 
				
			||||||
    return character;
 | 
					    return character;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -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<inventorySlotData.length; i++) {
 | 
				
			||||||
 | 
					      result.push(this.parseSingleInventorySlot(inventorySlotData[i]))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return result;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private parseSingleInventorySlot(inventorySlotData: any): InventorySlot {
 | 
				
			||||||
 | 
					    const slotName = inventorySlotData.slotName;
 | 
				
			||||||
 | 
					    const slotCharacteristics = this.parseSlotCharacteristics(inventorySlotData.slotCharacteristics)
 | 
				
			||||||
 | 
					    const inheritedGroups = this.parseRequieredInheritedItemgroups(inventorySlotData.requiredInheritances);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const inventorySlot = new InventorySlot(slotName);
 | 
				
			||||||
 | 
					    inventorySlot.slotCharacteristics = slotCharacteristics;
 | 
				
			||||||
 | 
					    inventorySlot.requiredInheritances = inheritedGroups;
 | 
				
			||||||
 | 
					    return inventorySlot;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private parseSlotCharacteristics(slotCharacteristicsData: any): InventoryCharacteristic[] {
 | 
				
			||||||
 | 
					    const characteristics: InventoryCharacteristic[] = []
 | 
				
			||||||
 | 
					    for(let i=0; i<slotCharacteristicsData.length; i++) {
 | 
				
			||||||
 | 
					      const increasingCharacteristic = this.findReferencedCharacteristic(slotCharacteristicsData[i].increasingCharacteristic);
 | 
				
			||||||
 | 
					      const decreasingCharacteristic = this.findReferencedCharacteristic(slotCharacteristicsData[i].decreasingCharacteristic);
 | 
				
			||||||
 | 
					      characteristics.push(new InventoryCharacteristic(increasingCharacteristic!, decreasingCharacteristic!))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return characteristics;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private parseRequieredInheritedItemgroups(inheritanceData: any): ItemGroup[] {
 | 
				
			||||||
 | 
					    const result: ItemGroup[] = []
 | 
				
			||||||
 | 
					    for(let i=0; i<inheritanceData.length; i++) {
 | 
				
			||||||
 | 
					      const inheritedGroup = this.findReferencedItemgroup(inheritanceData[i]);
 | 
				
			||||||
 | 
					      if(inheritedGroup != undefined) {
 | 
				
			||||||
 | 
					        result.push(inheritedGroup);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return result;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private findReferencedCharacteristic(characteristicName: string) {
 | 
				
			||||||
 | 
					    return this.parsedCharacteristics.find(characteristic => characteristic.characteristicName === characteristicName);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private findReferencedItemgroup(groupName: string) {
 | 
				
			||||||
 | 
					    return this.parsedItemgroups.find(group => group.componentName === groupName);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -9,6 +9,7 @@ export class ItemgroupParser {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  private parsedItemgroups: ItemGroup[] = []
 | 
					  private parsedItemgroups: ItemGroup[] = []
 | 
				
			||||||
  private topParsedItemgroups: ItemGroup[] = []
 | 
					  private topParsedItemgroups: ItemGroup[] = []
 | 
				
			||||||
 | 
					  private parsedCharacteristics: ItemGroupCharacteristic[] = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  parseItemgroups(storeComponents: StoreComponent[]) {
 | 
					  parseItemgroups(storeComponents: StoreComponent[]) {
 | 
				
			||||||
    const topologicalSort = this.topologicalSort(storeComponents);
 | 
					    const topologicalSort = this.topologicalSort(storeComponents);
 | 
				
			||||||
@ -81,6 +82,7 @@ export class ItemgroupParser {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const characteristic =  new ItemGroupCharacteristic(name, description, itemgroup);
 | 
					    const characteristic =  new ItemGroupCharacteristic(name, description, itemgroup);
 | 
				
			||||||
    characteristic.itemgroup.addItemgroupCharacteristic(characteristic);
 | 
					    characteristic.itemgroup.addItemgroupCharacteristic(characteristic);
 | 
				
			||||||
 | 
					    this.parsedCharacteristics.push(characteristic)
 | 
				
			||||||
    return characteristic;
 | 
					    return characteristic;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -91,4 +93,8 @@ export class ItemgroupParser {
 | 
				
			|||||||
  getParsedItemgroups() {
 | 
					  getParsedItemgroups() {
 | 
				
			||||||
    return this.parsedItemgroups;
 | 
					    return this.parsedItemgroups;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  getCharacteristics() {
 | 
				
			||||||
 | 
					    return this.parsedCharacteristics;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user