扩展为多平台rom选择(api,客户端逻辑,服务端统计)

This commit is contained in:
sin365 2025-01-07 10:51:12 +08:00
parent b4496486a8
commit c77684d89b
15 changed files with 278 additions and 466 deletions

View File

@ -18,13 +18,12 @@ namespace AxibugEmuOnline.Client.Manager
/// </summary>
/// <param name="RomID"></param>
/// <param name="Motion">[0]收藏[1]取消收藏</param>
public void SendGameStar(int RomID, PlatformType Platform, int Motion)
public void SendGameStar(int RomID, int Motion)
{
Protobuf_Game_Mark req = new Protobuf_Game_Mark()
{
State = Motion,
RomID = RomID,
PlatformType = Platform
};
App.log.Info($"LeavnRoom");
App.network.SendToServer((int)CommandID.CmdGameMark, ProtoBufHelper.Serizlize(req));
@ -37,7 +36,7 @@ namespace AxibugEmuOnline.Client.Manager
void RecvGameStar(byte[] reqData)
{
Protobuf_Game_Mark_RESP msg = ProtoBufHelper.DeSerizlize<Protobuf_Game_Mark_RESP>(reqData);
Eventer.Instance.PostEvent(EEvent.OnDoStars, msg.PlatformType, msg.RomID);
Eventer.Instance.PostEvent(EEvent.OnDoStars, msg.RomID);
}
}

View File

@ -1,4 +1,5 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugProtobuf;
using System;
using System.Collections;
using System.Collections.Generic;
@ -12,19 +13,19 @@ namespace AxibugEmuOnline.Client
public string WebHost = "http://emu.axibug.com";
public string WebSiteApi => WebHost + "/api";
public delegate void GetRomListAPI(Action<int, Resp_GameList> callback, int page, int pageSize = 10);
public delegate void SearchRomListAPI(Action<int, Resp_GameList> callback, string searchKey, int page, int pageSize = 10);
public delegate void GetRomListAPI(Action<int, Resp_GameList> callback, AxibugProtobuf.RomPlatformType Platform, int page, int pageSize = 10);
public delegate void SearchRomListAPI(Action<int, Resp_GameList> callback, AxibugProtobuf.RomPlatformType Platform, string searchKey, int page, int pageSize = 10);
public void GetNesRomList(Action<int, Resp_GameList> callback, int page, int pageSize = 10)
public void GetNesRomList(Action<int, Resp_GameList> callback, AxibugProtobuf.RomPlatformType platform, int page, int pageSize = 10)
{
App.StartCoroutine(GetNesRomListFlow(page, pageSize, callback));
App.StartCoroutine(GetRomListFlow(platform,page, pageSize, callback));
}
public void SearchNesRomList(Action<int, Resp_GameList> callback, string searchKey, int page, int pageSize = 10)
public void SearchNesRomList(Action<int, Resp_GameList> callback, AxibugProtobuf.RomPlatformType platform, string searchKey, int page, int pageSize = 10)
{
App.StartCoroutine(SearchNesRomListFlow(searchKey, page, pageSize, callback));
App.StartCoroutine(SearchNesRomListFlow(platform,searchKey, page, pageSize, callback));
}
private IEnumerator SearchNesRomListFlow(string searchKey, int page, int pageSize, Action<int, Resp_GameList> callback)
private IEnumerator SearchNesRomListFlow(AxibugProtobuf.RomPlatformType platform,string searchKey, int page, int pageSize, Action<int, Resp_GameList> callback)
{
if (!string.IsNullOrEmpty(searchKey))
{
@ -72,9 +73,9 @@ namespace AxibugEmuOnline.Client
}*/
}
private IEnumerator GetNesRomListFlow(int page, int pageSize, Action<int, Resp_GameList> callback)
private IEnumerator GetRomListFlow(AxibugProtobuf.RomPlatformType platform, int page, int pageSize, Action<int, Resp_GameList> callback)
{
string url = $"{WebSiteApi}/NesRomList?Page={page}&PageSize={pageSize}";
string url = $"{WebSiteApi}/RomList?Page={page}&PageSize={pageSize}&PType={(int)platform}";
App.log.Info($"GetRomList=>{url}");
AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get(url);
yield return request.SendWebRequest;
@ -106,10 +107,10 @@ namespace AxibugEmuOnline.Client
*/
}
public IEnumerator GetNesRomInfo(int RomID, Action<Resp_RomInfo> callback)
public IEnumerator GetRomInfo(int RomID, Action<Resp_RomInfo> callback)
{
AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get($"{WebSiteApi}/RomInfo?PType={PlatformType.Nes}&RomID={RomID}");
AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get($"{WebSiteApi}/RomInfo?RomID={RomID}");
yield return request.SendWebRequest;
if (!request.downloadHandler.isDone)
{
@ -140,12 +141,6 @@ namespace AxibugEmuOnline.Client
}
enum PlatformType : byte
{
All = 0,
Nes = 1,
}
enum GameType : byte
{
NONE = 0,
@ -180,8 +175,10 @@ namespace AxibugEmuOnline.Client
[Serializable]
public class Resp_RomInfo
{
public int orderid;
public int orderid;
public int id;
//TODO 后续根据ptype启动游戏时选择核心。和列表设计和UI分组解耦比如无视平台搜索列表收藏列表
public int ptype;
public string romName;
public string gType;
public string desc;

View File

@ -94,7 +94,10 @@ namespace AxibugEmuOnline.Client
SaveRomInfoFromWeb(romList);
callback.Invoke(nesRomFetchList);
}, 0, PAGE_SIZE);
},
//TODO 平台参数
AxibugProtobuf.RomPlatformType.Nes
, 0, PAGE_SIZE);
}
else
{
@ -117,7 +120,10 @@ namespace AxibugEmuOnline.Client
SaveRomInfoFromWeb(romList);
callback.Invoke(nesRomFetchList);
}, searchKey, 0, PAGE_SIZE);
},
//TODO 平台参数
AxibugProtobuf.RomPlatformType.Nes
, searchKey, 0, PAGE_SIZE);
}
}
@ -143,7 +149,10 @@ namespace AxibugEmuOnline.Client
{
FetchPageCmd.Remove(page);
SaveRomInfoFromWeb(resp);
}, lastSearchKey, pageNo, PAGE_SIZE);
},
//TODO 平台参数
AxibugProtobuf.RomPlatformType.Nes,
lastSearchKey, pageNo, PAGE_SIZE);
}
else
{
@ -151,7 +160,10 @@ namespace AxibugEmuOnline.Client
{
FetchPageCmd.Remove(page);
SaveRomInfoFromWeb(resp);
}, pageNo, PAGE_SIZE);
},
//TODO 平台参数
AxibugProtobuf.RomPlatformType.Nes,
pageNo, PAGE_SIZE);
}
}

View File

@ -99,53 +99,52 @@ namespace AxibugProtobuf {
"ZFRpbWVVcxgDIAEoAhIgChhBdWRpb0ZyYW1lUGxheU5lZWRUaW1lVXMYBCAB",
"KAIiKgoYUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuEg4KBlJvb21JRBgBIAEo",
"BSJTCh1Qcm90b2J1Zl9Sb29tX0dldF9TY3JlZW5fUkVTUBIOCgZSb29tSUQY",
"ASABKAUSDwoHRnJhbWVJRBgCIAEoBRIRCglSYXdCaXRtYXAYAyABKAwiZgoS",
"ASABKAUSDwoHRnJhbWVJRBgCIAEoBRIRCglSYXdCaXRtYXAYAyABKAwiMgoS",
"UHJvdG9idWZfR2FtZV9NYXJrEg0KBVJvbUlEGAEgASgFEg0KBXN0YXRlGAIg",
"ASgFEjIKDFBsYXRmb3JtVHlwZRgDIAEoDjIcLkF4aWJ1Z1Byb3RvYnVmLlBs",
"YXRmb3JtVHlwZSJcChdQcm90b2J1Zl9HYW1lX01hcmtfUkVTUBINCgVSb21J",
"RBgBIAEoBRIyCgxQbGF0Zm9ybVR5cGUYAiABKA4yHC5BeGlidWdQcm90b2J1",
"Zi5QbGF0Zm9ybVR5cGUqoQUKCUNvbW1hbmRJRBIOCgpDTURfREVGQVVMEAAS",
"DAoIQ01EX1BJTkcQARIMCghDTURfUE9ORxACEg4KCUNNRF9MT0dJThDRDxIY",
"ChNDTURfVVNFUl9PTkxJTkVMSVNUELgXEhIKDUNNRF9VU0VSX0pPSU4Q1xcS",
"EwoOQ01EX1VTRVJfTEVBVkUQ2BcSGgoVQ01EX1VTRVJfU1RBVEVfVVBEQVRF",
"ENkXEhgKE0NNRF9Nb2RpZnlfTmlja05hbWUQnRgSHAoXQ01EX1VwZGF0ZV9T",
"ZWxmVXNlckluZm8QphgSHQoYQ01EX1VwZGF0ZV9PdGhlclVzZXJJbmZvEKgY",
"EhAKC0NNRF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01E",
"X1Jvb21fTGlzdF9VcGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCT",
"JxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxIT",
"Cg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVf",
"Q2hhbmdlZBD2JxIhChxDTURfUm9vbV9DaGFuZ2VQbGF5ZXJXaXRoSm95EIoo",
"EhYKEUNNRF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5",
"ZXJfVXBkYXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5",
"ENgoEiAKG0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURf",
"Uk9PTV9TWU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1D",
"TURfR0FNRV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVM",
"EAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicK",
"I0VSUk9SX1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJS",
"T1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxS",
"RUFEWV9IQURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCU",
"AypACglMb2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBAB",
"EhQKEFVzZUhhb1l1ZUFjY291bnQQAiqlAQoKRGV2aWNlVHlwZRIWChJEZXZp",
"Y2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQ",
"AxIHCgNQU1YQBBIHCgNQUzMQBRIHCgNQUzQQBhILCgdYQk9YMzYwEAcSCwoH",
"WEJPWE9ORRAIEggKBFdpaVUQCRIPCgtOaW50ZW5kbzNEUxAKEhEKDUFuZHJv",
"aWRDYXJBcHAQCyqTAgoLR2FtZVBhZFR5cGUSDAoIS2V5Ym9hcmQQABIRCg1H",
"bG9iYWxHYW1lUGFkEAESDgoKVG91Y2hQYW5lbBACEg4KCkRTM0NvbnRyb2wQ",
"AxIOCgpEUzRDb250cm9sEAQSDgoKRFM1Q29udHJvbBAFEhQKEFN3aXRjaFBy",
"b0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxISCg5YQk9YMzYwQ29udHJv",
"bBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNWaXRhQ29udHJvbBAKEhIK",
"DldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3RlQ29udHJvbBAMEhYKEk5p",
"bnRlbmRvM0RTQ29udHJvbBANKmQKDFBsYXRmb3JtVHlwZRIHCgNBbGwQABIH",
"CgNOZXMQARIRCg1NYXN0ZXJfU3lzdGVtEAISDQoJR2FtZV9HZWFyEAMSDAoI",
"R2FtZV9Cb3kQBBISCg5HYW1lX0JveV9Db2xvchAFKnAKDVJvb21HYW1lU3Rh",
"dGUSEgoOTm9uZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRS",
"YXdVcGRhdGUQAhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25s",
"aW5lR2FtZRAFKk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0",
"U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJC",
"AkgBYgZwcm90bzM="));
"ASgFIigKF1Byb3RvYnVmX0dhbWVfTWFya19SRVNQEg0KBVJvbUlEGAEgASgF",
"KqEFCglDb21tYW5kSUQSDgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAES",
"DAoIQ01EX1BPTkcQAhIOCglDTURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05M",
"SU5FTElTVBC4FxISCg1DTURfVVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xF",
"QVZFENgXEhoKFUNNRF9VU0VSX1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9k",
"aWZ5X05pY2tOYW1lEJ0YEhwKF0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYY",
"Eh0KGENNRF9VcGRhdGVfT3RoZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1T",
"RxChHxISCg1DTURfUm9vbV9MaXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBk",
"YXRlEIonEhgKE0NNRF9Sb29tX0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21f",
"Q3JlYXRlEO0nEhIKDUNNRF9Sb29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVh",
"dmUQ8icSIgodQ01EX1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSIQoc",
"Q01EX1Jvb21fQ2hhbmdlUGxheWVyV2l0aEpveRCKKBIWChFDTURfUm9vbV9X",
"YWl0U3RlcBDRKBInCiJDTURfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRl",
"UmF3ENQoEhoKFUNNRF9Sb29tX1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9v",
"bV9TaW5nZWxfUGxheWVySW5wdXQQ+i4SHQoYQ01EX1JPT01fU1lOX1BsYXll",
"cklucHV0EP8uEg8KCkNNRF9TY3JlZW4Q2TYSEgoNQ01EX0dBTUVfTUFSSxD1",
"TirQAQoJRXJyb3JDb2RlEhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09L",
"EAESGAoURVJST1JfUk9PTV9OT1RfRk9VTkQQChInCiNFUlJPUl9ST09NX1NM",
"T1RfQUxSRUFETFlfSEFEX1BMQVlFUhALEiEKHUVSUk9SX1JPT01fQ0FOVF9E",
"T19DVVJSX1NUQVRFEDISHwoaRVJST1JfUk9NX0FMUkVBRFlfSEFEX1NUQVIQ",
"kwMSHAoXRVJST1JfUk9NX0RPTlRfSEFEX1NUQVIQlAMqQAoJTG9naW5UeXBl",
"Eg0KCVVzZURldmljZRAAEg4KClVzZUFjY291bnQQARIUChBVc2VIYW9ZdWVB",
"Y2NvdW50EAIqpQEKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0",
"EAASBgoCUEMQARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQSBwoD",
"UFMzEAUSBwoDUFM0EAYSCwoHWEJPWDM2MBAHEgsKB1hCT1hPTkUQCBIICgRX",
"aWlVEAkSDwoLTmludGVuZG8zRFMQChIRCg1BbmRyb2lkQ2FyQXBwEAsqkwIK",
"C0dhbWVQYWRUeXBlEgwKCEtleWJvYXJkEAASEQoNR2xvYmFsR2FtZVBhZBAB",
"Eg4KClRvdWNoUGFuZWwQAhIOCgpEUzNDb250cm9sEAMSDgoKRFM0Q29udHJv",
"bBAEEg4KCkRTNUNvbnRyb2wQBRIUChBTd2l0Y2hQcm9Db250cm9sEAYSEAoM",
"U3dpdGNoSm95Q29uEAcSEgoOWEJPWDM2MENvbnRyb2wQCBISCg5YQk9YT05F",
"Q29udHJvbBAJEhEKDVBTVml0YUNvbnRyb2wQChISCg5XaWlVUGFkQ29udHJv",
"bBALEhQKEFdpaVJlbW90ZUNvbnRyb2wQDBIWChJOaW50ZW5kbzNEU0NvbnRy",
"b2wQDSqUAQoPUm9tUGxhdGZvcm1UeXBlEgcKA0FsbBAAEgcKA05lcxABEhEK",
"DU1hc3Rlcl9TeXN0ZW0QAhINCglHYW1lX0dlYXIQAxIMCghHYW1lX0JveRAE",
"EhIKDkdhbWVfQm95X0NvbG9yEAUSEQoNQ29sZWNvX1Zpc2lvbhAGEgsKB1ND",
"XzMwMDAQBxILCgdTR18xMDAwEAgqcAoNUm9vbUdhbWVTdGF0ZRISCg5Ob25l",
"X0dhbWVTdGF0ZRAAEgwKCE9ubHlIb3N0EAESEQoNV2FpdFJhd1VwZGF0ZRAC",
"Eg0KCVdhaXRSZWFkeRADEgkKBVBhdXNlEAQSEAoMSW5PbmxpbmVHYW1lEAUq",
"TgoRTG9naW5SZXN1bHRTdGF0dXMSIQodTG9naW5SZXN1bHRTdGF0dXNfQmFz",
"ZURlZmF1bHQQABIGCgJPSxABEg4KCkFjY291bnRFcnIQAkICSAFiBnByb3Rv",
"Mw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
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.PlatformType), 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[] {
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg), global::AxibugProtobuf.Protobuf_ChatMsg.Parser, new[]{ "ChatMsg" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg_RESP), global::AxibugProtobuf.Protobuf_ChatMsg_RESP.Parser, new[]{ "NickName", "ChatMsg", "Date" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Ping), global::AxibugProtobuf.Protobuf_Ping.Parser, new[]{ "Seed" }, null, null, null, null),
@ -186,8 +185,8 @@ namespace AxibugProtobuf {
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, new[]{ "PushFrameNeedTimeUs", "LoadStateNeedTimeUs", "VideoFrameShowNeedTimeUs", "AudioFramePlayNeedTimeUs" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State", "PlatformType" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID", "PlatformType" }, null, null, null, null)
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID" }, null, null, null, null)
}));
}
#endregion
@ -371,7 +370,7 @@ namespace AxibugProtobuf {
public enum DeviceType {
/// <summary>
///缺省不使
///
/// </summary>
[pbr::OriginalName("DeviceType_Default")] Default = 0,
[pbr::OriginalName("PC")] Pc = 1,
@ -416,13 +415,16 @@ namespace AxibugProtobuf {
[pbr::OriginalName("Nintendo3DSControl")] Nintendo3Dscontrol = 13,
}
public enum PlatformType {
public enum RomPlatformType {
[pbr::OriginalName("All")] All = 0,
[pbr::OriginalName("Nes")] Nes = 1,
[pbr::OriginalName("Master_System")] MasterSystem = 2,
[pbr::OriginalName("Game_Gear")] GameGear = 3,
[pbr::OriginalName("Game_Boy")] GameBoy = 4,
[pbr::OriginalName("Game_Boy_Color")] GameBoyColor = 5,
[pbr::OriginalName("Coleco_Vision")] ColecoVision = 6,
[pbr::OriginalName("SC_3000")] Sc3000 = 7,
[pbr::OriginalName("SG_1000")] Sg1000 = 8,
}
public enum RoomGameState {
@ -9023,7 +9025,6 @@ namespace AxibugProtobuf {
public Protobuf_Game_Mark(Protobuf_Game_Mark other) : this() {
romID_ = other.romID_;
state_ = other.state_;
platformType_ = other.platformType_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@ -9060,20 +9061,6 @@ namespace AxibugProtobuf {
}
}
/// <summary>Field number for the "PlatformType" field.</summary>
public const int PlatformTypeFieldNumber = 3;
private global::AxibugProtobuf.PlatformType platformType_ = global::AxibugProtobuf.PlatformType.All;
/// <summary>
///平台类型
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public global::AxibugProtobuf.PlatformType PlatformType {
get { return platformType_; }
set {
platformType_ = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Protobuf_Game_Mark);
@ -9089,7 +9076,6 @@ namespace AxibugProtobuf {
}
if (RomID != other.RomID) return false;
if (State != other.State) return false;
if (PlatformType != other.PlatformType) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -9098,7 +9084,6 @@ namespace AxibugProtobuf {
int hash = 1;
if (RomID != 0) hash ^= RomID.GetHashCode();
if (State != 0) hash ^= State.GetHashCode();
if (PlatformType != global::AxibugProtobuf.PlatformType.All) hash ^= PlatformType.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@ -9123,10 +9108,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(16);
output.WriteInt32(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(24);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@ -9144,10 +9125,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(16);
output.WriteInt32(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(24);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@ -9163,9 +9140,6 @@ namespace AxibugProtobuf {
if (State != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PlatformType);
}
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@ -9183,9 +9157,6 @@ namespace AxibugProtobuf {
if (other.State != 0) {
State = other.State;
}
if (other.PlatformType != global::AxibugProtobuf.PlatformType.All) {
PlatformType = other.PlatformType;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@ -9208,10 +9179,6 @@ namespace AxibugProtobuf {
State = input.ReadInt32();
break;
}
case 24: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
#endif
@ -9234,10 +9201,6 @@ namespace AxibugProtobuf {
State = input.ReadInt32();
break;
}
case 24: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
}
@ -9275,7 +9238,6 @@ namespace AxibugProtobuf {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public Protobuf_Game_Mark_RESP(Protobuf_Game_Mark_RESP other) : this() {
romID_ = other.romID_;
platformType_ = other.platformType_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@ -9298,20 +9260,6 @@ namespace AxibugProtobuf {
}
}
/// <summary>Field number for the "PlatformType" field.</summary>
public const int PlatformTypeFieldNumber = 2;
private global::AxibugProtobuf.PlatformType platformType_ = global::AxibugProtobuf.PlatformType.All;
/// <summary>
///平台类型
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public global::AxibugProtobuf.PlatformType PlatformType {
get { return platformType_; }
set {
platformType_ = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Protobuf_Game_Mark_RESP);
@ -9326,7 +9274,6 @@ namespace AxibugProtobuf {
return true;
}
if (RomID != other.RomID) return false;
if (PlatformType != other.PlatformType) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -9334,7 +9281,6 @@ namespace AxibugProtobuf {
public override int GetHashCode() {
int hash = 1;
if (RomID != 0) hash ^= RomID.GetHashCode();
if (PlatformType != global::AxibugProtobuf.PlatformType.All) hash ^= PlatformType.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@ -9355,10 +9301,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(8);
output.WriteInt32(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(16);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@ -9372,10 +9314,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(8);
output.WriteInt32(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(16);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@ -9388,9 +9326,6 @@ namespace AxibugProtobuf {
if (RomID != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PlatformType);
}
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@ -9405,9 +9340,6 @@ namespace AxibugProtobuf {
if (other.RomID != 0) {
RomID = other.RomID;
}
if (other.PlatformType != global::AxibugProtobuf.PlatformType.All) {
PlatformType = other.PlatformType;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@ -9426,10 +9358,6 @@ namespace AxibugProtobuf {
RomID = input.ReadInt32();
break;
}
case 16: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
#endif
@ -9448,10 +9376,6 @@ namespace AxibugProtobuf {
RomID = input.ReadInt32();
break;
}
case 16: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
}

View File

@ -38,7 +38,7 @@ namespace AxibugEmuOnline.Client
{
RomFile romFile;
if (s_RomFileCahcesInRoomInfo.TryGetValue(roomInfo.GameRomID, out romFile))
if (s_RomFileCahcesInRoomInfo.TryGetValue(roomInfo.GameRomID, out romFile))
{
callback.Invoke(roomInfo, romFile);
return;
@ -46,10 +46,10 @@ namespace AxibugEmuOnline.Client
switch (platform)
{
case EnumSupportEmuPlatform.NES:
App.StartCoroutine(App.httpAPI.GetNesRomInfo(roomInfo.GameRomID, (romWebData) =>
App.StartCoroutine(App.httpAPI.GetRomInfo(roomInfo.GameRomID, (romWebData) =>
{
RomFile _romFile = new RomFile(EnumSupportEmuPlatform.NES, 0, 0);
_romFile.SetWebData(romWebData);
_romFile.SetWebData(romWebData);
s_RomFileCahcesInRoomInfo[roomInfo.GameRomID] = _romFile;
callback.Invoke(roomInfo, _romFile);

View File

@ -49,12 +49,11 @@ namespace AxibugEmuOnline.Server.Manager
}
else
{
query = "INSERT INTO `haoyue_emu`.`rom_stars` (`uid`, `platform`, `romid`) VALUES (?uid, ?platform, ?romid);";
query = "INSERT INTO `haoyue_emu`.`rom_stars` (`uid`, `romid`) VALUES (?uid, ?romid);";
using (var command = new MySqlCommand(query, conn))
{
// 设置参数值
command.Parameters.AddWithValue("?uid", _c.UID);
command.Parameters.AddWithValue("?platform", (int)msg.PlatformType);
command.Parameters.AddWithValue("?romid", msg.RomID);
command.ExecuteNonQuery();
}
@ -64,12 +63,11 @@ namespace AxibugEmuOnline.Server.Manager
{
if (bHad)
{
query = "DELETE from rom_stars where uid = ?uid and romid = ?romid and platform = ?platform";
query = "DELETE from rom_stars where uid = ?uid and romid = ?romid";
using (var command = new MySqlCommand(query, conn))
{
// 设置参数值
command.Parameters.AddWithValue("?uid", _c.UID);
command.Parameters.AddWithValue("?platform", (int)msg.PlatformType);
command.Parameters.AddWithValue("?romid", msg.RomID);
command.ExecuteNonQuery();
}
@ -81,10 +79,9 @@ namespace AxibugEmuOnline.Server.Manager
}
}
//更新收藏数
query = "update romlist_nes set stars = (SELECT COUNT(id) from rom_stars where rom_stars.romid = ?romid and rom_stars.platform = ?platform) where romlist_nes.id = ?romid";
query = "update romlist set stars = (SELECT COUNT(id) from rom_stars where rom_stars.romid = ?romid) where romlist.id = ?romid";
using (var command = new MySqlCommand(query, conn))
{
command.Parameters.AddWithValue("?platform", (int)msg.PlatformType);
command.Parameters.AddWithValue("?romid", msg.RomID);
command.ExecuteNonQuery();
}
@ -94,7 +91,6 @@ namespace AxibugEmuOnline.Server.Manager
{
}
Haoyue_SQLPoolManager.EnqueueSQLConn(conn);
respData.PlatformType = msg.PlatformType;
respData.RomID = msg.RomID;
AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdGameMark, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(respData));
}

View File

@ -126,7 +126,7 @@ namespace AxibugEmuOnline.Server
if (state == RoomLogType.Create)
{
query = "update romlist_nes set playcount = playcount + 1 where id = ?romid";
query = "update romlist set playcount = playcount + 1 where id = ?romid";
using (var command = new MySqlCommand(query, conn))
{
command.Parameters.AddWithValue("?romid", RomID);

View File

@ -94,7 +94,7 @@ namespace AxibugEmuOnline.Server
List<(int id, string romurl, string name)> list = new List<(int id, string romurl, string name)>();
List<(int id, string romurl, string name)> Nonelist = new List<(int id, string romurl, string name)>();
string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash` FROM romlist_nes";
string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash` FROM romlist";
using (var command = new MySqlCommand(query, conn))
{
// 执行查询并处理结果
@ -122,7 +122,7 @@ namespace AxibugEmuOnline.Server
}
string romhash = Helper.FileMD5Hash(rompath);
AppSrv.g_Log.Info($"第{i}个Name->{list[i].name},Hash->{romhash}");
query = $"update romlist_nes SET `Hash` = '{romhash}' where Id ={list[i].id}";
query = $"update romlist SET `Hash` = '{romhash}' where Id ={list[i].id}";
using (var command = new MySqlCommand(query, conn))
{
// 执行查询并处理结果

View File

@ -4,7 +4,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<History>True|2025-01-06T16:21:47.4863058Z||;True|2025-01-07T00:16:42.7998249+08:00||;False|2025-01-07T00:16:02.8107509+08:00||;False|2025-01-02T15:36:18.1906464+08:00||;False|2025-01-02T15:36:06.5622643+08:00||;True|2024-12-27T18:24:49.7554320+08:00||;</History>
<History>True|2025-01-07T02:47:36.6196477Z||;True|2025-01-07T01:21:34.5863249+08:00||;False|2025-01-07T01:20:39.5344134+08:00||;True|2025-01-07T00:21:47.4863058+08:00||;True|2025-01-07T00:16:42.7998249+08:00||;False|2025-01-07T00:16:02.8107509+08:00||;False|2025-01-02T15:36:18.1906464+08:00||;False|2025-01-02T15:36:06.5622643+08:00||;True|2024-12-27T18:24:49.7554320+08:00||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@ -99,53 +99,52 @@ namespace AxibugProtobuf {
"ZFRpbWVVcxgDIAEoAhIgChhBdWRpb0ZyYW1lUGxheU5lZWRUaW1lVXMYBCAB",
"KAIiKgoYUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuEg4KBlJvb21JRBgBIAEo",
"BSJTCh1Qcm90b2J1Zl9Sb29tX0dldF9TY3JlZW5fUkVTUBIOCgZSb29tSUQY",
"ASABKAUSDwoHRnJhbWVJRBgCIAEoBRIRCglSYXdCaXRtYXAYAyABKAwiZgoS",
"ASABKAUSDwoHRnJhbWVJRBgCIAEoBRIRCglSYXdCaXRtYXAYAyABKAwiMgoS",
"UHJvdG9idWZfR2FtZV9NYXJrEg0KBVJvbUlEGAEgASgFEg0KBXN0YXRlGAIg",
"ASgFEjIKDFBsYXRmb3JtVHlwZRgDIAEoDjIcLkF4aWJ1Z1Byb3RvYnVmLlBs",
"YXRmb3JtVHlwZSJcChdQcm90b2J1Zl9HYW1lX01hcmtfUkVTUBINCgVSb21J",
"RBgBIAEoBRIyCgxQbGF0Zm9ybVR5cGUYAiABKA4yHC5BeGlidWdQcm90b2J1",
"Zi5QbGF0Zm9ybVR5cGUqoQUKCUNvbW1hbmRJRBIOCgpDTURfREVGQVVMEAAS",
"DAoIQ01EX1BJTkcQARIMCghDTURfUE9ORxACEg4KCUNNRF9MT0dJThDRDxIY",
"ChNDTURfVVNFUl9PTkxJTkVMSVNUELgXEhIKDUNNRF9VU0VSX0pPSU4Q1xcS",
"EwoOQ01EX1VTRVJfTEVBVkUQ2BcSGgoVQ01EX1VTRVJfU1RBVEVfVVBEQVRF",
"ENkXEhgKE0NNRF9Nb2RpZnlfTmlja05hbWUQnRgSHAoXQ01EX1VwZGF0ZV9T",
"ZWxmVXNlckluZm8QphgSHQoYQ01EX1VwZGF0ZV9PdGhlclVzZXJJbmZvEKgY",
"EhAKC0NNRF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01E",
"X1Jvb21fTGlzdF9VcGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCT",
"JxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxIT",
"Cg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVf",
"Q2hhbmdlZBD2JxIhChxDTURfUm9vbV9DaGFuZ2VQbGF5ZXJXaXRoSm95EIoo",
"EhYKEUNNRF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5",
"ZXJfVXBkYXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5",
"ENgoEiAKG0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURf",
"Uk9PTV9TWU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1D",
"TURfR0FNRV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVM",
"EAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicK",
"I0VSUk9SX1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJS",
"T1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxS",
"RUFEWV9IQURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCU",
"AypACglMb2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBAB",
"EhQKEFVzZUhhb1l1ZUFjY291bnQQAiqlAQoKRGV2aWNlVHlwZRIWChJEZXZp",
"Y2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQ",
"AxIHCgNQU1YQBBIHCgNQUzMQBRIHCgNQUzQQBhILCgdYQk9YMzYwEAcSCwoH",
"WEJPWE9ORRAIEggKBFdpaVUQCRIPCgtOaW50ZW5kbzNEUxAKEhEKDUFuZHJv",
"aWRDYXJBcHAQCyqTAgoLR2FtZVBhZFR5cGUSDAoIS2V5Ym9hcmQQABIRCg1H",
"bG9iYWxHYW1lUGFkEAESDgoKVG91Y2hQYW5lbBACEg4KCkRTM0NvbnRyb2wQ",
"AxIOCgpEUzRDb250cm9sEAQSDgoKRFM1Q29udHJvbBAFEhQKEFN3aXRjaFBy",
"b0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxISCg5YQk9YMzYwQ29udHJv",
"bBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNWaXRhQ29udHJvbBAKEhIK",
"DldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3RlQ29udHJvbBAMEhYKEk5p",
"bnRlbmRvM0RTQ29udHJvbBANKmQKDFBsYXRmb3JtVHlwZRIHCgNBbGwQABIH",
"CgNOZXMQARIRCg1NYXN0ZXJfU3lzdGVtEAISDQoJR2FtZV9HZWFyEAMSDAoI",
"R2FtZV9Cb3kQBBISCg5HYW1lX0JveV9Db2xvchAFKnAKDVJvb21HYW1lU3Rh",
"dGUSEgoOTm9uZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRS",
"YXdVcGRhdGUQAhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25s",
"aW5lR2FtZRAFKk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0",
"U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJC",
"AkgBYgZwcm90bzM="));
"ASgFIigKF1Byb3RvYnVmX0dhbWVfTWFya19SRVNQEg0KBVJvbUlEGAEgASgF",
"KqEFCglDb21tYW5kSUQSDgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAES",
"DAoIQ01EX1BPTkcQAhIOCglDTURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05M",
"SU5FTElTVBC4FxISCg1DTURfVVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xF",
"QVZFENgXEhoKFUNNRF9VU0VSX1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9k",
"aWZ5X05pY2tOYW1lEJ0YEhwKF0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYY",
"Eh0KGENNRF9VcGRhdGVfT3RoZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1T",
"RxChHxISCg1DTURfUm9vbV9MaXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBk",
"YXRlEIonEhgKE0NNRF9Sb29tX0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21f",
"Q3JlYXRlEO0nEhIKDUNNRF9Sb29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVh",
"dmUQ8icSIgodQ01EX1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSIQoc",
"Q01EX1Jvb21fQ2hhbmdlUGxheWVyV2l0aEpveRCKKBIWChFDTURfUm9vbV9X",
"YWl0U3RlcBDRKBInCiJDTURfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRl",
"UmF3ENQoEhoKFUNNRF9Sb29tX1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9v",
"bV9TaW5nZWxfUGxheWVySW5wdXQQ+i4SHQoYQ01EX1JPT01fU1lOX1BsYXll",
"cklucHV0EP8uEg8KCkNNRF9TY3JlZW4Q2TYSEgoNQ01EX0dBTUVfTUFSSxD1",
"TirQAQoJRXJyb3JDb2RlEhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09L",
"EAESGAoURVJST1JfUk9PTV9OT1RfRk9VTkQQChInCiNFUlJPUl9ST09NX1NM",
"T1RfQUxSRUFETFlfSEFEX1BMQVlFUhALEiEKHUVSUk9SX1JPT01fQ0FOVF9E",
"T19DVVJSX1NUQVRFEDISHwoaRVJST1JfUk9NX0FMUkVBRFlfSEFEX1NUQVIQ",
"kwMSHAoXRVJST1JfUk9NX0RPTlRfSEFEX1NUQVIQlAMqQAoJTG9naW5UeXBl",
"Eg0KCVVzZURldmljZRAAEg4KClVzZUFjY291bnQQARIUChBVc2VIYW9ZdWVB",
"Y2NvdW50EAIqpQEKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0",
"EAASBgoCUEMQARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQSBwoD",
"UFMzEAUSBwoDUFM0EAYSCwoHWEJPWDM2MBAHEgsKB1hCT1hPTkUQCBIICgRX",
"aWlVEAkSDwoLTmludGVuZG8zRFMQChIRCg1BbmRyb2lkQ2FyQXBwEAsqkwIK",
"C0dhbWVQYWRUeXBlEgwKCEtleWJvYXJkEAASEQoNR2xvYmFsR2FtZVBhZBAB",
"Eg4KClRvdWNoUGFuZWwQAhIOCgpEUzNDb250cm9sEAMSDgoKRFM0Q29udHJv",
"bBAEEg4KCkRTNUNvbnRyb2wQBRIUChBTd2l0Y2hQcm9Db250cm9sEAYSEAoM",
"U3dpdGNoSm95Q29uEAcSEgoOWEJPWDM2MENvbnRyb2wQCBISCg5YQk9YT05F",
"Q29udHJvbBAJEhEKDVBTVml0YUNvbnRyb2wQChISCg5XaWlVUGFkQ29udHJv",
"bBALEhQKEFdpaVJlbW90ZUNvbnRyb2wQDBIWChJOaW50ZW5kbzNEU0NvbnRy",
"b2wQDSqUAQoPUm9tUGxhdGZvcm1UeXBlEgcKA0FsbBAAEgcKA05lcxABEhEK",
"DU1hc3Rlcl9TeXN0ZW0QAhINCglHYW1lX0dlYXIQAxIMCghHYW1lX0JveRAE",
"EhIKDkdhbWVfQm95X0NvbG9yEAUSEQoNQ29sZWNvX1Zpc2lvbhAGEgsKB1ND",
"XzMwMDAQBxILCgdTR18xMDAwEAgqcAoNUm9vbUdhbWVTdGF0ZRISCg5Ob25l",
"X0dhbWVTdGF0ZRAAEgwKCE9ubHlIb3N0EAESEQoNV2FpdFJhd1VwZGF0ZRAC",
"Eg0KCVdhaXRSZWFkeRADEgkKBVBhdXNlEAQSEAoMSW5PbmxpbmVHYW1lEAUq",
"TgoRTG9naW5SZXN1bHRTdGF0dXMSIQodTG9naW5SZXN1bHRTdGF0dXNfQmFz",
"ZURlZmF1bHQQABIGCgJPSxABEg4KCkFjY291bnRFcnIQAkICSAFiBnByb3Rv",
"Mw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
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.PlatformType), 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[] {
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg), global::AxibugProtobuf.Protobuf_ChatMsg.Parser, new[]{ "ChatMsg" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg_RESP), global::AxibugProtobuf.Protobuf_ChatMsg_RESP.Parser, new[]{ "NickName", "ChatMsg", "Date" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Ping), global::AxibugProtobuf.Protobuf_Ping.Parser, new[]{ "Seed" }, null, null, null, null),
@ -186,8 +185,8 @@ namespace AxibugProtobuf {
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, new[]{ "PushFrameNeedTimeUs", "LoadStateNeedTimeUs", "VideoFrameShowNeedTimeUs", "AudioFramePlayNeedTimeUs" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State", "PlatformType" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID", "PlatformType" }, null, null, null, null)
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID" }, null, null, null, null)
}));
}
#endregion
@ -371,7 +370,7 @@ namespace AxibugProtobuf {
public enum DeviceType {
/// <summary>
///缺省不使
///
/// </summary>
[pbr::OriginalName("DeviceType_Default")] Default = 0,
[pbr::OriginalName("PC")] Pc = 1,
@ -416,13 +415,16 @@ namespace AxibugProtobuf {
[pbr::OriginalName("Nintendo3DSControl")] Nintendo3Dscontrol = 13,
}
public enum PlatformType {
public enum RomPlatformType {
[pbr::OriginalName("All")] All = 0,
[pbr::OriginalName("Nes")] Nes = 1,
[pbr::OriginalName("Master_System")] MasterSystem = 2,
[pbr::OriginalName("Game_Gear")] GameGear = 3,
[pbr::OriginalName("Game_Boy")] GameBoy = 4,
[pbr::OriginalName("Game_Boy_Color")] GameBoyColor = 5,
[pbr::OriginalName("Coleco_Vision")] ColecoVision = 6,
[pbr::OriginalName("SC_3000")] Sc3000 = 7,
[pbr::OriginalName("SG_1000")] Sg1000 = 8,
}
public enum RoomGameState {
@ -9023,7 +9025,6 @@ namespace AxibugProtobuf {
public Protobuf_Game_Mark(Protobuf_Game_Mark other) : this() {
romID_ = other.romID_;
state_ = other.state_;
platformType_ = other.platformType_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@ -9060,20 +9061,6 @@ namespace AxibugProtobuf {
}
}
/// <summary>Field number for the "PlatformType" field.</summary>
public const int PlatformTypeFieldNumber = 3;
private global::AxibugProtobuf.PlatformType platformType_ = global::AxibugProtobuf.PlatformType.All;
/// <summary>
///平台类型
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public global::AxibugProtobuf.PlatformType PlatformType {
get { return platformType_; }
set {
platformType_ = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Protobuf_Game_Mark);
@ -9089,7 +9076,6 @@ namespace AxibugProtobuf {
}
if (RomID != other.RomID) return false;
if (State != other.State) return false;
if (PlatformType != other.PlatformType) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -9098,7 +9084,6 @@ namespace AxibugProtobuf {
int hash = 1;
if (RomID != 0) hash ^= RomID.GetHashCode();
if (State != 0) hash ^= State.GetHashCode();
if (PlatformType != global::AxibugProtobuf.PlatformType.All) hash ^= PlatformType.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@ -9123,10 +9108,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(16);
output.WriteInt32(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(24);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@ -9144,10 +9125,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(16);
output.WriteInt32(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(24);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@ -9163,9 +9140,6 @@ namespace AxibugProtobuf {
if (State != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PlatformType);
}
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@ -9183,9 +9157,6 @@ namespace AxibugProtobuf {
if (other.State != 0) {
State = other.State;
}
if (other.PlatformType != global::AxibugProtobuf.PlatformType.All) {
PlatformType = other.PlatformType;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@ -9208,10 +9179,6 @@ namespace AxibugProtobuf {
State = input.ReadInt32();
break;
}
case 24: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
#endif
@ -9234,10 +9201,6 @@ namespace AxibugProtobuf {
State = input.ReadInt32();
break;
}
case 24: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
}
@ -9275,7 +9238,6 @@ namespace AxibugProtobuf {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public Protobuf_Game_Mark_RESP(Protobuf_Game_Mark_RESP other) : this() {
romID_ = other.romID_;
platformType_ = other.platformType_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@ -9298,20 +9260,6 @@ namespace AxibugProtobuf {
}
}
/// <summary>Field number for the "PlatformType" field.</summary>
public const int PlatformTypeFieldNumber = 2;
private global::AxibugProtobuf.PlatformType platformType_ = global::AxibugProtobuf.PlatformType.All;
/// <summary>
///平台类型
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public global::AxibugProtobuf.PlatformType PlatformType {
get { return platformType_; }
set {
platformType_ = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Protobuf_Game_Mark_RESP);
@ -9326,7 +9274,6 @@ namespace AxibugProtobuf {
return true;
}
if (RomID != other.RomID) return false;
if (PlatformType != other.PlatformType) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -9334,7 +9281,6 @@ namespace AxibugProtobuf {
public override int GetHashCode() {
int hash = 1;
if (RomID != 0) hash ^= RomID.GetHashCode();
if (PlatformType != global::AxibugProtobuf.PlatformType.All) hash ^= PlatformType.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@ -9355,10 +9301,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(8);
output.WriteInt32(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(16);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@ -9372,10 +9314,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(8);
output.WriteInt32(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(16);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@ -9388,9 +9326,6 @@ namespace AxibugProtobuf {
if (RomID != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PlatformType);
}
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@ -9405,9 +9340,6 @@ namespace AxibugProtobuf {
if (other.RomID != 0) {
RomID = other.RomID;
}
if (other.PlatformType != global::AxibugProtobuf.PlatformType.All) {
PlatformType = other.PlatformType;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@ -9426,10 +9358,6 @@ namespace AxibugProtobuf {
RomID = input.ReadInt32();
break;
}
case 16: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
#endif
@ -9448,10 +9376,6 @@ namespace AxibugProtobuf {
RomID = input.ReadInt32();
break;
}
case 16: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
}

View File

@ -29,16 +29,20 @@ namespace AxibugEmuOnline.Web.Controllers
}
[HttpGet]
public JsonResult NesRomList(string SearchKey, int Ptype, int GType, int Page, int PageSize)
public JsonResult RomList(string SearchKey, int Ptype, int GType, int Page, int PageSize)
{
string searchPattern = $"%{SearchKey}%";
Resp_GameList resp = new Resp_GameList();
resp.gameList = new List<Resp_RomInfo>();
MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("NesRomList");
MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("RomList");
{
string platformCond = "";
if (GType > 0)
{
platformCond = $" and PlatformType = '{Ptype}' ";
}
GameType SearchGType = (GameType)GType;
string GameTypeCond = "";
switch (SearchGType)
{
@ -53,7 +57,7 @@ namespace AxibugEmuOnline.Web.Controllers
break;
}
string query = "SELECT count(id) FROM romlist_nes where `Name` like ?searchPattern " + GameTypeCond;
string query = "SELECT count(id) FROM romlist where `Name` like ?searchPattern " + platformCond + GameTypeCond;
using (var command = new MySqlCommand(query, conn))
{
// 设置参数值
@ -73,7 +77,7 @@ namespace AxibugEmuOnline.Web.Controllers
string HotOrderBy = "ORDER BY playcount DESC, id ASC";
query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars` FROM romlist_nes where `Name` like ?searchPattern {GameTypeCond} {HotOrderBy} LIMIT ?offset, ?pageSize;";
query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType` FROM romlist where `Name` like ?searchPattern {platformCond} {GameTypeCond} {HotOrderBy} LIMIT ?offset, ?pageSize;";
using (var command = new MySqlCommand(query, conn))
{
// 设置参数值
@ -98,6 +102,7 @@ namespace AxibugEmuOnline.Web.Controllers
hash = !reader.IsDBNull(6) ? reader.GetString(6) : string.Empty,
playcount = reader.GetInt32(7),
stars = reader.GetInt32(8),
ptype = reader.GetInt32(9),
});
}
}
@ -114,7 +119,7 @@ namespace AxibugEmuOnline.Web.Controllers
Resp_RomInfo resp = new Resp_RomInfo();
MySqlConnection conn = Haoyue_SQLPoolManager.DequeueSQLConn("NesRomList");
{
string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars` FROM romlist_nes where id = ?romid;";
string query = $"SELECT id,`Name`,GameType,Note,RomUrl,ImgUrl,`Hash`,`playcount`,`stars`,`PlatformType` FROM romlist where id = ?romid;";
using (var command = new MySqlCommand(query, conn))
{
// 设置参数值
@ -133,6 +138,7 @@ namespace AxibugEmuOnline.Web.Controllers
resp.hash = !reader.IsDBNull(6) ? reader.GetString(6) : string.Empty;
resp.playcount = reader.GetInt32(7);
resp.stars = reader.GetInt32(8);
resp.ptype = reader.GetInt32(9);
}
}
}
@ -141,11 +147,6 @@ namespace AxibugEmuOnline.Web.Controllers
return new JsonResult(resp);
}
enum PlatformType : byte
{
All = 0,
Nes,
}
enum GameType : byte
{
@ -191,6 +192,7 @@ namespace AxibugEmuOnline.Web.Controllers
{
public int orderid { get; set; }
public int id { get; set; }
public int ptype { get; set; }
public string romName { get; set; }
public string gType { get; set; }
public string desc { get; set; }

View File

@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
<Project>
<PropertyGroup>
<_PublishTargetUrl>G:\Sin365\AxibugEmuOnline\AxibugEmuOnline.Web\bin\Release\net8.0\publish\</_PublishTargetUrl>
<History>True|2024-09-12T06:18:38.6992653Z||;True|2024-09-12T14:08:58.4526827+08:00||;True|2024-08-22T14:13:06.3067002+08:00||;True|2024-08-14T10:33:10.9180984+08:00||;True|2024-08-13T18:28:27.5050523+08:00||;True|2024-08-13T18:25:47.6591234+08:00||;True|2024-08-13T18:25:17.5344107+08:00||;True|2024-08-13T17:46:23.4523329+08:00||;</History>
<History>True|2025-01-07T02:37:18.6461694Z||;True|2024-09-12T14:18:38.6992653+08:00||;True|2024-09-12T14:08:58.4526827+08:00||;True|2024-08-22T14:13:06.3067002+08:00||;True|2024-08-14T10:33:10.9180984+08:00||;True|2024-08-13T18:28:27.5050523+08:00||;True|2024-08-13T18:25:47.6591234+08:00||;True|2024-08-13T18:25:17.5344107+08:00||;True|2024-08-13T17:46:23.4523329+08:00||;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>

View File

@ -99,53 +99,52 @@ namespace AxibugProtobuf {
"ZFRpbWVVcxgDIAEoAhIgChhBdWRpb0ZyYW1lUGxheU5lZWRUaW1lVXMYBCAB",
"KAIiKgoYUHJvdG9idWZfUm9vbV9HZXRfU2NyZWVuEg4KBlJvb21JRBgBIAEo",
"BSJTCh1Qcm90b2J1Zl9Sb29tX0dldF9TY3JlZW5fUkVTUBIOCgZSb29tSUQY",
"ASABKAUSDwoHRnJhbWVJRBgCIAEoBRIRCglSYXdCaXRtYXAYAyABKAwiZgoS",
"ASABKAUSDwoHRnJhbWVJRBgCIAEoBRIRCglSYXdCaXRtYXAYAyABKAwiMgoS",
"UHJvdG9idWZfR2FtZV9NYXJrEg0KBVJvbUlEGAEgASgFEg0KBXN0YXRlGAIg",
"ASgFEjIKDFBsYXRmb3JtVHlwZRgDIAEoDjIcLkF4aWJ1Z1Byb3RvYnVmLlBs",
"YXRmb3JtVHlwZSJcChdQcm90b2J1Zl9HYW1lX01hcmtfUkVTUBINCgVSb21J",
"RBgBIAEoBRIyCgxQbGF0Zm9ybVR5cGUYAiABKA4yHC5BeGlidWdQcm90b2J1",
"Zi5QbGF0Zm9ybVR5cGUqoQUKCUNvbW1hbmRJRBIOCgpDTURfREVGQVVMEAAS",
"DAoIQ01EX1BJTkcQARIMCghDTURfUE9ORxACEg4KCUNNRF9MT0dJThDRDxIY",
"ChNDTURfVVNFUl9PTkxJTkVMSVNUELgXEhIKDUNNRF9VU0VSX0pPSU4Q1xcS",
"EwoOQ01EX1VTRVJfTEVBVkUQ2BcSGgoVQ01EX1VTRVJfU1RBVEVfVVBEQVRF",
"ENkXEhgKE0NNRF9Nb2RpZnlfTmlja05hbWUQnRgSHAoXQ01EX1VwZGF0ZV9T",
"ZWxmVXNlckluZm8QphgSHQoYQ01EX1VwZGF0ZV9PdGhlclVzZXJJbmZvEKgY",
"EhAKC0NNRF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01E",
"X1Jvb21fTGlzdF9VcGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCT",
"JxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxIT",
"Cg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVf",
"Q2hhbmdlZBD2JxIhChxDTURfUm9vbV9DaGFuZ2VQbGF5ZXJXaXRoSm95EIoo",
"EhYKEUNNRF9Sb29tX1dhaXRTdGVwENEoEicKIkNNRF9Sb29tX0hvc3RQbGF5",
"ZXJfVXBkYXRlU3RhdGVSYXcQ1CgSGgoVQ01EX1Jvb21fUGxheWVyX1JlYWR5",
"ENgoEiAKG0NNRF9Sb29tX1NpbmdlbF9QbGF5ZXJJbnB1dBD6LhIdChhDTURf",
"Uk9PTV9TWU5fUGxheWVySW5wdXQQ/y4SDwoKQ01EX1NjcmVlbhDZNhISCg1D",
"TURfR0FNRV9NQVJLEPVOKtABCglFcnJvckNvZGUSEAoMRVJST1JfREVGQVVM",
"EAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAKEicK",
"I0VSUk9SX1JPT01fU0xPVF9BTFJFQURMWV9IQURfUExBWUVSEAsSIQodRVJS",
"T1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RBVEUQMhIfChpFUlJPUl9ST01fQUxS",
"RUFEWV9IQURfU1RBUhCTAxIcChdFUlJPUl9ST01fRE9OVF9IQURfU1RBUhCU",
"AypACglMb2dpblR5cGUSDQoJVXNlRGV2aWNlEAASDgoKVXNlQWNjb3VudBAB",
"EhQKEFVzZUhhb1l1ZUFjY291bnQQAiqlAQoKRGV2aWNlVHlwZRIWChJEZXZp",
"Y2VUeXBlX0RlZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQ",
"AxIHCgNQU1YQBBIHCgNQUzMQBRIHCgNQUzQQBhILCgdYQk9YMzYwEAcSCwoH",
"WEJPWE9ORRAIEggKBFdpaVUQCRIPCgtOaW50ZW5kbzNEUxAKEhEKDUFuZHJv",
"aWRDYXJBcHAQCyqTAgoLR2FtZVBhZFR5cGUSDAoIS2V5Ym9hcmQQABIRCg1H",
"bG9iYWxHYW1lUGFkEAESDgoKVG91Y2hQYW5lbBACEg4KCkRTM0NvbnRyb2wQ",
"AxIOCgpEUzRDb250cm9sEAQSDgoKRFM1Q29udHJvbBAFEhQKEFN3aXRjaFBy",
"b0NvbnRyb2wQBhIQCgxTd2l0Y2hKb3lDb24QBxISCg5YQk9YMzYwQ29udHJv",
"bBAIEhIKDlhCT1hPTkVDb250cm9sEAkSEQoNUFNWaXRhQ29udHJvbBAKEhIK",
"DldpaVVQYWRDb250cm9sEAsSFAoQV2lpUmVtb3RlQ29udHJvbBAMEhYKEk5p",
"bnRlbmRvM0RTQ29udHJvbBANKmQKDFBsYXRmb3JtVHlwZRIHCgNBbGwQABIH",
"CgNOZXMQARIRCg1NYXN0ZXJfU3lzdGVtEAISDQoJR2FtZV9HZWFyEAMSDAoI",
"R2FtZV9Cb3kQBBISCg5HYW1lX0JveV9Db2xvchAFKnAKDVJvb21HYW1lU3Rh",
"dGUSEgoOTm9uZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRS",
"YXdVcGRhdGUQAhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25s",
"aW5lR2FtZRAFKk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0",
"U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJC",
"AkgBYgZwcm90bzM="));
"ASgFIigKF1Byb3RvYnVmX0dhbWVfTWFya19SRVNQEg0KBVJvbUlEGAEgASgF",
"KqEFCglDb21tYW5kSUQSDgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAES",
"DAoIQ01EX1BPTkcQAhIOCglDTURfTE9HSU4Q0Q8SGAoTQ01EX1VTRVJfT05M",
"SU5FTElTVBC4FxISCg1DTURfVVNFUl9KT0lOENcXEhMKDkNNRF9VU0VSX0xF",
"QVZFENgXEhoKFUNNRF9VU0VSX1NUQVRFX1VQREFURRDZFxIYChNDTURfTW9k",
"aWZ5X05pY2tOYW1lEJ0YEhwKF0NNRF9VcGRhdGVfU2VsZlVzZXJJbmZvEKYY",
"Eh0KGENNRF9VcGRhdGVfT3RoZXJVc2VySW5mbxCoGBIQCgtDTURfQ0hBVE1T",
"RxChHxISCg1DTURfUm9vbV9MaXN0EIknEhkKFENNRF9Sb29tX0xpc3RfVXBk",
"YXRlEIonEhgKE0NNRF9Sb29tX0dldF9TY3JlZW4QkycSFAoPQ01EX1Jvb21f",
"Q3JlYXRlEO0nEhIKDUNNRF9Sb29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVh",
"dmUQ8icSIgodQ01EX1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSIQoc",
"Q01EX1Jvb21fQ2hhbmdlUGxheWVyV2l0aEpveRCKKBIWChFDTURfUm9vbV9X",
"YWl0U3RlcBDRKBInCiJDTURfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRl",
"UmF3ENQoEhoKFUNNRF9Sb29tX1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9v",
"bV9TaW5nZWxfUGxheWVySW5wdXQQ+i4SHQoYQ01EX1JPT01fU1lOX1BsYXll",
"cklucHV0EP8uEg8KCkNNRF9TY3JlZW4Q2TYSEgoNQ01EX0dBTUVfTUFSSxD1",
"TirQAQoJRXJyb3JDb2RlEhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09L",
"EAESGAoURVJST1JfUk9PTV9OT1RfRk9VTkQQChInCiNFUlJPUl9ST09NX1NM",
"T1RfQUxSRUFETFlfSEFEX1BMQVlFUhALEiEKHUVSUk9SX1JPT01fQ0FOVF9E",
"T19DVVJSX1NUQVRFEDISHwoaRVJST1JfUk9NX0FMUkVBRFlfSEFEX1NUQVIQ",
"kwMSHAoXRVJST1JfUk9NX0RPTlRfSEFEX1NUQVIQlAMqQAoJTG9naW5UeXBl",
"Eg0KCVVzZURldmljZRAAEg4KClVzZUFjY291bnQQARIUChBVc2VIYW9ZdWVB",
"Y2NvdW50EAIqpQEKCkRldmljZVR5cGUSFgoSRGV2aWNlVHlwZV9EZWZhdWx0",
"EAASBgoCUEMQARILCgdBbmRyb2lkEAISBwoDSU9TEAMSBwoDUFNWEAQSBwoD",
"UFMzEAUSBwoDUFM0EAYSCwoHWEJPWDM2MBAHEgsKB1hCT1hPTkUQCBIICgRX",
"aWlVEAkSDwoLTmludGVuZG8zRFMQChIRCg1BbmRyb2lkQ2FyQXBwEAsqkwIK",
"C0dhbWVQYWRUeXBlEgwKCEtleWJvYXJkEAASEQoNR2xvYmFsR2FtZVBhZBAB",
"Eg4KClRvdWNoUGFuZWwQAhIOCgpEUzNDb250cm9sEAMSDgoKRFM0Q29udHJv",
"bBAEEg4KCkRTNUNvbnRyb2wQBRIUChBTd2l0Y2hQcm9Db250cm9sEAYSEAoM",
"U3dpdGNoSm95Q29uEAcSEgoOWEJPWDM2MENvbnRyb2wQCBISCg5YQk9YT05F",
"Q29udHJvbBAJEhEKDVBTVml0YUNvbnRyb2wQChISCg5XaWlVUGFkQ29udHJv",
"bBALEhQKEFdpaVJlbW90ZUNvbnRyb2wQDBIWChJOaW50ZW5kbzNEU0NvbnRy",
"b2wQDSqUAQoPUm9tUGxhdGZvcm1UeXBlEgcKA0FsbBAAEgcKA05lcxABEhEK",
"DU1hc3Rlcl9TeXN0ZW0QAhINCglHYW1lX0dlYXIQAxIMCghHYW1lX0JveRAE",
"EhIKDkdhbWVfQm95X0NvbG9yEAUSEQoNQ29sZWNvX1Zpc2lvbhAGEgsKB1ND",
"XzMwMDAQBxILCgdTR18xMDAwEAgqcAoNUm9vbUdhbWVTdGF0ZRISCg5Ob25l",
"X0dhbWVTdGF0ZRAAEgwKCE9ubHlIb3N0EAESEQoNV2FpdFJhd1VwZGF0ZRAC",
"Eg0KCVdhaXRSZWFkeRADEgkKBVBhdXNlEAQSEAoMSW5PbmxpbmVHYW1lEAUq",
"TgoRTG9naW5SZXN1bHRTdGF0dXMSIQodTG9naW5SZXN1bHRTdGF0dXNfQmFz",
"ZURlZmF1bHQQABIGCgJPSxABEg4KCkFjY291bnRFcnIQAkICSAFiBnByb3Rv",
"Mw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
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.PlatformType), 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[] {
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg), global::AxibugProtobuf.Protobuf_ChatMsg.Parser, new[]{ "ChatMsg" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_ChatMsg_RESP), global::AxibugProtobuf.Protobuf_ChatMsg_RESP.Parser, new[]{ "NickName", "ChatMsg", "Date" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Ping), global::AxibugProtobuf.Protobuf_Ping.Parser, new[]{ "Seed" }, null, null, null, null),
@ -186,8 +185,8 @@ namespace AxibugProtobuf {
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, new[]{ "PushFrameNeedTimeUs", "LoadStateNeedTimeUs", "VideoFrameShowNeedTimeUs", "AudioFramePlayNeedTimeUs" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State", "PlatformType" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID", "PlatformType" }, null, null, null, null)
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark), global::AxibugProtobuf.Protobuf_Game_Mark.Parser, new[]{ "RomID", "State" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Game_Mark_RESP), global::AxibugProtobuf.Protobuf_Game_Mark_RESP.Parser, new[]{ "RomID" }, null, null, null, null)
}));
}
#endregion
@ -371,7 +370,7 @@ namespace AxibugProtobuf {
public enum DeviceType {
/// <summary>
///缺省不使
///
/// </summary>
[pbr::OriginalName("DeviceType_Default")] Default = 0,
[pbr::OriginalName("PC")] Pc = 1,
@ -416,13 +415,16 @@ namespace AxibugProtobuf {
[pbr::OriginalName("Nintendo3DSControl")] Nintendo3Dscontrol = 13,
}
public enum PlatformType {
public enum RomPlatformType {
[pbr::OriginalName("All")] All = 0,
[pbr::OriginalName("Nes")] Nes = 1,
[pbr::OriginalName("Master_System")] MasterSystem = 2,
[pbr::OriginalName("Game_Gear")] GameGear = 3,
[pbr::OriginalName("Game_Boy")] GameBoy = 4,
[pbr::OriginalName("Game_Boy_Color")] GameBoyColor = 5,
[pbr::OriginalName("Coleco_Vision")] ColecoVision = 6,
[pbr::OriginalName("SC_3000")] Sc3000 = 7,
[pbr::OriginalName("SG_1000")] Sg1000 = 8,
}
public enum RoomGameState {
@ -9023,7 +9025,6 @@ namespace AxibugProtobuf {
public Protobuf_Game_Mark(Protobuf_Game_Mark other) : this() {
romID_ = other.romID_;
state_ = other.state_;
platformType_ = other.platformType_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@ -9060,20 +9061,6 @@ namespace AxibugProtobuf {
}
}
/// <summary>Field number for the "PlatformType" field.</summary>
public const int PlatformTypeFieldNumber = 3;
private global::AxibugProtobuf.PlatformType platformType_ = global::AxibugProtobuf.PlatformType.All;
/// <summary>
///平台类型
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public global::AxibugProtobuf.PlatformType PlatformType {
get { return platformType_; }
set {
platformType_ = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Protobuf_Game_Mark);
@ -9089,7 +9076,6 @@ namespace AxibugProtobuf {
}
if (RomID != other.RomID) return false;
if (State != other.State) return false;
if (PlatformType != other.PlatformType) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -9098,7 +9084,6 @@ namespace AxibugProtobuf {
int hash = 1;
if (RomID != 0) hash ^= RomID.GetHashCode();
if (State != 0) hash ^= State.GetHashCode();
if (PlatformType != global::AxibugProtobuf.PlatformType.All) hash ^= PlatformType.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@ -9123,10 +9108,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(16);
output.WriteInt32(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(24);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@ -9144,10 +9125,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(16);
output.WriteInt32(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(24);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@ -9163,9 +9140,6 @@ namespace AxibugProtobuf {
if (State != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(State);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PlatformType);
}
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@ -9183,9 +9157,6 @@ namespace AxibugProtobuf {
if (other.State != 0) {
State = other.State;
}
if (other.PlatformType != global::AxibugProtobuf.PlatformType.All) {
PlatformType = other.PlatformType;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@ -9208,10 +9179,6 @@ namespace AxibugProtobuf {
State = input.ReadInt32();
break;
}
case 24: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
#endif
@ -9234,10 +9201,6 @@ namespace AxibugProtobuf {
State = input.ReadInt32();
break;
}
case 24: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
}
@ -9275,7 +9238,6 @@ namespace AxibugProtobuf {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public Protobuf_Game_Mark_RESP(Protobuf_Game_Mark_RESP other) : this() {
romID_ = other.romID_;
platformType_ = other.platformType_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@ -9298,20 +9260,6 @@ namespace AxibugProtobuf {
}
}
/// <summary>Field number for the "PlatformType" field.</summary>
public const int PlatformTypeFieldNumber = 2;
private global::AxibugProtobuf.PlatformType platformType_ = global::AxibugProtobuf.PlatformType.All;
/// <summary>
///平台类型
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public global::AxibugProtobuf.PlatformType PlatformType {
get { return platformType_; }
set {
platformType_ = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as Protobuf_Game_Mark_RESP);
@ -9326,7 +9274,6 @@ namespace AxibugProtobuf {
return true;
}
if (RomID != other.RomID) return false;
if (PlatformType != other.PlatformType) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -9334,7 +9281,6 @@ namespace AxibugProtobuf {
public override int GetHashCode() {
int hash = 1;
if (RomID != 0) hash ^= RomID.GetHashCode();
if (PlatformType != global::AxibugProtobuf.PlatformType.All) hash ^= PlatformType.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@ -9355,10 +9301,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(8);
output.WriteInt32(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(16);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@ -9372,10 +9314,6 @@ namespace AxibugProtobuf {
output.WriteRawTag(8);
output.WriteInt32(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
output.WriteRawTag(16);
output.WriteEnum((int) PlatformType);
}
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@ -9388,9 +9326,6 @@ namespace AxibugProtobuf {
if (RomID != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(RomID);
}
if (PlatformType != global::AxibugProtobuf.PlatformType.All) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) PlatformType);
}
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@ -9405,9 +9340,6 @@ namespace AxibugProtobuf {
if (other.RomID != 0) {
RomID = other.RomID;
}
if (other.PlatformType != global::AxibugProtobuf.PlatformType.All) {
PlatformType = other.PlatformType;
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@ -9426,10 +9358,6 @@ namespace AxibugProtobuf {
RomID = input.ReadInt32();
break;
}
case 16: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
#endif
@ -9448,10 +9376,6 @@ namespace AxibugProtobuf {
RomID = input.ReadInt32();
break;
}
case 16: {
PlatformType = (global::AxibugProtobuf.PlatformType) input.ReadEnum();
break;
}
}
}
}

View File

@ -92,7 +92,7 @@ enum LoginType
enum DeviceType //
{
DeviceType_Default = 0;//使
DeviceType_Default = 0;//
PC = 1;
Android = 2;
IOS = 3;
@ -124,7 +124,7 @@ enum GamePadType //手柄类型
Nintendo3DSControl = 13;
}
enum PlatformType
enum RomPlatformType
{
All = 0;
Nes = 1;
@ -132,6 +132,9 @@ enum PlatformType
Game_Gear = 3;
Game_Boy = 4;
Game_Boy_Color = 5;
Coleco_Vision = 6;
SC_3000 = 7;
SG_1000 = 8;
}
//enum RoomPlayerState
@ -422,11 +425,9 @@ message Protobuf_Game_Mark
{
int32 RomID = 1;//RomID
int32 state = 2;//[0] [1]
PlatformType PlatformType = 3;//
}
message Protobuf_Game_Mark_RESP
{
int32 RomID = 1;//RomID
PlatformType PlatformType = 2;//
}

View File

@ -7,23 +7,45 @@
```
platform 模拟器所在平台
[0] 通用
[1] PC
enum DeviceType //设备类型
{
DeviceType_Default = 0;//通用
PC = 1;
Android = 2;
IOS = 3;
PSV = 4;
PS3 = 5;
PS4 = 6;
XBOX360 = 7;
XBOXONE = 8;
WiiU = 9;
Nintendo3DS = 10;
AndroidCarApp = 11;//汽车Android车机
}
PType Rom所属平台
enum PlatformType : byte
{
All = 0,
Nes = 1,
}
enum RomPlatformType
{
All = 0;
Nes = 1;
Master_System = 2;
Game_Gear = 3;
Game_Boy = 4;
Game_Boy_Color = 5;
Coleco_Vision = 6;
SC_3000 = 7;
SG_1000 = 8;
}
游戏类型
```
### 基本信息检查
```
{WebHost}/api/NesRomList?platform=<平台编号>&version=<版本>
{WebHost}/api/CheckStandInfo?platform=<平台编号>&version=<版本>
```
Request:
@ -59,13 +81,13 @@ class Resp_CheckStandInfo
### Nes游戏列表
```
{WebHost}/api/NesRomList?Page=<页码>&PageSize=<单大小>&SearchKey=<可选的模糊查询关键字>&PType=<平台枚举int>&GType=<游戏类型枚举>
{WebHost}/api/RomList?Page=<页码>&PageSize=<单大小>&SearchKey=<可选的模糊查询关键字>&PType=<平台枚举int>&GType=<游戏类型枚举>
```
Request:
```
http://emu.axibug.com/api/NesRomList?Page=0&PageSize=5&SearchKey=%热血&PType=1&GType=1
http://emu.axibug.com/api/RomList?Page=0&PageSize=5&SearchKey=%热血&PType=1&GType=1
```
Response:
@ -79,57 +101,67 @@ Response:
{
"orderid": 0,
"id": 190,
"ptype": 1,
"romName": "热血物语",
"gType": "ACT",
"desc": "设有拳击及体力槽的热血系列节目。是带有RPG色彩的街头斗殴节目。",
"url": "roms/fcrom/Downtown%20-%20Nekketsu%20Monogatari%20(J).zip",
"imgUrl": "images/fcrom/Downtown%20-%20Nekketsu%20Monogatari%20(J).JPG",
"hash": "",
"stars": 0
"hash": "62e2b8ee88d894d9adea32273c9bbfc3",
"stars": 0,
"playcount": 72
},
{
"orderid": 1,
"id": 460,
"ptype": 1,
"romName": "热血时代剧(热血道中记)",
"gType": "ACT",
"desc": "以古代日本为舞台展开的热血系列节目。设有多种必杀技可使用。",
"url": "roms/fcrom/Kunio%20Kun%20No%20Jidaigekidayo%20Zenin%20Shuugou%20(J).zip",
"imgUrl": "images/fcrom/Kunio%20Kun%20No%20Jidaigekidayo%20Zenin%20Shuugou%20(J).JPG",
"hash": "",
"stars": 0
"hash": "45c4a12530d64e774f0ef7aebe211b81",
"stars": 0,
"playcount": 0
},
{
"orderid": 2,
"id": 585,
"ptype": 1,
"romName": "热血硬派",
"gType": "ACT",
"desc": "有着多种模式的格斗节目。各版面均有不同的趣味性。是热血系列游戏最初的作品。",
"url": "roms/fcrom/Nekketsu%20Kouha%20-%20Kunio%20Kun%20(J).zip",
"imgUrl": "images/fcrom/Nekketsu%20Kouha%20-%20Kunio%20Kun%20(J).JPG",
"hash": "",
"stars": 0
"hash": "a731fd23627e0db18c88d1fff4bc8039",
"stars": 0,
"playcount": 0
},
{
"orderid": 3,
"id": 674,
"ptype": 1,
"romName": "热血物语(美版)",
"gType": "ACT",
"desc": "设有拳击及体力槽的热血系列节目。是带有RPG色彩的街头斗殴节目。",
"url": "roms/fcrom/River%20City%20Brawl%20(J).zip",
"imgUrl": "images/fcrom/River%20City%20Brawl%20(J).JPG",
"hash": "",
"stars": 0
"hash": "956381cb137c4cadee36249ad16a79fa",
"stars": 0,
"playcount": 0
},
{
"orderid": 4,
"id": 826,
"ptype": 1,
"romName": "热血时代剧美版(热血道中记美版)",
"gType": "ACT",
"desc": "以古代日本为舞台展开的热血系列节目。设有多种必杀技可使用。",
"url": "roms/fcrom/Technos%20Samurai%20-%20Downtown%20Special%20(J).zip",
"imgUrl": "images/fcrom/Technos%20Samurai%20-%20Downtown%20Special%20(J).JPG",
"hash": "",
"stars": 0
"hash": "b96fb8afda11a73c1693fb6a197347c4",
"stars": 0,
"playcount": 0
}
]
}
@ -146,19 +178,20 @@ Response:
public List<Resp_RomInfo> gameList { get; set; }
}
public class Resp_RomInfo
{
public int orderid { get; set; }
public int id { get; set; }
public string romName { get; set; }
public string gType { get; set; }
public string desc { get; set; }
public string url { get; set; }
public string imgUrl { get; set; }
public string hash { get; set; }
public int stars { get; set; }
public int playcount { get; set; }
}
public class Resp_RomInfo
{
public int orderid { get; set; }
public int id { get; set; }
public int ptype { get; set; }
public string romName { get; set; }
public string gType { get; set; }
public string desc { get; set; }
public string url { get; set; }
public string imgUrl { get; set; }
public string hash { get; set; }
public int stars { get; set; }
public int playcount { get; set; }
}
```