main #48
@ -4,11 +4,13 @@ import {AbstractItemGroup} from "../game-model/inventory/AbstractItemGroup";
 | 
			
		||||
import {ConcreteItemGroup} from "../game-model/inventory/ConcreteItemGroup";
 | 
			
		||||
import {ModelComponentType} from "../game-model/ModelComponentType";
 | 
			
		||||
import {SerializeConstants} from "./SerializeConstants";
 | 
			
		||||
import {Item} from "../game-model/inventory/Item";
 | 
			
		||||
 | 
			
		||||
export class ItemSerializer {
 | 
			
		||||
 | 
			
		||||
  private serializedItemgroups: StoreComponent[] = []
 | 
			
		||||
  private static ignoredKeys: string[] = ['type', 'unsaved', 'children', "itemgroup", "manuallyInheritedGroups", "hierarchyInheritedGroups", "items"]
 | 
			
		||||
  private static ignoredGroupKeys: string[] = ['type', 'unsaved', 'children', "itemgroup", "manuallyInheritedGroups", "hierarchyInheritedGroups", "items"]
 | 
			
		||||
  private static ignoredItemKeys: string[] = ['type', 'unsaved', 'hierarchyInheritedGroups']
 | 
			
		||||
 | 
			
		||||
  public serializeItemgroups(itemgroups: ItemGroup[]): StoreComponent[] {
 | 
			
		||||
    itemgroups.forEach(itemgroup => {
 | 
			
		||||
@ -25,6 +27,8 @@ export class ItemSerializer {
 | 
			
		||||
    } else {
 | 
			
		||||
      const storeComponent = this.serializeItemgroup(itemgroup);
 | 
			
		||||
      this.serializedItemgroups.push(storeComponent)
 | 
			
		||||
 | 
			
		||||
      this.serializeItemsOfItemgroup(itemgroup as ConcreteItemGroup);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -33,7 +37,7 @@ export class ItemSerializer {
 | 
			
		||||
    const fileName = ItemSerializer.computeItemgroupPath(itemgroup);
 | 
			
		||||
 | 
			
		||||
    const jsonString = JSON.stringify(itemgroup, (key, value) => {
 | 
			
		||||
      if(ItemSerializer.ignoredKeys.includes(key)) {
 | 
			
		||||
      if(ItemSerializer.ignoredGroupKeys.includes(key)) {
 | 
			
		||||
        return undefined
 | 
			
		||||
      } else {
 | 
			
		||||
 | 
			
		||||
@ -45,14 +49,17 @@ export class ItemSerializer {
 | 
			
		||||
 | 
			
		||||
      }
 | 
			
		||||
    }, SerializeConstants.JSON_INDENT);
 | 
			
		||||
    console.log(fileName)
 | 
			
		||||
    return new StoreComponent(jsonString, fileName, componentType)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private static computeItemgroupPath(itemgroup: ItemGroup): string {
 | 
			
		||||
  private static computeItemgroupPath(itemgroup: ItemGroup, itemPath: boolean = false): string {
 | 
			
		||||
    const itemgroupPath: string[] = [];
 | 
			
		||||
    itemgroupPath.push(itemgroup.componentName);
 | 
			
		||||
    itemgroupPath.push(itemgroup.componentName);
 | 
			
		||||
 | 
			
		||||
    if(!itemPath) {
 | 
			
		||||
      itemgroupPath.push(itemgroup.componentName);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    while(itemgroup.parentGroup !== undefined) {
 | 
			
		||||
      itemgroupPath.unshift(itemgroup.parentGroup.componentName);
 | 
			
		||||
@ -61,4 +68,36 @@ export class ItemSerializer {
 | 
			
		||||
 | 
			
		||||
    return itemgroupPath.join("/");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private serializeItemsOfItemgroup(itemgroup: ConcreteItemGroup) {
 | 
			
		||||
    const fileName = ItemSerializer.computeItemgroupPath(itemgroup, true);
 | 
			
		||||
    itemgroup.items.forEach(item => {
 | 
			
		||||
      const storeComponent = this.serializeSingleItem(fileName, item);
 | 
			
		||||
      this.serializedItemgroups.push(storeComponent)
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private serializeSingleItem(itemgroupPath: string, item: Item) {
 | 
			
		||||
    const itemFile = itemgroupPath + "/" + item.componentName;
 | 
			
		||||
 | 
			
		||||
    const jsonString = JSON.stringify(item, (key, value) => {
 | 
			
		||||
      if(ItemSerializer.ignoredItemKeys.includes(key)) {
 | 
			
		||||
        return undefined
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if(value instanceof ItemGroup) {
 | 
			
		||||
        return value.componentName
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if(key == "key") {
 | 
			
		||||
        return value.characteristicName
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return value;
 | 
			
		||||
    }, SerializeConstants.JSON_INDENT)
 | 
			
		||||
 | 
			
		||||
    return new StoreComponent(jsonString, itemFile, ModelComponentType.ITEM)
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								testModel/items/Clothing/Hose/Hose 1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								testModel/items/Clothing/Hose/Hose 1.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
{
 | 
			
		||||
    "componentName": "Hose 1",
 | 
			
		||||
    "componentDescription": "",
 | 
			
		||||
    "manuallyInheritedGroups": [
 | 
			
		||||
        "Inventory"
 | 
			
		||||
    ],
 | 
			
		||||
    "itemCharacteristicValues": [
 | 
			
		||||
        {
 | 
			
		||||
            "key": "Test0",
 | 
			
		||||
            "value": 0
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								testModel/items/Clothing/Hose/Hose 2.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								testModel/items/Clothing/Hose/Hose 2.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
    "componentName": "Hose 2",
 | 
			
		||||
    "componentDescription": "",
 | 
			
		||||
    "manuallyInheritedGroups": [],
 | 
			
		||||
    "itemCharacteristicValues": [
 | 
			
		||||
        {
 | 
			
		||||
            "key": "Test0",
 | 
			
		||||
            "value": 0
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user