From 817c9bce5309ca81840bb9159c2a6beb40321195 Mon Sep 17 00:00:00 2001
From: Margaretha Olivia <margarethaolivia41@gmail.com>
Date: Fri, 10 May 2024 13:13:29 +0700
Subject: [PATCH] feat: save data

---
 Assets/Scripts/PetData.cs                |  0
 Assets/Scripts/PetData.cs.meta           | 11 +++++
 Assets/Scripts/Player/PlayerData.cs      |  0
 Assets/Scripts/Player/PlayerData.cs.meta | 11 +++++
 Assets/Scripts/SaveData.cs               | 61 +++++++++++++++++++++---
 5 files changed, 77 insertions(+), 6 deletions(-)
 create mode 100644 Assets/Scripts/PetData.cs
 create mode 100644 Assets/Scripts/PetData.cs.meta
 create mode 100644 Assets/Scripts/Player/PlayerData.cs
 create mode 100644 Assets/Scripts/Player/PlayerData.cs.meta

diff --git a/Assets/Scripts/PetData.cs b/Assets/Scripts/PetData.cs
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Scripts/PetData.cs.meta b/Assets/Scripts/PetData.cs.meta
new file mode 100644
index 0000000..9c45bed
--- /dev/null
+++ b/Assets/Scripts/PetData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1592109dfcbf6d944b8edad5e086dbb7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Player/PlayerData.cs b/Assets/Scripts/Player/PlayerData.cs
new file mode 100644
index 0000000..e69de29
diff --git a/Assets/Scripts/Player/PlayerData.cs.meta b/Assets/Scripts/Player/PlayerData.cs.meta
new file mode 100644
index 0000000..f758d6f
--- /dev/null
+++ b/Assets/Scripts/Player/PlayerData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9a00aafbb5f305f4a825d692b6dec5db
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/SaveData.cs b/Assets/Scripts/SaveData.cs
index 4b8ff91..28fec9f 100644
--- a/Assets/Scripts/SaveData.cs
+++ b/Assets/Scripts/SaveData.cs
@@ -2,12 +2,61 @@ using static UnityEditor.Progress;
 using System.Collections.Generic;
 using System;
 using System.Numerics;
+using UnityEngine;
 
 [Serializable]
-public class SaveData
+public class SaveData : MonoBehaviour
 {
-    public Vector3 playerPosition;
-    public int playerHealth;
-    public List<Item> inventoryItems;
-    // ... other game data
-}
\ No newline at end of file
+    public PlayerData playerData = new PlayerData();
+
+    public void SaveToJson()
+    {
+        string savePlayerData = JsonUtility.ToJson(playerData);
+        string filePath = Application.persistentDataPath + "/savePlayerData.json";
+        Debug.Log(filePath);
+        System.IO.File.WriteAllText(filePath, savePlayerData);
+        Debug.Log("save successful");
+    }
+
+    public void LoadFromJson()
+    {
+        string filePath = Application.persistentDataPath + "/savePlayerData.json";
+        string savePlayerData = System.IO.File.ReadAllText(filePath);
+
+        playerData = JsonUtility.FromJson<PlayerData>(savePlayerData);
+        Debug.Log("load successful");
+    }
+}
+
+[System.Serializable]
+public class PlayerData
+{
+    public int currentLevel;
+
+    // from PlayerHealth.cs
+    public int currentHealth;
+    public bool godMode;
+
+    // from PlayerMovement.cs
+    public float speed;
+    public bool isDoubleSpeed;
+
+    // from PlayerShooting.cs
+    public int damagePerShot;
+    public bool isOneHitKill;
+
+    // from PlayerGold.cs
+    public int currentGold;
+    public bool isMotherlode;
+
+    public List<PetData> pet = new List<PetData>();
+}
+
+[System.Serializable]
+public class PetData
+{
+    public string type;
+    public int currentHealth;
+    public int damagePerShot;
+    public float speed;
+}
-- 
GitLab