diff --git a/Assets/_PROJECT/Managers/ConfigManager.cs b/Assets/_PROJECT/Managers/ConfigManager.cs new file mode 100644 index 00000000..a123c4ca --- /dev/null +++ b/Assets/_PROJECT/Managers/ConfigManager.cs @@ -0,0 +1,120 @@ +using FishNet.Component.Spawning; +using SimpleJSON; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; +using UnityEngine; +using Valve.Newtonsoft.Json; + +public class ConfigManager : MonoBehaviour +{ + public static ConfigManager instance = null; + + [System.Serializable] + public class Config + { + public bool isContinuousLocomotion; + public float masterVolume; + } + protected Config currentConfig = new Config(); + protected string configFileName = "config.json"; + protected string configFilePath; + + void Awake() + { + if (!instance) { instance = this; } + else if (instance != this) { Destroy(gameObject); } + + DontDestroyOnLoad(gameObject); + } + + private void Start() + { + configFilePath = Directory.GetCurrentDirectory() + "\\" + configFileName; + Debug.Log(configFilePath); + currentConfig = LoadConfigFromFile(); + } + + public Config GetConfig() + { + return currentConfig; + } + + + protected void SaveConfigToFile() + { + FileStream fileStream; + if (!File.Exists(configFilePath)) + { + fileStream = File.Create(configFilePath); + + } else + { + fileStream = new FileStream(configFilePath, FileMode.Open, FileAccess.Write, FileShare.ReadWrite); + } + StreamWriter writer = new StreamWriter(fileStream); + writer.Write(JsonUtility.ToJson(currentConfig)); + writer.Close(); + fileStream.Close(); + } + + + protected Config LoadConfigFromFile() + { + if (!File.Exists(configFilePath)) + { + CreateDefaultConfigFile(); // File did not exist, try to create an empty file + if (!File.Exists(configFilePath)) + { + Debug.LogError("Config file was not found and could not be created: " + configFilePath); + return null; + } + } + + + FileStream fileStream = new FileStream(configFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + StreamReader reader = new StreamReader(fileStream); + Config config = JsonUtility.FromJson(reader.ReadToEnd()); + reader.Close(); + fileStream.Close(); + + //Config config = JsonUtility.FromJson(File.ReadAllText(configFilePath)); + + Debug.Log(config.isContinuousLocomotion); + Debug.Log(config.masterVolume); + + return config; + } + + protected void CreateDefaultConfigFile() + { + currentConfig = new Config(); + SaveConfigToFile(); + } + + // Getters and Setters + + public bool GetIsContinuousLocomotion() + { + + return currentConfig.isContinuousLocomotion; + } + public void SetIsContinuousLocomotion(bool isContinuousLocomotion) + { + currentConfig.isContinuousLocomotion = isContinuousLocomotion; + SaveConfigToFile(); + } + + + public float getMasterVolume() + { + + return currentConfig.masterVolume; + } + public void SetMasterVolume(float masterVolume) + { + currentConfig.masterVolume = masterVolume; + SaveConfigToFile(); + } +} diff --git a/Assets/_PROJECT/Managers/ConfigManager.cs.meta b/Assets/_PROJECT/Managers/ConfigManager.cs.meta new file mode 100644 index 00000000..f0bec903 --- /dev/null +++ b/Assets/_PROJECT/Managers/ConfigManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7622588c230b4b448152a6dfd6c0588 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_PROJECT/Managers/ConfigManager.prefab b/Assets/_PROJECT/Managers/ConfigManager.prefab new file mode 100644 index 00000000..6a6c7752 --- /dev/null +++ b/Assets/_PROJECT/Managers/ConfigManager.prefab @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8320216767994874586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7021351325020055800} + - component: {fileID: 4493448285314379156} + m_Layer: 0 + m_Name: ConfigManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7021351325020055800 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8320216767994874586} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -74.23521, y: 4.9800367, z: -13.716739} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 38 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4493448285314379156 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8320216767994874586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c7622588c230b4b448152a6dfd6c0588, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/_PROJECT/Managers/ConfigManager.prefab.meta b/Assets/_PROJECT/Managers/ConfigManager.prefab.meta new file mode 100644 index 00000000..1fe986fe --- /dev/null +++ b/Assets/_PROJECT/Managers/ConfigManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5d19b02089b931a469209b09142786a0 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity b/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity index 35e6eedc..a40e9a42 100644 --- a/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity +++ b/Assets/_PROJECT/Scenes/DeltaBuilding_base.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5acb17b39178ede13ca80285a7dfcdc5e1302fa4d26938419a748ceae8a95ba -size 67152810 +oid sha256:8799aca32fa5ae94a742b87cafd57e14ce90284df9ff284c01473a806693fe8c +size 67155511