From bfd30c935b2d50f7889bc14ec3e550bea13a202f Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Fri, 22 Nov 2024 22:53:11 +0100 Subject: [PATCH] centralized save data --- src/App.vue | 37 ++++++++++++++++++++++++++++--------- src/models/SaveData.ts | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 src/models/SaveData.ts diff --git a/src/App.vue b/src/App.vue index 9823586..1555579 100644 --- a/src/App.vue +++ b/src/App.vue @@ -33,7 +33,7 @@ import {version} from "../package.json" diff --git a/src/models/SaveData.ts b/src/models/SaveData.ts new file mode 100644 index 0000000..1f9edaf --- /dev/null +++ b/src/models/SaveData.ts @@ -0,0 +1,36 @@ +import Adventurer from "@/models/Adventurer.ts"; +import type AdventurerIdentity from "@/models/AdventurerIdentity.ts"; +import AdventurerInventory from "@/models/AdventurerInventory.ts"; + +export default class SaveData { + + adventurers: Array = []; + + constructor( + data: {[key:string]: unknown} = {}, + adventurerIdentities: {[key:string]: AdventurerIdentity} = {} + ) { + if (Array.isArray(data?.adventurers)) { + for (const adventurerData of data.adventurers) { + const identity = adventurerIdentities[adventurerData?.identity?.id]; + if (!identity) { + console.error("Adventurer identity not found for adventurer data", adventurerData); + continue; + } + this.adventurers.push(new Adventurer( + identity, + adventurerData?.experience ?? 0, + adventurerData?.basePower ?? 0, + adventurerData?.baseDefense ?? 0, + new AdventurerInventory( + adventurerData?.inventory?.helmet ?? null, + adventurerData?.inventory?.armor ?? null, + adventurerData?.inventory?.boots ?? null, + adventurerData?.inventory?.weapon ?? null, + ) + )); + } + } + } + +}