diff --git a/Assets/Scenes/CreatorLayerMenu.unity b/Assets/Scenes/CreatorLayerMenu.unity index 923d761..005cf95 100644 --- a/Assets/Scenes/CreatorLayerMenu.unity +++ b/Assets/Scenes/CreatorLayerMenu.unity @@ -1466,6 +1466,50 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 77dc06bcc97db4033b6cd70f52cf499a, type: 3} m_Name: m_EditorClassIdentifier: Assembly-CSharp::BouncyButton +--- !u!1 &1177180270 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1177180272} + - component: {fileID: 1177180271} + m_Layer: 0 + m_Name: BazookaManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1177180271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177180270} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0716218eb05c948ebb11f5d96d9131ac, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::BazookaManager +--- !u!4 &1177180272 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1177180270} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 548.65607, y: 465.11084, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1188230703 GameObject: m_ObjectHideFlags: 0 @@ -1928,3 +1972,4 @@ SceneRoots: - {fileID: 1188230706} - {fileID: 343903086} - {fileID: 1907152561} + - {fileID: 1177180272} diff --git a/Assets/Scenes/MainMenu.unity b/Assets/Scenes/MainMenu.unity index 01a2b19..ee33587 100644 --- a/Assets/Scenes/MainMenu.unity +++ b/Assets/Scenes/MainMenu.unity @@ -998,6 +998,50 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 689023070} m_CullTransparentMesh: 1 +--- !u!1 &725212258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 725212260} + - component: {fileID: 725212259} + m_Layer: 0 + m_Name: BazookaManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &725212259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 725212258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0716218eb05c948ebb11f5d96d9131ac, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::BazookaManager +--- !u!4 &725212260 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 725212258} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 548.65607, y: 465.11084, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &725466654 GameObject: m_ObjectHideFlags: 0 @@ -2567,3 +2611,4 @@ SceneRoots: - {fileID: 1667457746} - {fileID: 291373823} - {fileID: 275857914} + - {fileID: 725212260} diff --git a/Assets/Scripts/BazookaManager.cs b/Assets/Scripts/BazookaManager.cs new file mode 100644 index 0000000..68f75d1 --- /dev/null +++ b/Assets/Scripts/BazookaManager.cs @@ -0,0 +1,88 @@ +using System.IO; +using System.Text; +using Newtonsoft.Json.Linq; +using UnityEngine; + +public class BazookaManager : MonoBehaviour +{ + public static BazookaManager Instance; + private bool firstLoadDone = false; + public JObject saveFile = new() + { + ["version"] = "0" + }; + + void Awake() + { + if (Instance == null) + { + Instance = this; + DontDestroyOnLoad(gameObject); + if (!firstLoadDone) + { + firstLoadDone = true; + Load(); + } + } + else + { + Destroy(gameObject); + } + } + + void OnApplicationQuit() + { + Save(); + } + + void OnApplicationPause(bool pause) + { + if (pause) + { + Save(); + } + } + + public void Load() + { + string path = Path.Join(Application.persistentDataPath, "savefile.json"); + if (!File.Exists(path)) + { + File.Create(path).Dispose(); + } + else + { + try + { + var tempSaveFile = JObject.Parse(File.ReadAllText(path)); + if (tempSaveFile != null) saveFile = tempSaveFile; + } + catch + { + Debug.LogWarning("Failed to load save file"); + } + } + if (saveFile["version"] == null || saveFile["version"].ToString() != "0") + { + saveFile["version"] = "0"; + } + } + + public void Save() + { + string path = Path.Join(Application.persistentDataPath, "savefile.json"); + using var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None); + var encoded = Encoding.UTF8.GetBytes(saveFile.ToString(Newtonsoft.Json.Formatting.Indented)); + fileStream.Write(encoded, 0, encoded.Length); + fileStream.Flush(true); + } + + public void ResetSave() + { + saveFile = new JObject + { + ["version"] = "0" + }; + Save(); + } +} diff --git a/Assets/Scripts/BazookaManager.cs.meta b/Assets/Scripts/BazookaManager.cs.meta new file mode 100644 index 0000000..3e85582 --- /dev/null +++ b/Assets/Scripts/BazookaManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0716218eb05c948ebb11f5d96d9131ac \ No newline at end of file diff --git a/Packages/manifest.json b/Packages/manifest.json index 6422015..7230522 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -13,6 +13,7 @@ "com.unity.ide.visualstudio": "2.0.25", "com.unity.inputsystem": "1.17.0", "com.unity.multiplayer.center": "1.0.1", + "com.unity.nuget.newtonsoft-json": "3.2.2", "com.unity.render-pipelines.universal": "17.3.0", "com.unity.test-framework": "1.6.0", "com.unity.timeline": "1.8.9", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index a6d7359..7368c6e 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -184,6 +184,13 @@ "dependencies": {}, "url": "https://packages.unity.com" }, + "com.unity.nuget.newtonsoft-json": { + "version": "3.2.2", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, "com.unity.render-pipelines.core": { "version": "17.3.0", "depth": 1,