forked from sin365/AxibugEmuOnline
Compare commits
5 Commits
4af2168748
...
c147e1dd91
| Author | SHA1 | Date | |
|---|---|---|---|
| c147e1dd91 | |||
| 6a770fe4f1 | |||
| c8d18f90dd | |||
| 3fc31a11de | |||
| 6ec6e2d213 |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ae0d9b04c112f5b4c98feb0af7ed5676
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf3c029a754c0dc40b15ce6b1962e31f
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c4467b8175b4db64093d603a93775dff
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7478117b6f7d6cb4cb8c0f5d56205ea1
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -3,6 +3,7 @@ using AxibugEmuOnline.Client.Network;
|
|||||||
using AxibugProtobuf;
|
using AxibugProtobuf;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -22,14 +23,6 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
public static AppChat chat;
|
public static AppChat chat;
|
||||||
public static UserDataManager user;
|
public static UserDataManager user;
|
||||||
public static AppEmu emu;
|
public static AppEmu emu;
|
||||||
/// <summary>
|
|
||||||
/// nes Rom库
|
|
||||||
/// </summary>
|
|
||||||
public static RomLib nesRomLib;
|
|
||||||
/// <summary>
|
|
||||||
/// 收藏 Rom库
|
|
||||||
/// </summary>
|
|
||||||
public static RomLib starRomLib;
|
|
||||||
public static HttpAPI httpAPI;
|
public static HttpAPI httpAPI;
|
||||||
public static CacheManager CacheMgr;
|
public static CacheManager CacheMgr;
|
||||||
public static AppRoom roomMgr;
|
public static AppRoom roomMgr;
|
||||||
@ -39,6 +32,12 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
public static SaveSlotManager SavMgr;
|
public static SaveSlotManager SavMgr;
|
||||||
static bool bTest;
|
static bool bTest;
|
||||||
static string mTestSrvIP;
|
static string mTestSrvIP;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary> 收藏 Rom库 </summary>
|
||||||
|
public static RomLib starRomLib;
|
||||||
|
private static Dictionary<RomPlatformType, RomLib> s_romLibs = new Dictionary<RomPlatformType, RomLib>();
|
||||||
|
|
||||||
#region Mono
|
#region Mono
|
||||||
public static TickLoop tickLoop;
|
public static TickLoop tickLoop;
|
||||||
private static CoroutineRunner coRunner;
|
private static CoroutineRunner coRunner;
|
||||||
@ -62,6 +61,11 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
}
|
}
|
||||||
public static string PersistentDataRoot() => s_persistentRoot;
|
public static string PersistentDataRoot() => s_persistentRoot;
|
||||||
|
|
||||||
|
public static RomLib GetRomLib(RomPlatformType platform)
|
||||||
|
{
|
||||||
|
return s_romLibs[platform];
|
||||||
|
}
|
||||||
|
|
||||||
public static void Init(bool isTest = false, string testSrvIP = "", bool bUseLocalWebApi = false, string mLocalWebApi = "")
|
public static void Init(bool isTest = false, string testSrvIP = "", bool bUseLocalWebApi = false, string mLocalWebApi = "")
|
||||||
{
|
{
|
||||||
log = new LogManager(OnLogOut);
|
log = new LogManager(OnLogOut);
|
||||||
@ -81,7 +85,14 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
httpAPI = new HttpAPI();
|
httpAPI = new HttpAPI();
|
||||||
if (bUseLocalWebApi)
|
if (bUseLocalWebApi)
|
||||||
httpAPI.WebHost = mLocalWebApi;
|
httpAPI.WebHost = mLocalWebApi;
|
||||||
nesRomLib = new RomLib(RomPlatformType.Nes);
|
|
||||||
|
foreach (RomPlatformType plat in Enum.GetValues(typeof(RomPlatformType)))
|
||||||
|
{
|
||||||
|
if (plat == RomPlatformType.All || plat == RomPlatformType.Invalid) continue;
|
||||||
|
|
||||||
|
s_romLibs[plat] = new RomLib(plat);
|
||||||
|
}
|
||||||
|
|
||||||
starRomLib = new RomLib();
|
starRomLib = new RomLib();
|
||||||
CacheMgr = new CacheManager();
|
CacheMgr = new CacheManager();
|
||||||
roomMgr = new AppRoom();
|
roomMgr = new AppRoom();
|
||||||
@ -121,6 +132,7 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static IEnumerator AppTickFlow()
|
private static IEnumerator AppTickFlow()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
@ -211,7 +223,7 @@ namespace AxibugEmuOnline.Client.ClientCore
|
|||||||
|
|
||||||
private static void Tick()
|
private static void Tick()
|
||||||
{
|
{
|
||||||
nesRomLib.ExecuteFetchRomInfo();
|
foreach (var romLib in s_romLibs.Values) romLib.ExecuteFetchRomInfo();
|
||||||
starRomLib.ExecuteFetchRomInfo();
|
starRomLib.ExecuteFetchRomInfo();
|
||||||
|
|
||||||
gamePadMgr.Update();
|
gamePadMgr.Update();
|
||||||
|
|||||||
@ -32,7 +32,7 @@ namespace AxibugEmuOnline.Client.Manager
|
|||||||
if (!m_emuCore.IsNull()) StopGame();
|
if (!m_emuCore.IsNull()) StopGame();
|
||||||
|
|
||||||
var roomInfo = App.roomMgr.mineRoomMiniInfo;
|
var roomInfo = App.roomMgr.mineRoomMiniInfo;
|
||||||
roomInfo.FetchRomFileInRoomInfo(RomPlatformType.Nes, (_, romFile) =>
|
roomInfo.FetchRomFileInRoomInfo((_, romFile) =>
|
||||||
{
|
{
|
||||||
if (!romFile.RomReady) //这个rom并没有下载,所以取消进入房间
|
if (!romFile.RomReady) //这个rom并没有下载,所以取消进入房间
|
||||||
{
|
{
|
||||||
|
|||||||
@ -282,7 +282,8 @@ namespace AxibugEmuOnline.Client
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否收藏
|
/// 是否收藏
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int isStar;
|
public int isStar;
|
||||||
|
public List<int> parentRomIdsList;
|
||||||
}
|
}
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class Resp_CheckStandInfo
|
public class Resp_CheckStandInfo
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using AxibugProtobuf;
|
|||||||
using ICSharpCode.SharpZipLib.Zip;
|
using ICSharpCode.SharpZipLib.Zip;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -13,41 +14,103 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
private HttpAPI.Resp_RomInfo webData;
|
private HttpAPI.Resp_RomInfo webData;
|
||||||
private bool hasLocalFile;
|
private bool hasLocalFile;
|
||||||
//private UnityWebRequest downloadRequest;
|
|
||||||
private AxiHttpProxy.SendDownLoadProxy downloadRequest;
|
private AxiHttpProxy.SendDownLoadProxy downloadRequest;
|
||||||
|
/// <summary> 依赖的Rom文件 </summary>
|
||||||
|
private List<RomFile> dependencies = new List<RomFile>();
|
||||||
|
|
||||||
public bool IsUserRom { get; private set; }
|
/// <summary> 指示该Rom是否是多文件Rom </summary>
|
||||||
|
public bool MultiFileRom
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
switch (Platform)
|
||||||
|
{
|
||||||
|
case RomPlatformType.Nes: return false;
|
||||||
|
case RomPlatformType.Cps1: return true;
|
||||||
|
default: throw new NotImplementedException($"未实现的平台{Platform}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary> 指示该Rom文件的存放路径 </summary>
|
/// <summary> 指示该Rom文件的存放路径 </summary>
|
||||||
public string LocalFilePath =>
|
public string LocalFilePath => $"{App.PersistentDataPath(Platform)}/RemoteRoms/{FileName}";
|
||||||
IsUserRom ?
|
|
||||||
$"{App.PersistentDataPath(Platform)}/UserRoms/{FileName}" :
|
|
||||||
$"{App.PersistentDataPath(Platform)}/RemoteRoms/{FileName}";
|
|
||||||
|
|
||||||
/// <summary> 指示该Rom文件是否已下载完毕 </summary>
|
/// <summary> 指示该Rom文件是否已下载完毕 </summary>
|
||||||
public bool RomReady => hasLocalFile;
|
public bool RomReady
|
||||||
///// <summary> 指示是否正在下载Rom文件 </summary>
|
{
|
||||||
//public bool IsDownloading => downloadRequest != null && downloadRequest.result == UnityWebRequest.Result.InProgress;
|
get
|
||||||
//public float Progress => IsDownloading ? downloadRequest.downloadProgress : 0;
|
{
|
||||||
|
if (!hasLocalFile) return false;
|
||||||
|
|
||||||
|
foreach (var depRom in dependencies)
|
||||||
|
{
|
||||||
|
if (!depRom.RomReady) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
/// <summary> 指示是否正在下载Rom文件 </summary>
|
/// <summary> 指示是否正在下载Rom文件 </summary>
|
||||||
public bool IsDownloading => downloadRequest != null && !downloadRequest.downloadHandler.isDone;
|
public bool IsDownloading
|
||||||
public float Progress => IsDownloading ? downloadRequest.downloadHandler.DownLoadPr : 0;
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var selfDownloading = downloadRequest != null && !downloadRequest.downloadHandler.isDone;
|
||||||
|
if (selfDownloading) return true;
|
||||||
|
|
||||||
|
foreach (var depRom in dependencies)
|
||||||
|
{
|
||||||
|
if (depRom.IsDownloading) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public float Progress
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (!IsDownloading) return 0;
|
||||||
|
|
||||||
|
float total = 0f;
|
||||||
|
|
||||||
|
total += downloadRequest != null ? downloadRequest.downloadHandler.DownLoadPr : 0;
|
||||||
|
foreach (var depRom in dependencies)
|
||||||
|
{
|
||||||
|
total += depRom.Progress;
|
||||||
|
}
|
||||||
|
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public RomPlatformType Platform => webData != null ? (RomPlatformType)webData.ptype : RomPlatformType.Invalid;
|
public RomPlatformType Platform => webData != null ? (RomPlatformType)webData.ptype : RomPlatformType.Invalid;
|
||||||
/// <summary> 指示该Rom信息是否已填充 </summary>
|
/// <summary> 指示该Rom信息是否已填充 </summary>
|
||||||
public bool InfoReady => webData != null;
|
public bool InfoReady
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (webData == null) return false;
|
||||||
|
|
||||||
|
foreach (var depRom in dependencies)
|
||||||
|
{
|
||||||
|
if (!depRom.InfoReady) return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
/// <summary> 唯一标识 </summary>
|
/// <summary> 唯一标识 </summary>
|
||||||
public int ID => webData != null ? webData.id : -1;
|
public int ID => webData != null ? webData.id : -1;
|
||||||
/// <summary> 别名 </summary>
|
/// <summary> 别名 </summary>
|
||||||
public string Alias => IsUserRom ? Path.GetFileNameWithoutExtension(FileName) : webData.romName;
|
public string Alias => webData.romName;
|
||||||
/// <summary> 描述 </summary>
|
/// <summary> 描述 </summary>
|
||||||
public string Descript => IsUserRom ? string.Empty : webData.desc;
|
public string Descript => webData.desc;
|
||||||
/// <summary> 游戏类型 </summary>
|
/// <summary> 游戏类型 </summary>
|
||||||
public string GameTypeDes => IsUserRom ? string.Empty : webData.gType;
|
public string GameTypeDes => webData.gType;
|
||||||
/// <summary> 小图URL </summary>
|
/// <summary> 小图URL </summary>
|
||||||
public string ImageURL => IsUserRom ? string.Empty : webData.imgUrl;
|
public string ImageURL => webData.imgUrl;
|
||||||
|
|
||||||
/// <summary> 文件名 </summary>
|
/// <summary> 文件名 </summary>
|
||||||
public string FileName { get; private set; }
|
public string FileName { get; private set; }
|
||||||
@ -81,25 +144,67 @@ namespace AxibugEmuOnline.Client
|
|||||||
if (RomReady) return;
|
if (RomReady) return;
|
||||||
if (IsDownloading) return;
|
if (IsDownloading) return;
|
||||||
|
|
||||||
|
//检查依赖Rom的下载情况
|
||||||
|
|
||||||
App.StartCoroutine(DownloadRemoteRom((bytes) =>
|
App.StartCoroutine(DownloadRemoteRom((bytes) =>
|
||||||
{
|
{
|
||||||
if (bytes != null)
|
HandleRomFilePostProcess(bytes);
|
||||||
{
|
|
||||||
var directPath = Path.GetDirectoryName(LocalFilePath);
|
|
||||||
Directory.CreateDirectory(directPath);
|
|
||||||
|
|
||||||
File.WriteAllBytes(LocalFilePath, bytes);
|
|
||||||
hasLocalFile = true;
|
|
||||||
|
|
||||||
Eventer.Instance.PostEvent(EEvent.OnRomFileDownloaded, ID);
|
|
||||||
}
|
|
||||||
OnDownloadOver?.Invoke(this);
|
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void HandleRomFilePostProcess(byte[] bytes)
|
||||||
|
{
|
||||||
|
if (bytes == null) return;
|
||||||
|
|
||||||
|
if (MultiFileRom)
|
||||||
|
{
|
||||||
|
Dictionary<string, byte[]> unzipFiles = new Dictionary<string, byte[]>();
|
||||||
|
//多rom文件的平台,下载下来的数据直接解压放入文件夹内
|
||||||
|
var zip = new ZipInputStream(new MemoryStream(bytes));
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
var currentEntry = zip.GetNextEntry();
|
||||||
|
if (currentEntry == null) break;
|
||||||
|
|
||||||
|
if (currentEntry.IsDirectory) continue;
|
||||||
|
|
||||||
|
var buffer = new byte[1024];
|
||||||
|
MemoryStream output = new MemoryStream();
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
var size = zip.Read(buffer, 0, buffer.Length);
|
||||||
|
if (size == 0) break;
|
||||||
|
else output.Write(buffer, 0, size);
|
||||||
|
}
|
||||||
|
output.Flush();
|
||||||
|
unzipFiles[$"{LocalFilePath}/{currentEntry.Name}"] = output.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var item in unzipFiles)
|
||||||
|
{
|
||||||
|
var path = item.Key;
|
||||||
|
var data = item.Value;
|
||||||
|
File.WriteAllBytes(path, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var directPath = Path.GetDirectoryName(LocalFilePath);
|
||||||
|
Directory.CreateDirectory(directPath);
|
||||||
|
|
||||||
|
File.WriteAllBytes(LocalFilePath, bytes);
|
||||||
|
hasLocalFile = true;
|
||||||
|
|
||||||
|
Eventer.Instance.PostEvent(EEvent.OnRomFileDownloaded, ID);
|
||||||
|
}
|
||||||
|
OnDownloadOver?.Invoke(this);
|
||||||
|
}
|
||||||
|
|
||||||
public byte[] GetRomFileData()
|
public byte[] GetRomFileData()
|
||||||
{
|
{
|
||||||
if (!IsUserRom && webData == null) throw new Exception("Not Valid Rom");
|
Debug.Assert(!MultiFileRom, "仅供单文件Rom使用的接口");
|
||||||
|
|
||||||
|
if (webData == null) throw new Exception("Not Valid Rom");
|
||||||
if (!RomReady) throw new Exception("Rom File Not Downloaded");
|
if (!RomReady) throw new Exception("Rom File Not Downloaded");
|
||||||
|
|
||||||
var bytes = File.ReadAllBytes(LocalFilePath);
|
var bytes = File.ReadAllBytes(LocalFilePath);
|
||||||
@ -146,50 +251,45 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
var request = downloadRequest;
|
var request = downloadRequest;
|
||||||
downloadRequest = null;
|
downloadRequest = null;
|
||||||
|
|
||||||
if (!request.downloadHandler.bHadErr)
|
if (!request.downloadHandler.bHadErr)
|
||||||
callback(request.downloadHandler.data);
|
callback(request.downloadHandler.data);
|
||||||
else
|
else
|
||||||
callback(null);
|
callback(null);
|
||||||
|
|
||||||
//downloadRequest = UnityWebRequest.Get($"{App.httpAPI.WebHost}/{webData.url}");
|
|
||||||
//yield return downloadRequest.SendWebRequest();
|
|
||||||
|
|
||||||
//var request = downloadRequest;
|
|
||||||
//downloadRequest = null;
|
|
||||||
|
|
||||||
//if (request.result != UnityWebRequest.Result.Success)
|
|
||||||
//{
|
|
||||||
// callback(null);
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// callback(request.downloadHandler.data);
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetWebData(HttpAPI.Resp_RomInfo resp_RomInfo)
|
public void SetWebData(HttpAPI.Resp_RomInfo resp_RomInfo)
|
||||||
{
|
{
|
||||||
webData = resp_RomInfo;
|
webData = resp_RomInfo;
|
||||||
FileName = Path.GetFileName(webData.url);
|
FileName = MultiFileRom ? Path.GetFileNameWithoutExtension(webData.url) : Path.GetFileName(webData.url);
|
||||||
FileName = System.Net.WebUtility.UrlDecode(FileName);
|
FileName = System.Net.WebUtility.UrlDecode(FileName);
|
||||||
|
|
||||||
if (File.Exists(LocalFilePath))
|
if (MultiFileRom)
|
||||||
{
|
hasLocalFile = Directory.Exists(LocalFilePath);
|
||||||
var fileBytes = File.ReadAllBytes(LocalFilePath);
|
else
|
||||||
var localHash = RomLib.CalcHash(fileBytes);
|
hasLocalFile = File.Exists(LocalFilePath);
|
||||||
|
|
||||||
hasLocalFile = localHash == webData.hash;
|
//收集依赖Rom
|
||||||
if (!hasLocalFile)
|
if (webData.parentRomIdsList != null)
|
||||||
File.Delete(LocalFilePath);
|
{
|
||||||
}
|
foreach (var romID in webData.parentRomIdsList)
|
||||||
else
|
{
|
||||||
{
|
var romFile = new RomFile(Index, Page);
|
||||||
hasLocalFile = false;
|
dependencies.Add(romFile);
|
||||||
|
App.StartCoroutine(App.httpAPI.GetRomInfo(romID, (romInfo) =>
|
||||||
|
{
|
||||||
|
romFile.SetWebData(romInfo);
|
||||||
|
}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OnInfoFilled?.Invoke();
|
App.StartCoroutine(WaitInfoReady());
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerator WaitInfoReady()
|
||||||
|
{
|
||||||
|
while (!InfoReady) yield return null;
|
||||||
|
|
||||||
|
OnInfoFilled?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
|
using AxibugProtobuf;
|
||||||
using AxiReplay;
|
using AxiReplay;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@ -20,7 +21,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var romFile = App.nesRomLib.GetRomFile(fname);
|
var romFile = App.GetRomLib(RomPlatformType.Nes).GetRomFile(fname);
|
||||||
var bytes = romFile.GetRomFileData();
|
var bytes = romFile.GetRomFileData();
|
||||||
Debug.Log($"Open {romFile.Alias}");
|
Debug.Log($"Open {romFile.Alias}");
|
||||||
return new MemoryStream(bytes);
|
return new MemoryStream(bytes);
|
||||||
@ -34,7 +35,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public void GetRomPathInfo(string fname, out string fullPath, out string directPath)
|
public void GetRomPathInfo(string fname, out string fullPath, out string directPath)
|
||||||
{
|
{
|
||||||
var romFile = App.nesRomLib.GetRomFile(fname);
|
var romFile = App.GetRomLib(RomPlatformType.Nes).GetRomFile(fname);
|
||||||
UnityEngine.Debug.Assert(romFile != null);
|
UnityEngine.Debug.Assert(romFile != null);
|
||||||
|
|
||||||
fullPath = romFile.LocalFilePath;
|
fullPath = romFile.LocalFilePath;
|
||||||
|
|||||||
@ -70,7 +70,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
Supporter.Setup(m_coreSupporter);
|
Supporter.Setup(m_coreSupporter);
|
||||||
Debuger.Setup(new CoreDebuger());
|
Debuger.Setup(new CoreDebuger());
|
||||||
|
|
||||||
App.nesRomLib.AddRomFile(rom);
|
App.GetRomLib(RomPlatformType.Nes).AddRomFile(rom);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@ -157,15 +157,16 @@ namespace AxibugProtobuf {
|
|||||||
"bBAFEhQKEFN3aXRjaFByb0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxIS",
|
"bBAFEhQKEFN3aXRjaFByb0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxIS",
|
||||||
"Cg5YQk9YMzYwQ29udHJvbBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNW",
|
"Cg5YQk9YMzYwQ29udHJvbBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNW",
|
||||||
"aXRhQ29udHJvbBAKEhIKDldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3Rl",
|
"aXRhQ29udHJvbBAKEhIKDldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3Rl",
|
||||||
"Q29udHJvbBAMEhYKEk5pbnRlbmRvM0RTQ29udHJvbBANKqIBCg9Sb21QbGF0",
|
"Q29udHJvbBAMEhYKEk5pbnRlbmRvM0RTQ29udHJvbBANKssBCg9Sb21QbGF0",
|
||||||
"Zm9ybVR5cGUSCwoHSW52YWxpZBAAEgcKA05lcxABEhEKDU1hc3Rlcl9TeXN0",
|
"Zm9ybVR5cGUSCwoHSW52YWxpZBAAEgcKA05lcxABEhEKDU1hc3Rlcl9TeXN0",
|
||||||
"ZW0QAhINCglHYW1lX0dlYXIQAxIMCghHYW1lX0JveRAEEhIKDkdhbWVfQm95",
|
"ZW0QAhINCglHYW1lX0dlYXIQAxIMCghHYW1lX0JveRAEEhIKDkdhbWVfQm95",
|
||||||
"X0NvbG9yEAUSEQoNQ29sZWNvX1Zpc2lvbhAGEgsKB1NDXzMwMDAQBxILCgdT",
|
"X0NvbG9yEAUSEQoNQ29sZWNvX1Zpc2lvbhAGEgsKB1NDXzMwMDAQBxILCgdT",
|
||||||
"R18xMDAwEAgSCAoDQWxsEOcHKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9uZV9H",
|
"R18xMDAwEAgSCgoGTkVPR0VPEBQSBwoDSUdTEBUSCAoEQ1BTMRAWEggKBENQ",
|
||||||
"YW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQAhIN",
|
"UzIQFxIICgNBbGwQ5wcqcAoNUm9vbUdhbWVTdGF0ZRISCg5Ob25lX0dhbWVT",
|
||||||
"CglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAFKk4K",
|
"dGF0ZRAAEgwKCE9ubHlIb3N0EAESEQoNV2FpdFJhd1VwZGF0ZRACEg0KCVdh",
|
||||||
"EUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jhc2VE",
|
"aXRSZWFkeRADEgkKBVBhdXNlEAQSEAoMSW5PbmxpbmVHYW1lEAUqTgoRTG9n",
|
||||||
"ZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90bzM="));
|
"aW5SZXN1bHRTdGF0dXMSIQodTG9naW5SZXN1bHRTdGF0dXNfQmFzZURlZmF1",
|
||||||
|
"bHQQABIGCgJPSxABEg4KCkFjY291bnRFcnIQAkICSAFiBnByb3RvMw=="));
|
||||||
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
|
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
|
||||||
new pbr::FileDescriptor[] { },
|
new pbr::FileDescriptor[] { },
|
||||||
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.GamePadType), typeof(global::AxibugProtobuf.RomPlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] {
|
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.GamePadType), typeof(global::AxibugProtobuf.RomPlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] {
|
||||||
@ -473,6 +474,10 @@ namespace AxibugProtobuf {
|
|||||||
[pbr::OriginalName("Coleco_Vision")] ColecoVision = 6,
|
[pbr::OriginalName("Coleco_Vision")] ColecoVision = 6,
|
||||||
[pbr::OriginalName("SC_3000")] Sc3000 = 7,
|
[pbr::OriginalName("SC_3000")] Sc3000 = 7,
|
||||||
[pbr::OriginalName("SG_1000")] Sg1000 = 8,
|
[pbr::OriginalName("SG_1000")] Sg1000 = 8,
|
||||||
|
[pbr::OriginalName("NEOGEO")] Neogeo = 20,
|
||||||
|
[pbr::OriginalName("IGS")] Igs = 21,
|
||||||
|
[pbr::OriginalName("CPS1")] Cps1 = 22,
|
||||||
|
[pbr::OriginalName("CPS2")] Cps2 = 23,
|
||||||
[pbr::OriginalName("All")] All = 999,
|
[pbr::OriginalName("All")] All = 999,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using AxibugEmuOnline.Client.Event;
|
using AxibugEmuOnline.Client.Event;
|
||||||
using AxibugEmuOnline.Client.UI;
|
using AxibugEmuOnline.Client.UI;
|
||||||
|
using AxibugProtobuf;
|
||||||
using Coffee.UIExtensions;
|
using Coffee.UIExtensions;
|
||||||
using System;
|
using System;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
@ -35,7 +36,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
public int RomID { get { return m_romfile != null && m_romfile.InfoReady ? m_romfile.ID : -1; } }
|
public int RomID { get { return m_romfile != null && m_romfile.InfoReady ? m_romfile.ID : -1; } }
|
||||||
|
|
||||||
private RomLib m_romlib => App.nesRomLib;
|
private RomLib m_romlib => App.GetRomLib(m_romfile.Platform);
|
||||||
|
|
||||||
public bool RomInfoReady => m_romfile != null && m_romfile.InfoReady;
|
public bool RomInfoReady => m_romfile != null && m_romfile.InfoReady;
|
||||||
|
|
||||||
|
|||||||
@ -17,16 +17,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (StarRom) return App.starRomLib;
|
if (StarRom) return App.starRomLib;
|
||||||
else
|
else return App.GetRomLib(Platform);
|
||||||
{
|
|
||||||
switch (Platform)
|
|
||||||
{
|
|
||||||
case RomPlatformType.Nes:
|
|
||||||
return App.nesRomLib;
|
|
||||||
default:
|
|
||||||
throw new System.NotImplementedException($"未实现的平台 {Platform}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -95,7 +95,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
SetBaseInfo("--", $"<b>{hostNick}</b>的房间", $"{cur}/{max}");
|
SetBaseInfo("--", $"<b>{hostNick}</b>的房间", $"{cur}/{max}");
|
||||||
SetIcon(null);
|
SetIcon(null);
|
||||||
|
|
||||||
roomInfo.FetchRomFileInRoomInfo(roomInfo.GamePlatformType, (room, romFile) =>
|
roomInfo.FetchRomFileInRoomInfo((room, romFile) =>
|
||||||
{
|
{
|
||||||
if (room.RoomID != RoomID) return;
|
if (room.RoomID != RoomID) return;
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Dictionary<int, RomFile> s_RomFileCahcesInRoomInfo = new Dictionary<int, RomFile>();
|
private static Dictionary<int, RomFile> s_RomFileCahcesInRoomInfo = new Dictionary<int, RomFile>();
|
||||||
public static void FetchRomFileInRoomInfo(this Protobuf_Room_MiniInfo roomInfo, RomPlatformType platform, Action<Protobuf_Room_MiniInfo, RomFile> callback)
|
public static void FetchRomFileInRoomInfo(this Protobuf_Room_MiniInfo roomInfo, Action<Protobuf_Room_MiniInfo, RomFile> callback)
|
||||||
{
|
{
|
||||||
RomFile romFile;
|
RomFile romFile;
|
||||||
|
|
||||||
@ -42,20 +42,16 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
callback.Invoke(roomInfo, romFile);
|
callback.Invoke(roomInfo, romFile);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (platform)
|
|
||||||
{
|
App.StartCoroutine(App.httpAPI.GetRomInfo(roomInfo.GameRomID, (romWebData) =>
|
||||||
case RomPlatformType.Nes:
|
{
|
||||||
App.StartCoroutine(App.httpAPI.GetRomInfo(roomInfo.GameRomID, (romWebData) =>
|
RomFile _romFile = new RomFile(0, 0);
|
||||||
{
|
_romFile.SetWebData(romWebData);
|
||||||
RomFile _romFile = new RomFile(0, 0);
|
s_RomFileCahcesInRoomInfo[roomInfo.GameRomID] = _romFile;
|
||||||
_romFile.SetWebData(romWebData);
|
|
||||||
s_RomFileCahcesInRoomInfo[roomInfo.GameRomID] = _romFile;
|
callback.Invoke(roomInfo, _romFile);
|
||||||
|
}));
|
||||||
callback.Invoke(roomInfo, _romFile);
|
|
||||||
}));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,7 @@ using AxibugEmuOnline.Web.Common;
|
|||||||
using AxibugProtobuf;
|
using AxibugProtobuf;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using MySql.Data.MySqlClient;
|
using MySql.Data.MySqlClient;
|
||||||
using Mysqlx.Crud;
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
using System.Reflection.PortableExecutable;
|
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Web.Controllers
|
namespace AxibugEmuOnline.Web.Controllers
|
||||||
{
|
{
|
||||||
@ -16,7 +15,7 @@ namespace AxibugEmuOnline.Web.Controllers
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool TryDecrypToken(string tokenStr,out Protobuf_Token_Struct tokenData)
|
static bool TryDecrypToken(string tokenStr, out Protobuf_Token_Struct tokenData)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(tokenStr) || string.IsNullOrEmpty(tokenStr.Trim()))
|
if (string.IsNullOrEmpty(tokenStr) || string.IsNullOrEmpty(tokenStr.Trim()))
|
||||||
{
|
{
|
||||||
@ -53,7 +52,7 @@ namespace AxibugEmuOnline.Web.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public JsonResult RomList(string SearchKey, int Ptype, int GType, int Page, int PageSize,string Token)
|
public JsonResult RomList(string SearchKey, int Ptype, int GType, int Page, int PageSize, string Token)
|
||||||
{
|
{
|
||||||
long UID = 0;
|
long UID = 0;
|
||||||
if (TryDecrypToken(Token, out Protobuf_Token_Struct tokenData))
|
if (TryDecrypToken(Token, out Protobuf_Token_Struct tokenData))
|
||||||
@ -99,7 +98,10 @@ namespace AxibugEmuOnline.Web.Controllers
|
|||||||
{
|
{
|
||||||
resp.resultAllCount = reader.GetInt32(0);
|
resp.resultAllCount = reader.GetInt32(0);
|
||||||
resp.page = Page;
|
resp.page = Page;
|
||||||
resp.maxPage = (int)Math.Ceiling((float)resp.resultAllCount / PageSize);
|
if (PageSize > 0)
|
||||||
|
resp.maxPage = (int)Math.Ceiling((float)resp.resultAllCount / PageSize);
|
||||||
|
else
|
||||||
|
resp.maxPage = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,7 +109,7 @@ namespace AxibugEmuOnline.Web.Controllers
|
|||||||
|
|
||||||
string HotOrderBy = "ORDER BY playcount DESC, id ASC";
|
string HotOrderBy = "ORDER BY playcount DESC, id ASC";
|
||||||
|
|
||||||
query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType` FROM romlist where `Name` like ?searchPattern {platformCond} {GameTypeCond} {HotOrderBy} LIMIT ?offset, ?pageSize;";
|
query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType`,`parentids` FROM romlist where `Name` like ?searchPattern {platformCond} {GameTypeCond} {HotOrderBy} LIMIT ?offset, ?pageSize;";
|
||||||
using (var command = new MySqlCommand(query, conn))
|
using (var command = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
// 设置参数值
|
// 设置参数值
|
||||||
@ -134,7 +136,15 @@ namespace AxibugEmuOnline.Web.Controllers
|
|||||||
stars = reader.GetInt32(8),
|
stars = reader.GetInt32(8),
|
||||||
ptype = reader.GetInt32(9),
|
ptype = reader.GetInt32(9),
|
||||||
};
|
};
|
||||||
|
string parentsStr = !reader.IsDBNull(10) ? reader.GetString(10) : string.Empty;
|
||||||
|
if (!string.IsNullOrEmpty(parentsStr))
|
||||||
|
{
|
||||||
|
int[] arr = Array.ConvertAll(parentsStr.Split(',', StringSplitOptions.RemoveEmptyEntries), s => int.Parse(s));
|
||||||
|
for (int i = 0; i < arr.Length; i++)
|
||||||
|
{
|
||||||
|
data.parentRomIdsList.Add(arr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (UID > 0)
|
if (UID > 0)
|
||||||
{
|
{
|
||||||
if (CheckIsRomStar(data.id, UID))
|
if (CheckIsRomStar(data.id, UID))
|
||||||
@ -199,7 +209,10 @@ namespace AxibugEmuOnline.Web.Controllers
|
|||||||
{
|
{
|
||||||
resp.resultAllCount = reader.GetInt32(0);
|
resp.resultAllCount = reader.GetInt32(0);
|
||||||
resp.page = Page;
|
resp.page = Page;
|
||||||
resp.maxPage = (int)Math.Ceiling((float)resp.resultAllCount / PageSize);
|
if (PageSize > 0)
|
||||||
|
resp.maxPage = (int)Math.Ceiling((float)resp.resultAllCount / PageSize);
|
||||||
|
else
|
||||||
|
resp.maxPage = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -207,7 +220,7 @@ namespace AxibugEmuOnline.Web.Controllers
|
|||||||
|
|
||||||
string HotOrderBy = "ORDER BY playcount DESC, id ASC";
|
string HotOrderBy = "ORDER BY playcount DESC, id ASC";
|
||||||
|
|
||||||
query = @$"SELECT romlist.id,romlist.`Name`,romlist.GameType,romlist.Note,romlist.RomUrl,romlist.ImgUrl,romlist.`Hash`,romlist.`playcount`,romlist.`stars`,romlist.`PlatformType`
|
query = @$"SELECT romlist.id,romlist.`Name`,romlist.GameType,romlist.Note,romlist.RomUrl,romlist.ImgUrl,romlist.`Hash`,romlist.`playcount`,romlist.`stars`,romlist.`PlatformType` ,mlist.`parentids`
|
||||||
from rom_stars
|
from rom_stars
|
||||||
LEFT JOIN romlist on romlist.Id = rom_stars.romid
|
LEFT JOIN romlist on romlist.Id = rom_stars.romid
|
||||||
where rom_stars.uid = ?uid
|
where rom_stars.uid = ?uid
|
||||||
@ -240,6 +253,15 @@ LIMIT ?offset, ?pageSize;";
|
|||||||
stars = reader.GetInt32(8),
|
stars = reader.GetInt32(8),
|
||||||
ptype = reader.GetInt32(9),
|
ptype = reader.GetInt32(9),
|
||||||
};
|
};
|
||||||
|
string parentsStr = !reader.IsDBNull(10) ? reader.GetString(10) : string.Empty;
|
||||||
|
if (!string.IsNullOrEmpty(parentsStr))
|
||||||
|
{
|
||||||
|
int[] arr = Array.ConvertAll(parentsStr.Split(',', StringSplitOptions.RemoveEmptyEntries), s => int.Parse(s));
|
||||||
|
for (int i = 0; i < arr.Length; i++)
|
||||||
|
{
|
||||||
|
data.parentRomIdsList.Add(arr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//毕竟都是已经收藏了的
|
//毕竟都是已经收藏了的
|
||||||
data.isStar = 1;
|
data.isStar = 1;
|
||||||
@ -266,7 +288,7 @@ LIMIT ?offset, ?pageSize;";
|
|||||||
Resp_RomInfo resp = new Resp_RomInfo();
|
Resp_RomInfo resp = new Resp_RomInfo();
|
||||||
MySqlConnection conn = SQLPool.DequeueSQLConn("NesRomList");
|
MySqlConnection conn = SQLPool.DequeueSQLConn("NesRomList");
|
||||||
{
|
{
|
||||||
string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType` FROM romlist where id = ?romid;";
|
string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType`,mlist.`parentids` FROM romlist where id = ?romid;";
|
||||||
using (var command = new MySqlCommand(query, conn))
|
using (var command = new MySqlCommand(query, conn))
|
||||||
{
|
{
|
||||||
// 设置参数值
|
// 设置参数值
|
||||||
@ -286,6 +308,15 @@ LIMIT ?offset, ?pageSize;";
|
|||||||
resp.playcount = reader.GetInt32(7);
|
resp.playcount = reader.GetInt32(7);
|
||||||
resp.stars = reader.GetInt32(8);
|
resp.stars = reader.GetInt32(8);
|
||||||
resp.ptype = reader.GetInt32(9);
|
resp.ptype = reader.GetInt32(9);
|
||||||
|
string parentsStr = !reader.IsDBNull(10) ? reader.GetString(10) : string.Empty;
|
||||||
|
if (!string.IsNullOrEmpty(parentsStr))
|
||||||
|
{
|
||||||
|
int[] arr = Array.ConvertAll(parentsStr.Split(',', StringSplitOptions.RemoveEmptyEntries), s => int.Parse(s));
|
||||||
|
for (int i = 0; i < arr.Length; i++)
|
||||||
|
{
|
||||||
|
resp.parentRomIdsList.Add(arr[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -388,7 +419,7 @@ LIMIT ?offset, ?pageSize;";
|
|||||||
public int stars { get; set; }
|
public int stars { get; set; }
|
||||||
public int playcount { get; set; }
|
public int playcount { get; set; }
|
||||||
public int isStar { get; set; }
|
public int isStar { get; set; }
|
||||||
|
public List<int> parentRomIdsList { get; set; } = new List<int>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -157,15 +157,16 @@ namespace AxibugProtobuf {
|
|||||||
"bBAFEhQKEFN3aXRjaFByb0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxIS",
|
"bBAFEhQKEFN3aXRjaFByb0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxIS",
|
||||||
"Cg5YQk9YMzYwQ29udHJvbBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNW",
|
"Cg5YQk9YMzYwQ29udHJvbBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNW",
|
||||||
"aXRhQ29udHJvbBAKEhIKDldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3Rl",
|
"aXRhQ29udHJvbBAKEhIKDldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3Rl",
|
||||||
"Q29udHJvbBAMEhYKEk5pbnRlbmRvM0RTQ29udHJvbBANKqIBCg9Sb21QbGF0",
|
"Q29udHJvbBAMEhYKEk5pbnRlbmRvM0RTQ29udHJvbBANKssBCg9Sb21QbGF0",
|
||||||
"Zm9ybVR5cGUSCwoHSW52YWxpZBAAEgcKA05lcxABEhEKDU1hc3Rlcl9TeXN0",
|
"Zm9ybVR5cGUSCwoHSW52YWxpZBAAEgcKA05lcxABEhEKDU1hc3Rlcl9TeXN0",
|
||||||
"ZW0QAhINCglHYW1lX0dlYXIQAxIMCghHYW1lX0JveRAEEhIKDkdhbWVfQm95",
|
"ZW0QAhINCglHYW1lX0dlYXIQAxIMCghHYW1lX0JveRAEEhIKDkdhbWVfQm95",
|
||||||
"X0NvbG9yEAUSEQoNQ29sZWNvX1Zpc2lvbhAGEgsKB1NDXzMwMDAQBxILCgdT",
|
"X0NvbG9yEAUSEQoNQ29sZWNvX1Zpc2lvbhAGEgsKB1NDXzMwMDAQBxILCgdT",
|
||||||
"R18xMDAwEAgSCAoDQWxsEOcHKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9uZV9H",
|
"R18xMDAwEAgSCgoGTkVPR0VPEBQSBwoDSUdTEBUSCAoEQ1BTMRAWEggKBENQ",
|
||||||
"YW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQAhIN",
|
"UzIQFxIICgNBbGwQ5wcqcAoNUm9vbUdhbWVTdGF0ZRISCg5Ob25lX0dhbWVT",
|
||||||
"CglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAFKk4K",
|
"dGF0ZRAAEgwKCE9ubHlIb3N0EAESEQoNV2FpdFJhd1VwZGF0ZRACEg0KCVdh",
|
||||||
"EUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jhc2VE",
|
"aXRSZWFkeRADEgkKBVBhdXNlEAQSEAoMSW5PbmxpbmVHYW1lEAUqTgoRTG9n",
|
||||||
"ZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90bzM="));
|
"aW5SZXN1bHRTdGF0dXMSIQodTG9naW5SZXN1bHRTdGF0dXNfQmFzZURlZmF1",
|
||||||
|
"bHQQABIGCgJPSxABEg4KCkFjY291bnRFcnIQAkICSAFiBnByb3RvMw=="));
|
||||||
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
|
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
|
||||||
new pbr::FileDescriptor[] { },
|
new pbr::FileDescriptor[] { },
|
||||||
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.GamePadType), typeof(global::AxibugProtobuf.RomPlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] {
|
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::AxibugProtobuf.CommandID), typeof(global::AxibugProtobuf.ErrorCode), typeof(global::AxibugProtobuf.LoginType), typeof(global::AxibugProtobuf.DeviceType), typeof(global::AxibugProtobuf.GamePadType), typeof(global::AxibugProtobuf.RomPlatformType), typeof(global::AxibugProtobuf.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] {
|
||||||
@ -473,6 +474,10 @@ namespace AxibugProtobuf {
|
|||||||
[pbr::OriginalName("Coleco_Vision")] ColecoVision = 6,
|
[pbr::OriginalName("Coleco_Vision")] ColecoVision = 6,
|
||||||
[pbr::OriginalName("SC_3000")] Sc3000 = 7,
|
[pbr::OriginalName("SC_3000")] Sc3000 = 7,
|
||||||
[pbr::OriginalName("SG_1000")] Sg1000 = 8,
|
[pbr::OriginalName("SG_1000")] Sg1000 = 8,
|
||||||
|
[pbr::OriginalName("NEOGEO")] Neogeo = 20,
|
||||||
|
[pbr::OriginalName("IGS")] Igs = 21,
|
||||||
|
[pbr::OriginalName("CPS1")] Cps1 = 22,
|
||||||
|
[pbr::OriginalName("CPS2")] Cps2 = 23,
|
||||||
[pbr::OriginalName("All")] All = 999,
|
[pbr::OriginalName("All")] All = 999,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -143,6 +143,10 @@ enum RomPlatformType
|
|||||||
Coleco_Vision = 6;
|
Coleco_Vision = 6;
|
||||||
SC_3000 = 7;
|
SC_3000 = 7;
|
||||||
SG_1000 = 8;
|
SG_1000 = 8;
|
||||||
|
NEOGEO = 20;
|
||||||
|
IGS = 21;
|
||||||
|
CPS1 = 22;
|
||||||
|
CPS2 = 23;
|
||||||
All = 999;
|
All = 999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user