From ddcbfc5bb34a38aca4247ca7e44cc2450503beb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Thu, 9 May 2024 10:10:55 +0200 Subject: [PATCH] Persist Items independly from Itemgroups --- app/main.ts | 1 + app/storage/StoredGameModel.js | 3 ++- app/storage/StoredGameModel.ts | 4 +++- app/storage/loader/GameModelLoader.js | 2 +- app/storage/loader/GameModelLoader.ts | 2 +- app/storage/storing/ItemgroupStorage.js | 4 +++- app/storage/storing/ItemgroupStorage.ts | 4 +++- src/app/app.component.ts | 4 +++- src/app/project/serializer/ItemSerializer.ts | 7 ++++++- 9 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/main.ts b/app/main.ts index cee7f28..30431c1 100644 --- a/app/main.ts +++ b/app/main.ts @@ -274,6 +274,7 @@ function recieveGameModelToStore(gameModel: StoredGameModel) { const itemgroupStorage = new ItemgroupStorage(path.join(projectDirectory, ModelComponentFileDirectory.ITEMGROUP_DIR_NAME)) itemgroupStorage.storeItemgroups(gameModel.storedItemgroups); + itemgroupStorage.storeItems(gameModel.storedItems) } /*function deleteComponent(component: DeleteModel) { diff --git a/app/storage/StoredGameModel.js b/app/storage/StoredGameModel.js index 2db851f..860b91d 100644 --- a/app/storage/StoredGameModel.js +++ b/app/storage/StoredGameModel.js @@ -2,12 +2,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.StoredGameModel = void 0; class StoredGameModel { - constructor(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, storedItemgroups) { + constructor(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, storedItemgroups, storedItems) { this.gameModelName = gameModelName; this.storedGamesystems = storedGamesystems; this.storedScriptAccounts = storedScriptAccounts; this.storedCharacters = storedCharacters; this.storedItemgroups = storedItemgroups; + this.storedItems = storedItems; } } exports.StoredGameModel = StoredGameModel; diff --git a/app/storage/StoredGameModel.ts b/app/storage/StoredGameModel.ts index 7d9f330..829b038 100644 --- a/app/storage/StoredGameModel.ts +++ b/app/storage/StoredGameModel.ts @@ -7,14 +7,16 @@ export class StoredGameModel { storedScriptAccounts: StoreComponent[] storedCharacters: StoreComponent[] storedItemgroups: StoreComponent[] + storedItems: StoreComponent[] constructor(gameModelName: string, storedScriptAccounts: StoreComponent[], storedGamesystems: StoreComponent[], - storedCharacters: StoreComponent[], storedItemgroups: StoreComponent[]) { + storedCharacters: StoreComponent[], storedItemgroups: StoreComponent[], storedItems: StoreComponent[]) { this.gameModelName = gameModelName; this.storedGamesystems = storedGamesystems; this.storedScriptAccounts = storedScriptAccounts; this.storedCharacters = storedCharacters; this.storedItemgroups = storedItemgroups; + this.storedItems = storedItems; } } diff --git a/app/storage/loader/GameModelLoader.js b/app/storage/loader/GameModelLoader.js index d78f3b3..7b10263 100644 --- a/app/storage/loader/GameModelLoader.js +++ b/app/storage/loader/GameModelLoader.js @@ -16,7 +16,7 @@ class GameModelLoader { const storedScriptAccounts = this.loadScriptAccountComponents(); const storedGamesystems = this.loadGamesystems(); const storedCharacters = this.loadCharacters(); - return new StoredGameModel_1.StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, []); + return new StoredGameModel_1.StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, [], []); } loadScriptAccountComponents() { const scriptAccountDir = path.join(this.gameModelDir, ModelComponentFileDirectory_1.ModelComponentFileDirectory.SCRIPTACCOUNT_DIR_NAME); diff --git a/app/storage/loader/GameModelLoader.ts b/app/storage/loader/GameModelLoader.ts index fffebef..170a147 100644 --- a/app/storage/loader/GameModelLoader.ts +++ b/app/storage/loader/GameModelLoader.ts @@ -22,7 +22,7 @@ export class GameModelLoader { const storedGamesystems = this.loadGamesystems(); const storedCharacters = this.loadCharacters() - return new StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, []); + return new StoredGameModel(gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, [], []); } private loadScriptAccountComponents() { diff --git a/app/storage/storing/ItemgroupStorage.js b/app/storage/storing/ItemgroupStorage.js index 028aa92..3d6a0e1 100644 --- a/app/storage/storing/ItemgroupStorage.js +++ b/app/storage/storing/ItemgroupStorage.js @@ -10,7 +10,6 @@ class ItemgroupStorage { FileUtils_1.FileUtils.prepareDirectoryFroWriting(this.itemgroupDir); } storeItemgroups(itemgroups) { - console.log("Store Itemgroups"); itemgroups.forEach(itemgroup => { this.storeItemgroup(itemgroup); }); @@ -24,6 +23,9 @@ class ItemgroupStorage { FileUtils_1.FileUtils.prepareDirectoryFroWriting(completeItemgroupDirectory); fs.writeFileSync(completeFileName + ".json", itemgroup.jsonString, "utf-8"); } + storeItems(storedItems) { + storedItems.forEach(item => this.storeItemgroup(item)); + } } exports.ItemgroupStorage = ItemgroupStorage; //# sourceMappingURL=ItemgroupStorage.js.map \ No newline at end of file diff --git a/app/storage/storing/ItemgroupStorage.ts b/app/storage/storing/ItemgroupStorage.ts index 40953ca..3049f7e 100644 --- a/app/storage/storing/ItemgroupStorage.ts +++ b/app/storage/storing/ItemgroupStorage.ts @@ -13,7 +13,6 @@ export class ItemgroupStorage { } public storeItemgroups(itemgroups: StoreComponent[]) { - console.log("Store Itemgroups") itemgroups.forEach(itemgroup => { this.storeItemgroup(itemgroup) }) @@ -31,4 +30,7 @@ export class ItemgroupStorage { } + storeItems(storedItems: StoreComponent[]) { + storedItems.forEach(item => this.storeItemgroup(item)) + } } diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 063c373..d0e1c85 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -235,7 +235,9 @@ export class AppComponent implements OnInit{ const itemSerializer = new ItemSerializer(); const storedItemgroups: StoreComponent[] = itemSerializer.serializeItemgroups(this.gameModel!.itemgroups); - const storeModel = new StoredGameModel(this.gameModel.gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, storedItemgroups) + const storedItems: StoreComponent[] = itemSerializer.getSerializedItems() + + const storeModel = new StoredGameModel(this.gameModel.gameModelName, storedScriptAccounts, storedGamesystems, storedCharacters, storedItemgroups, storedItems) if(this.electronService.isElectron) { this.electronService.ipcRenderer.send('save-model', storeModel) diff --git a/src/app/project/serializer/ItemSerializer.ts b/src/app/project/serializer/ItemSerializer.ts index fc785c8..ac54853 100644 --- a/src/app/project/serializer/ItemSerializer.ts +++ b/src/app/project/serializer/ItemSerializer.ts @@ -9,6 +9,7 @@ import {Item} from "../game-model/inventory/Item"; export class ItemSerializer { private serializedItemgroups: StoreComponent[] = [] + private serializedItems: StoreComponent[] = [] private static ignoredGroupKeys: string[] = ['type', 'unsaved', 'children', "itemgroup", "manuallyInheritedGroups", "hierarchyInheritedGroups", "items"] private static ignoredItemKeys: string[] = ['type', 'unsaved', 'hierarchyInheritedGroups'] @@ -73,7 +74,7 @@ export class ItemSerializer { const fileName = ItemSerializer.computeItemgroupPath(itemgroup, true); itemgroup.items.forEach(item => { const storeComponent = this.serializeSingleItem(fileName, item); - this.serializedItemgroups.push(storeComponent) + this.serializedItems.push(storeComponent) }) @@ -100,4 +101,8 @@ export class ItemSerializer { return new StoreComponent(jsonString, itemFile, ModelComponentType.ITEM) } + + getSerializedItems() { + return this.serializedItems; + } }