diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs
index c17e92fe..d4bac001 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/RomLib/RomLib.cs
@@ -7,147 +7,156 @@ using static AxibugEmuOnline.Client.HttpAPI;
namespace AxibugEmuOnline.Client
{
- public class RomLib
- {
- /// Rom请求,一页的大小
- private const int PAGE_SIZE = 10;
+ public class RomLib
+ {
+ /// Rom请求,一页的大小
+ private const int PAGE_SIZE = 10;
- /// 请求指令
- private HashSet FetchPageCmd = new HashSet();
- private RomFile[] nesRomFetchList;
- private Dictionary nesRomFileIdMapper = new Dictionary();
- private Dictionary nesRomFileNameMapper = new Dictionary();
- private HttpAPI.GetRomListAPI m_romGetFunc;
- private HttpAPI.SearchRomListAPI m_romSearchFunc;
- private EnumSupportEmuPlatform m_platform;
+ /// 请求指令
+ private HashSet FetchPageCmd = new HashSet();
+ private RomFile[] nesRomFetchList;
+ private Dictionary nesRomFileIdMapper = new Dictionary();
+ private Dictionary nesRomFileNameMapper = new Dictionary();
+ private HttpAPI.GetRomListAPI m_romGetFunc;
+ private HttpAPI.SearchRomListAPI m_romSearchFunc;
+ private EnumSupportEmuPlatform m_platform;
+ private string lastSearchKey;
- public RomLib(EnumSupportEmuPlatform platform)
- {
- m_platform = platform;
- switch (platform)
- {
- case EnumSupportEmuPlatform.NES:
- m_romGetFunc = App.httpAPI.GetNesRomList;
- m_romSearchFunc = App.httpAPI.SearchNesRomList;
- break;
- }
- }
+ public RomLib(EnumSupportEmuPlatform platform)
+ {
+ m_platform = platform;
+ switch (platform)
+ {
+ case EnumSupportEmuPlatform.NES:
+ m_romGetFunc = App.httpAPI.GetNesRomList;
+ m_romSearchFunc = App.httpAPI.SearchNesRomList;
+ break;
+ }
+ }
- public RomFile GetExistRom(string fileName)
- {
- var res = RomFile.CreateExistRom(m_platform, fileName);
+ public RomFile GetExistRom(string fileName)
+ {
+ var res = RomFile.CreateExistRom(m_platform, fileName);
- nesRomFileNameMapper[res.FileName] = res;
+ nesRomFileNameMapper[res.FileName] = res;
- return res;
- }
+ return res;
+ }
- public RomFile GetRomFile(string romFileName)
- {
- RomFile romFile;
- nesRomFileNameMapper.TryGetValue(romFileName, out romFile);
- return romFile;
- }
+ public RomFile GetRomFile(string romFileName)
+ {
+ RomFile romFile;
+ nesRomFileNameMapper.TryGetValue(romFileName, out romFile);
+ return romFile;
+ }
- /// 清除所有下载的Rom文件
- public void ClearRomFile()
- {
- var path = $"{App.PersistentDataPath}/RemoteRoms/{m_platform}";
- if (Directory.Exists(path)) Directory.Delete(path, true);
- }
+ /// 清除所有下载的Rom文件
+ public void ClearRomFile()
+ {
+ var path = $"{App.PersistentDataPath}/RemoteRoms/{m_platform}";
+ if (Directory.Exists(path)) Directory.Delete(path, true);
+ }
- /// 移除一个已下载的Rom
- public void RemoveOneRomFile(RomFile romFile)
- {
- if (romFile.RomReady)
- File.Delete(romFile.LocalFilePath);
- }
+ /// 移除一个已下载的Rom
+ public void RemoveOneRomFile(RomFile romFile)
+ {
+ if (romFile.RomReady)
+ File.Delete(romFile.LocalFilePath);
+ }
- ///
- /// 获得所有Rom文件
- ///
- ///
- public void FetchRomCount(Action callback, string searchKey = null)
- {
- if (string.IsNullOrWhiteSpace(searchKey))
- {
- m_romGetFunc((romList) =>
- {
- FetchPageCmd.Clear();
- nesRomFileIdMapper.Clear();
- nesRomFileNameMapper.Clear();
- nesRomFetchList = new RomFile[romList.resultAllCount];
- for (int i = 0; i < nesRomFetchList.Length; i++)
- {
- //以后考虑用对象池实例化RomFile
- nesRomFetchList[i] = new RomFile(m_platform, i, i / PAGE_SIZE);
- }
- SaveRomInfoFromWeb(romList);
+ ///
+ /// 获得所有Rom文件
+ ///
+ ///
+ public void FetchRomCount(Action callback, string searchKey = null)
+ {
+ lastSearchKey = searchKey;
+ if (string.IsNullOrWhiteSpace(searchKey))
+ {
+ m_romGetFunc((romList) =>
+ {
+ FetchPageCmd.Clear();
+ nesRomFileIdMapper.Clear();
+ nesRomFileNameMapper.Clear();
+ nesRomFetchList = new RomFile[romList.resultAllCount];
+ for (int i = 0; i < nesRomFetchList.Length; i++)
+ {
+ //以后考虑用对象池实例化RomFile
+ nesRomFetchList[i] = new RomFile(m_platform, i, i / PAGE_SIZE);
+ }
+ SaveRomInfoFromWeb(romList);
- callback.Invoke(nesRomFetchList);
- }, 0, PAGE_SIZE);
- }
- else
- {
- m_romSearchFunc((romList) =>
- {
- FetchPageCmd.Clear();
- nesRomFileIdMapper.Clear();
- nesRomFileNameMapper.Clear();
- nesRomFetchList = new RomFile[romList.resultAllCount];
- for (int i = 0; i < nesRomFetchList.Length; i++)
- {
- //以后考虑用对象池实例化RomFile
- nesRomFetchList[i] = new RomFile(m_platform, i, i / PAGE_SIZE);
- }
- SaveRomInfoFromWeb(romList);
+ callback.Invoke(nesRomFetchList);
+ }, 0, PAGE_SIZE);
+ }
+ else
+ {
+ m_romSearchFunc((romList) =>
+ {
+ FetchPageCmd.Clear();
+ nesRomFileIdMapper.Clear();
+ nesRomFileNameMapper.Clear();
+ nesRomFetchList = new RomFile[romList.resultAllCount];
+ for (int i = 0; i < nesRomFetchList.Length; i++)
+ {
+ //以后考虑用对象池实例化RomFile
+ nesRomFetchList[i] = new RomFile(m_platform, i, i / PAGE_SIZE);
+ }
+ SaveRomInfoFromWeb(romList);
- callback.Invoke(nesRomFetchList);
- }, searchKey, 0, PAGE_SIZE);
- }
- }
+ callback.Invoke(nesRomFetchList);
+ }, searchKey, 0, PAGE_SIZE);
+ }
+ }
- public void BeginFetchRomInfo(RomFile romFile)
- {
- if (romFile.InfoReady) return;
+ public void BeginFetchRomInfo(RomFile romFile)
+ {
+ if (romFile.InfoReady) return;
- FetchPageCmd.Add(romFile.Page);
- }
+ FetchPageCmd.Add(romFile.Page);
+ }
- public void ExecuteFetchRomInfo()
- {
- if (FetchPageCmd.Count == 0) return;
+ public void ExecuteFetchRomInfo()
+ {
+ if (FetchPageCmd.Count == 0) return;
- foreach (var pageNo in FetchPageCmd)
- {
- m_romGetFunc(SaveRomInfoFromWeb, pageNo, PAGE_SIZE);
- }
- FetchPageCmd.Clear();
- }
+ foreach (var pageNo in FetchPageCmd)
+ {
+ if (!string.IsNullOrEmpty(lastSearchKey))
+ {
+ m_romSearchFunc(SaveRomInfoFromWeb, lastSearchKey, pageNo, PAGE_SIZE);
+ }
+ else
+ {
+ m_romGetFunc(SaveRomInfoFromWeb, pageNo, PAGE_SIZE);
+ }
+ }
+ FetchPageCmd.Clear();
+ }
- private void SaveRomInfoFromWeb(Resp_GameList resp)
- {
- for (int i = 0; i < resp.gameList.Count; i++)
- {
- var webData = resp.gameList[i];
- RomFile targetRomFile = nesRomFetchList[webData.orderid];
+ private void SaveRomInfoFromWeb(Resp_GameList resp)
+ {
+ for (int i = 0; i < resp.gameList.Count; i++)
+ {
+ var webData = resp.gameList[i];
+ RomFile targetRomFile = nesRomFetchList[webData.orderid];
- targetRomFile.SetWebData(webData);
- nesRomFileIdMapper[webData.id] = nesRomFetchList[webData.orderid];
- nesRomFileNameMapper[targetRomFile.FileName] = targetRomFile;
- }
- }
+ targetRomFile.SetWebData(webData);
+ nesRomFileIdMapper[webData.id] = nesRomFetchList[webData.orderid];
+ nesRomFileNameMapper[targetRomFile.FileName] = targetRomFile;
+ }
+ }
- public static string CalcHash(byte[] data)
- {
- return Helper.FileMD5Hash(data);
- }
+ public static string CalcHash(byte[] data)
+ {
+ return Helper.FileMD5Hash(data);
+ }
- public void AddRomFile(RomFile rom)
- {
- nesRomFileNameMapper[rom.FileName] = rom;
- }
- }
+ public void AddRomFile(RomFile rom)
+ {
+ nesRomFileNameMapper[rom.FileName] = rom;
+ }
+ }
}