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,
+ )
+ ));
+ }
+ }
+ }
+
+}