From 20b3d2e8eff8d12e79c3ef61da910e34985e6d38 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Mon, 16 Jun 2025 10:58:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84AxiIO=E4=B8=BASwitch=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E4=B8=94=E5=81=A5=E5=A3=AE=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Script/AppMain/App.cs | 4 + .../Assets/Script/AppMain/AxiIO/AxiIO.cs | 7 +- .../Assets/Script/AppMain/AxiIO/AxiIO.cs.meta | 11 +- .../Assets/Script/AppMain/AxiIO/CSharpIO.cs | 11 +- .../Script/AppMain/AxiIO/CSharpIO.cs.meta | 11 +- .../Assets/Script/AppMain/AxiIO/IAxiIO.cs | 3 +- .../Script/AppMain/AxiIO/IAxiIO.cs.meta | 11 +- .../Assets/Script/AppMain/AxiIO/NSwitchIO.cs | 182 +++++++++++------- .../Script/AppMain/AxiIO/NSwitchIO.cs.meta | 11 +- .../Assets/Script/AppMain/AxiPlayerPrefs.meta | 8 + .../Manager/AppSettings/BgColorSettings.cs | 12 +- .../AppSettings/Filter/FilterManager.cs | 8 +- .../Manager/AppSettings/ScreenScaler.cs | 10 +- 13 files changed, 191 insertions(+), 98 deletions(-) create mode 100644 AxibugEmuOnline.Client/Assets/Script/AppMain/AxiPlayerPrefs.meta diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs index f0941b26..34e04577 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/App.cs @@ -64,6 +64,10 @@ namespace AxibugEmuOnline.Client.ClientCore #else Application.persistentDataPath; #endif + public static string PersistentDataRootPath() + { + return s_persistentRoot; + } public static string PersistentDataPath(RomPlatformType emuPlatform) { diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs index c621882a..a15c87a2 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs @@ -1,19 +1,20 @@ using System.Collections.Generic; +using UnityEngine; namespace AxiIO { - public static class AxiIO { static IAxiIO m_io; - public static IAxiIO io + public static IAxiIO io { get { + //Debug.Log("[AxiIO]"); if (m_io == null) { #if UNITY_SWITCH && !UNITY_EDITOR - m_io = new NSwitchIO(); + m_io = new NSwitchIO(); #else m_io = new CSharpIO(); #endif diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs.meta index 665bf62a..d7b1dac2 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs.meta +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/AxiIO.cs.meta @@ -1,2 +1,11 @@ fileFormatVersion: 2 -guid: 32f63f62398d8184590292135b011084 \ No newline at end of file +guid: 32f63f62398d8184590292135b011084 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs index 3935bcbb..017b423f 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs @@ -5,8 +5,12 @@ using System.IO; namespace AxiIO { public class CSharpIO : IAxiIO - { - public void dir_CreateDirectory(string dirpath) + { + public void Ping() + { + throw new NotImplementedException(); + } + public void dir_CreateDirectory(string dirpath) { System.IO.Directory.CreateDirectory(dirpath); } @@ -72,5 +76,6 @@ namespace AxiIO { return System.IO.Directory.GetFiles(path); } - } + + } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs.meta index 4c22cdc1..a6a4fd7b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs.meta +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/CSharpIO.cs.meta @@ -1,2 +1,11 @@ fileFormatVersion: 2 -guid: f01df62ce36a4da4f9a20b4758d59102 \ No newline at end of file +guid: f01df62ce36a4da4f9a20b4758d59102 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs index 5a164dab..63b8f545 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs @@ -23,5 +23,6 @@ namespace AxiIO int file_ReadBytesToArr(string filePath, byte[] readToArr, int start, int len); string[] dir_GetDirectories(string path); string[] dir_GetFiles(string path); - }; + void Ping(); + }; } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs.meta index 4bf4171f..9c60b539 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs.meta +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/IAxiIO.cs.meta @@ -1,2 +1,11 @@ fileFormatVersion: 2 -guid: 588eae2a7e121cc40907d8ac6f4250d4 \ No newline at end of file +guid: 588eae2a7e121cc40907d8ac6f4250d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs index c28e17c6..2b15dbb7 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs @@ -1,89 +1,127 @@ using System; using System.Collections.Generic; +using UnityEngine; namespace AxiIO { - public class NSwitchIO : IAxiIO - { - public NSwitchIO() - { - AxiNS.instance.Init(); - } - public void dir_CreateDirectory(string dirpath) - { - AxiNS.instance.io.CreateDir(dirpath); - } + public class NSwitchIO : IAxiIO + { + public NSwitchIO() + { + Debug.Log($"NSwitchIO Init"); + //return; + AxiNS.instance.Init(); + } - public void dir_Delete(string path, bool recursive) - { - AxiNS.instance.io.DeletePathFile(path); - } + public void Ping() + { + throw new NotImplementedException(); + } + public void dir_CreateDirectory(string dirpath) + { + //Debug.Log($"dir_CreateDirectory"); + //return; + AxiNS.instance.io.CreateDir(dirpath); + } - public IEnumerable dir_EnumerateFiles(string path, string searchPattern) - { - return AxiNS.instance.io.EnumerateFiles(path, searchPattern); - } + public void dir_Delete(string path, bool recursive) + { + //Debug.Log($"dir_Delete recursive:{recursive}"); + //return; + if (recursive) + AxiNS.instance.io.DeletePathDirRecursively(path); + else + AxiNS.instance.io.DeletePathDir(path); + } - public bool dir_Exists(string dirpath) - { - return AxiNS.instance.io.CheckPathExists(dirpath); - } + public IEnumerable dir_EnumerateFiles(string path, string searchPattern) + { + //Debug.Log($"dir_EnumerateFiles path=>{path} searchPattern=>{searchPattern}"); + //return default; + return AxiNS.instance.io.EnumerateFiles(path, searchPattern); + } - public string[] dir_GetDirectories(string path) - { - if (!AxiNS.instance.io.GetDirectoryDirs(path, out string[] result)) - { - return new string[0]; - } - return result; - } + public bool dir_Exists(string dirpath) + { + //Debug.Log($"dir_Exists path=>{dirpath}"); + //return default; + return AxiNS.instance.io.CheckPathExists(dirpath); + } - public string[] dir_GetFiles(string path) - { - if (!AxiNS.instance.io.GetDirectoryFiles(path, out string[] result)) - { - return new string[0]; - } - return result; - } + public string[] dir_GetDirectories(string path) + { + //Debug.Log($"dir_GetDirectories path=>{path}"); + //return default; + if (!AxiNS.instance.io.GetDirectoryDirs(path, out string[] result)) + { + return new string[0]; + } + return result; + } - public void file_Delete(string filePath) - { - AxiNS.instance.io.DeletePathFile(filePath); - } + public string[] dir_GetFiles(string path) + { + //Debug.Log($"dir_GetFiles path=>{path}"); + //return default; + if (!AxiNS.instance.io.GetDirectoryFiles(path, out string[] result)) + { + return new string[0]; + } + return result; + } - public bool file_Exists(string filePath) - { - return AxiNS.instance.io.CheckPathExists(filePath); - } + public void file_Delete(string filePath) + { + //Debug.Log($"file_Delete path=>{filePath}"); + //return; + AxiNS.instance.io.DeletePathFile(filePath); + } - public byte[] file_ReadAllBytes(string filePath) - { - return AxiNS.instance.io.LoadSwitchDataFile(filePath); - } + public bool file_Exists(string filePath) + { + //Debug.Log($"file_Exists path=>{filePath}"); + //return default; + bool result = AxiNS.instance.io.CheckPathExists(filePath); + //Debug.Log($"file_Exists path=>{filePath} result=>{result}"); + return result; + } - public int file_ReadBytesToArr(string filePath, byte[] readToArr, int start, int len) - { - byte[] bytes = file_ReadAllBytes(filePath); - int templen = Math.Min(len, bytes.Length); - Array.Copy(readToArr, readToArr, len); - return templen; - } + public byte[] file_ReadAllBytes(string filePath) + { + //Debug.Log($"file_ReadAllBytes path=>{filePath}"); + //return default; + return AxiNS.instance.io.LoadSwitchDataFile(filePath); + } - /// - /// - /// - /// - /// - /// 是否立即Commit到物理存储 - public void file_WriteAllBytes(string filePath, byte[] data, bool immediatelyCommit = true) - { - AxiNS.instance.io.FileToSaveWithCreate(filePath, data); - } + public int file_ReadBytesToArr(string filePath, byte[] readToArr, int start, int len) + { + //Debug.Log($"file_ReadBytesToArr filePath=>{filePath},readToArr.Length=>{readToArr.Length},start=>{start},len=>{len}"); + //return default; + byte[] bytes = file_ReadAllBytes(filePath); + int templen = Math.Min(len, bytes.Length); + Array.Copy(readToArr, readToArr, len); + return templen; + } - public void file_WriteAllBytes(string filePath, System.IO.MemoryStream ms) - { - AxiNS.instance.io.FileToSaveWithCreate(filePath, ms); - } - } + /// + /// + /// + /// + /// + /// 是否立即Commit到物理存储 + public void file_WriteAllBytes(string filePath, byte[] data, bool immediatelyCommit = true) + { + //Debug.Log($"file_WriteAllBytes filePath=>{filePath},data.Length=>{data.Length},immediatelyCommit=>{immediatelyCommit}"); + //return; + AxiNS.instance.io.FileToSaveWithCreate(filePath, data, immediatelyCommit); + } + + public void file_WriteAllBytes(string filePath, System.IO.MemoryStream ms) + { + //Debug.Log($"file_WriteAllBytes filePath=>{filePath},ms.Length=>{ms.Length}"); + //return; + AxiNS.instance.io.FileToSaveWithCreate(filePath, ms); + } + + } } \ No newline at end of file diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs.meta index 2b1ffa7f..6ad57111 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs.meta +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiIO/NSwitchIO.cs.meta @@ -1,2 +1,11 @@ fileFormatVersion: 2 -guid: 3da9b14bf7568f34989774dc5f5fbcf4 \ No newline at end of file +guid: 3da9b14bf7568f34989774dc5f5fbcf4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiPlayerPrefs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiPlayerPrefs.meta new file mode 100644 index 00000000..ed408c36 --- /dev/null +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/AxiPlayerPrefs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a68ab2d5a12fb19428369238ea0fe27f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/BgColorSettings.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/BgColorSettings.cs index 5e5d59d1..79e5bd7a 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/BgColorSettings.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/BgColorSettings.cs @@ -14,9 +14,9 @@ namespace AxibugEmuOnline.Client.Settings { get { - var color1 = PlayerPrefs.GetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color1)}", null); - var color2 = PlayerPrefs.GetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color2)}", null); - var name = PlayerPrefs.GetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.Name)}", null); + var color1 = AxiPlayerPrefs.GetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color1)}", null); + var color2 = AxiPlayerPrefs.GetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color2)}", null); + var name = AxiPlayerPrefs.GetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.Name)}", null); if (string.IsNullOrWhiteSpace(color1) || string.IsNullOrWhiteSpace(color2) || string.IsNullOrWhiteSpace(name)) return DEFAULT; else @@ -24,9 +24,9 @@ namespace AxibugEmuOnline.Client.Settings } set { - PlayerPrefs.SetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color1)}", $"#{ColorUtility.ToHtmlStringRGB(value.color1)}"); - PlayerPrefs.SetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color2)}", $"#{ColorUtility.ToHtmlStringRGB(value.color2)}"); - PlayerPrefs.SetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.Name)}", value.Name); + AxiPlayerPrefs.SetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color1)}", $"#{ColorUtility.ToHtmlStringRGB(value.color1)}"); + AxiPlayerPrefs.SetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.color2)}", $"#{ColorUtility.ToHtmlStringRGB(value.color2)}"); + AxiPlayerPrefs.SetString($"{nameof(BgColorSettings)}.{nameof(CurrentColor)}.{nameof(CurrentColor.Name)}", value.Name); OnColorChanged?.Invoke(value); } diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/Filter/FilterManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/Filter/FilterManager.cs index 7c54a037..84b3a4b9 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/Filter/FilterManager.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/Filter/FilterManager.cs @@ -25,7 +25,7 @@ namespace AxibugEmuOnline.Client.Settings public FilterManager() { loadFilters(); - var json = PlayerPrefs.GetString(nameof(FilterRomSetting)); + var json = AxiPlayerPrefs.GetString(nameof(FilterRomSetting)); m_filterRomSetting = JsonUtility.FromJson(json) ?? new FilterRomSetting(); } @@ -152,7 +152,7 @@ namespace AxibugEmuOnline.Client.Settings m_filterRomSetting.Setup(rom, filter, preset); string json = m_filterRomSetting.ToJson(); - PlayerPrefs.SetString(nameof(FilterRomSetting), json); + AxiPlayerPrefs.SetString(nameof(FilterRomSetting), json); } /// @@ -214,7 +214,7 @@ namespace AxibugEmuOnline.Client.Settings private void loadPresets() { - var json = PlayerPrefs.GetString($"Filter_{Name}_PresetList", string.Empty); + var json = AxiPlayerPrefs.GetString($"Filter_{Name}_PresetList", string.Empty); var loadedPresets = JsonUtility.FromJson(json); if (loadedPresets == null) return; else Presets = loadedPresets.presets; @@ -223,7 +223,7 @@ namespace AxibugEmuOnline.Client.Settings public void SavePresets() { var json = JsonUtility.ToJson(new FilterPresetList(Presets)); - PlayerPrefs.SetString($"Filter_{Name}_PresetList", json); + AxiPlayerPrefs.SetString($"Filter_{Name}_PresetList", json); } public MsgBool CreatePreset(string presetName, out FilterPreset newPreset) diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs index 9d1b7f16..b2313c4f 100644 --- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs +++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppSettings/ScreenScaler.cs @@ -14,8 +14,8 @@ namespace AxibugEmuOnline.Client.Settings /// public EnumScalerMode GlobalMode { - get => (EnumScalerMode)PlayerPrefs.GetInt($"{nameof(ScreenScaler)}.GlobalMode", 0); - set => PlayerPrefs.SetInt($"{nameof(ScreenScaler)}.GlobalMode", (int)value); + get => (EnumScalerMode)AxiPlayerPrefs.GetInt($"{nameof(ScreenScaler)}.GlobalMode", 0); + set => AxiPlayerPrefs.SetInt($"{nameof(ScreenScaler)}.GlobalMode", (int)value); } /// @@ -25,7 +25,7 @@ namespace AxibugEmuOnline.Client.Settings /// public EnumScalerMode GetMode(RomPlatformType platform) { - int setVal = PlayerPrefs.GetInt($"{nameof(ScreenScaler)}.PlatMode.{platform}", -1); + int setVal = AxiPlayerPrefs.GetInt($"{nameof(ScreenScaler)}.PlatMode.{platform}", -1); if (setVal == -1) return GlobalMode; else @@ -34,14 +34,14 @@ namespace AxibugEmuOnline.Client.Settings public bool IsSetMode(RomPlatformType platform) { - int setVal = PlayerPrefs.GetInt($"{nameof(ScreenScaler)}.PlatMode.{platform}", -1); + int setVal = AxiPlayerPrefs.GetInt($"{nameof(ScreenScaler)}.PlatMode.{platform}", -1); return setVal != -1; } public void SetMode(RomPlatformType platform, EnumScalerMode? mode) { int setVal = mode == null ? -1 : (int)mode; - PlayerPrefs.SetInt($"{nameof(ScreenScaler)}.PlatMode.{platform}", setVal); + AxiPlayerPrefs.SetInt($"{nameof(ScreenScaler)}.PlatMode.{platform}", setVal); } ///