完善AxiIO为Switch可用且健壮的代码

This commit is contained in:
sin365 2025-06-16 10:58:49 +08:00
parent 7b40e190d0
commit 20b3d2e8ef
13 changed files with 191 additions and 98 deletions

View File

@ -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)
{

View File

@ -1,8 +1,8 @@
using System.Collections.Generic;
using UnityEngine;
namespace AxiIO
{
public static class AxiIO
{
static IAxiIO m_io;
@ -10,6 +10,7 @@ namespace AxiIO
{
get
{
//Debug.Log("[AxiIO]");
if (m_io == null)
{
#if UNITY_SWITCH && !UNITY_EDITOR

View File

@ -1,2 +1,11 @@
fileFormatVersion: 2
guid: 32f63f62398d8184590292135b011084
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -6,6 +6,10 @@ namespace AxiIO
{
public class CSharpIO : IAxiIO
{
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);
}
}
}

View File

@ -1,2 +1,11 @@
fileFormatVersion: 2
guid: f01df62ce36a4da4f9a20b4758d59102
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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();
};
}

View File

@ -1,2 +1,11 @@
fileFormatVersion: 2
guid: 588eae2a7e121cc40907d8ac6f4250d4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace AxiIO
{
@ -7,30 +8,50 @@ namespace AxiIO
{
public NSwitchIO()
{
Debug.Log($"NSwitchIO Init");
//return;
AxiNS.instance.Init();
}
public void Ping()
{
throw new NotImplementedException();
}
public void dir_CreateDirectory(string dirpath)
{
//Debug.Log($"dir_CreateDirectory");
//return;
AxiNS.instance.io.CreateDir(dirpath);
}
public void dir_Delete(string path, bool recursive)
{
AxiNS.instance.io.DeletePathFile(path);
//Debug.Log($"dir_Delete recursive:{recursive}");
//return;
if (recursive)
AxiNS.instance.io.DeletePathDirRecursively(path);
else
AxiNS.instance.io.DeletePathDir(path);
}
public IEnumerable<string> dir_EnumerateFiles(string path, string searchPattern)
{
//Debug.Log($"dir_EnumerateFiles path=>{path} searchPattern=>{searchPattern}");
//return default;
return AxiNS.instance.io.EnumerateFiles(path, searchPattern);
}
public bool dir_Exists(string dirpath)
{
//Debug.Log($"dir_Exists path=>{dirpath}");
//return default;
return AxiNS.instance.io.CheckPathExists(dirpath);
}
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];
@ -40,6 +61,8 @@ namespace AxiIO
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];
@ -49,21 +72,31 @@ namespace AxiIO
public void file_Delete(string filePath)
{
//Debug.Log($"file_Delete path=>{filePath}");
//return;
AxiNS.instance.io.DeletePathFile(filePath);
}
public bool file_Exists(string filePath)
{
return AxiNS.instance.io.CheckPathExists(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 byte[] file_ReadAllBytes(string filePath)
{
//Debug.Log($"file_ReadAllBytes path=>{filePath}");
//return default;
return AxiNS.instance.io.LoadSwitchDataFile(filePath);
}
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);
@ -78,12 +111,17 @@ namespace AxiIO
/// <param name="immediatelyCommit">是否立即Commit到物理存储</param>
public void file_WriteAllBytes(string filePath, byte[] data, bool immediatelyCommit = true)
{
AxiNS.instance.io.FileToSaveWithCreate(filePath, data);
//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);
}
}
}

View File

@ -1,2 +1,11 @@
fileFormatVersion: 2
guid: 3da9b14bf7568f34989774dc5f5fbcf4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a68ab2d5a12fb19428369238ea0fe27f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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);
}

View File

@ -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<FilterRomSetting>(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);
}
/// <summary>
@ -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<FilterPresetList>(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)

View File

@ -14,8 +14,8 @@ namespace AxibugEmuOnline.Client.Settings
/// </summary>
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);
}
/// <summary>
@ -25,7 +25,7 @@ namespace AxibugEmuOnline.Client.Settings
/// <returns></returns>
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);
}
/// <summary>