diff --git a/Assets/Src/LapService.cs b/Assets/Src/LapService.cs index c3afee8..af005e6 100644 --- a/Assets/Src/LapService.cs +++ b/Assets/Src/LapService.cs @@ -12,12 +12,7 @@ using UnityEngine.UIElements; using SpaceRace.Shared; -public class PlayerData { - public Guid Id; -} - public class LapService { - static string playerDataPath = Path.Combine(Application.persistentDataPath, "playerData.json"); string _mapName; PlayerData _player; PbDTO _pb; @@ -38,7 +33,7 @@ public class LapService { public LapService(string mapName) { _mapName = mapName; - LoadPlayerData(); + _player = PlayerDataService.Load(); } public IEnumerator GetLapTimes() { @@ -107,22 +102,4 @@ public class LapService { } } } - - void LoadPlayerData() { - try { - string json = File.ReadAllText(playerDataPath); - _player = JsonConvert.DeserializeObject(json); - Debug.Log($"Loaded player data {json}"); - } catch { - Debug.Log("No existing playerData.json"); - CreatePlayerData(); - } - } - - PlayerData CreatePlayerData() { - _player = new PlayerData { Id = Guid.NewGuid() }; - Debug.Log(JsonConvert.SerializeObject(_player)); - File.WriteAllText(playerDataPath, JsonConvert.SerializeObject(_player)); - return _player; - } } diff --git a/Assets/Src/PlayerData.cs b/Assets/Src/PlayerData.cs new file mode 100644 index 0000000..c128c1e --- /dev/null +++ b/Assets/Src/PlayerData.cs @@ -0,0 +1,50 @@ +using System; +using System.IO; + +using UnityEngine; + +using Newtonsoft.Json; + +public class PlayerData { + public PlayerSettings Settings = new(); + public Guid Id = Guid.NewGuid(); +} + +public class PlayerSettings { + public float ViewSens = 1.0f; + public bool InvertY = false; +} + +public static class PlayerDataService { + static string storagePath = Path.Combine(Application.persistentDataPath, "playerData.json"); + + static PlayerDataService() { + Load(); + } + + public static PlayerData Persist(PlayerData data) { + Debug.Log(JsonConvert.SerializeObject(data)); + File.WriteAllText(storagePath, JsonConvert.SerializeObject(data)); + return data; + } + + public static PlayerData Create() { + PlayerData data = new PlayerData { Id = Guid.NewGuid() }; + return Persist(data); + } + + public static PlayerData Load() { + try { + string json = File.ReadAllText(storagePath); + PlayerData data = JsonConvert.DeserializeObject(json); + Debug.Log($"Loaded player data {json}"); + + if (data.Settings == null) data.Settings = new(); + + return Persist(data); + } catch { + Debug.Log("No existing playerData.json"); + return Create(); + } + } +} \ No newline at end of file diff --git a/Assets/Src/PlayerData.cs.meta b/Assets/Src/PlayerData.cs.meta new file mode 100644 index 0000000..edb6199 --- /dev/null +++ b/Assets/Src/PlayerData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4d8c1d0642edd2b18f5c5ff237f80c1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Src/UI/MenuControls.cs b/Assets/Src/UI/MenuControls.cs index 7bc7785..b20c174 100644 --- a/Assets/Src/UI/MenuControls.cs +++ b/Assets/Src/UI/MenuControls.cs @@ -27,6 +27,8 @@ public class MenuControls : MonoBehaviour { SpaceRaceInput input; + PlayerData _player; + Toggle invertYToggle; Slider viewSensSlider; Label viewSensLabel; @@ -45,6 +47,8 @@ public class MenuControls : MonoBehaviour { return; } + _player = PlayerDataService.Load(); + SetupActions(); Hide(); } @@ -118,12 +122,24 @@ public class MenuControls : MonoBehaviour { viewSensSlider = menuDoc.rootVisualElement.Q("viewSens"); viewSensLabel = menuDoc.rootVisualElement.Q