From c30df0b284af3243a46c24e752ea6bd41aefdaa4 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Fri, 16 Aug 2024 10:39:51 +0800 Subject: [PATCH 1/2] Fix texture channel for psvita --- .../Assets/Script/NesEmulator/VideoProvider.cs | 6 ++++-- .../Assets/Script/NesEmulator/VirtuaNesDraw.shader | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs index 70ade97..6688bbc 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VideoProvider.cs @@ -21,7 +21,8 @@ namespace AxibugEmuOnline.Client { if (wrapTex == null) { - wrapTex = new Texture2D(272, 240, TextureFormat.BGRA32, false); + //wrapTex = new Texture2D(272, 240, TextureFormat.BGRA32, false); + wrapTex = new Texture2D(272, 240, TextureFormat.RGBA32, false); wrapTex.filterMode = FilterMode.Point; wrapTexBuffer = screenData; @@ -36,7 +37,8 @@ namespace AxibugEmuOnline.Client TexBufferSize = wrapTexBuffer.Length * 4; var palRaw = PaletteDefine.m_cnPalette[0]; - pPal = new Texture2D(palRaw.Length, 1, TextureFormat.BGRA32, 1, true); + //pPal = new Texture2D(palRaw.Length, 1, TextureFormat.BGRA32, 1, true); + pPal = new Texture2D(palRaw.Length, 1, TextureFormat.RGBA32, false); pPal.filterMode = FilterMode.Point; for (int i = 0; i < palRaw.Length; i++) { diff --git a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VirtuaNesDraw.shader b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VirtuaNesDraw.shader index 63fad39..411973b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VirtuaNesDraw.shader +++ b/AxibugEmuOnline.Client/Assets/Script/NesEmulator/VirtuaNesDraw.shader @@ -109,7 +109,8 @@ half4 color = tex2D(_MainTex,mapUV); - float rawIndex = color.b; + //float rawIndex = color.b; + float rawIndex = color.r; color = tex2D(_PalTex,float2(rawIndex,0.5)); From a13669dc57edeabbb9fb5648eb5b0d9c1063cbf2 Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Wed, 21 Aug 2024 11:04:53 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=99=A8=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=B8=A7=E9=A9=B1=E5=8A=A8=E5=AE=9E=E7=8E=B0=EF=BC=8C?= =?UTF-8?q?=E6=88=BF=E9=97=B4protobuf=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AxibugEmuOnline.Server.csproj | 4 +- AxibugEmuOnline.Server/Manager/AppSrv.cs | 2 + .../Manager/ClientManager.cs | 117 +- AxibugEmuOnline.Server/Manager/GameManager.cs | 1 - .../Manager/LoginManager.cs | 1 - AxibugEmuOnline.Server/Manager/RoomManager.cs | 219 ++- AxibugEmuOnline.Server/Manager/TickManager.cs | 72 + .../Protobuf/ProtobufAxibugEmuOnline.cs | 1613 ++++++++++++++++- ProtobufCore/build_cs.bat | 2 +- .../out/CS/ProtobufAxibugEmuOnline.cs | 1613 ++++++++++++++++- .../proto/protobuf_AxibugEmuOnline.proto | 103 +- 11 files changed, 3500 insertions(+), 247 deletions(-) create mode 100644 AxibugEmuOnline.Server/Manager/TickManager.cs diff --git a/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj b/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj index 3d4aa88..7bd51e1 100644 --- a/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj +++ b/AxibugEmuOnline.Server/AxibugEmuOnline.Server.csproj @@ -9,10 +9,10 @@ - ..\..\Lib\Google.Protobuf.dll + ..\Lib\Google.Protobuf.dll - ..\..\Lib\HaoYueNet.ServerNetwork.dll + ..\Lib\HaoYueNet.ServerNetwork.dll diff --git a/AxibugEmuOnline.Server/Manager/AppSrv.cs b/AxibugEmuOnline.Server/Manager/AppSrv.cs index 6826346..a4d372a 100644 --- a/AxibugEmuOnline.Server/Manager/AppSrv.cs +++ b/AxibugEmuOnline.Server/Manager/AppSrv.cs @@ -7,6 +7,7 @@ namespace AxibugEmuOnline.Server public static class AppSrv { + public static TickManager g_Tick; public static ClientManager g_ClientMgr; public static LogManager g_Log; public static LoginManager g_Login; @@ -17,6 +18,7 @@ namespace AxibugEmuOnline.Server public static void InitServer(int port) { + g_Tick = new TickManager(); g_ClientMgr = new ClientManager(); g_ClientMgr.Init(45000, 120); g_Log = new LogManager(); diff --git a/AxibugEmuOnline.Server/Manager/ClientManager.cs b/AxibugEmuOnline.Server/Manager/ClientManager.cs index 06608c9..739bcff 100644 --- a/AxibugEmuOnline.Server/Manager/ClientManager.cs +++ b/AxibugEmuOnline.Server/Manager/ClientManager.cs @@ -1,4 +1,6 @@ -using AxibugProtobuf; +using AxibugEmuOnline.Server.Common; +using AxibugEmuOnline.Server.NetWork; +using AxibugProtobuf; using System.Net.Sockets; using System.Timers; @@ -12,8 +14,34 @@ namespace AxibugEmuOnline.Server.Manager public Socket _socket { get; set; } public bool IsOffline { get; set; } = false; public DateTime LogOutDT { get; set; } + public DateTime LogInDT { get; set; } + public UserRoomState RoomState { get; set; } = new UserRoomState(); + public TimeSpan LastStartPingTime { get; set; } + public int LastPingSeed { get; set; } + public double NetDelay { get; set; } + } + public class UserRoomState + { + public int RoomID { get; private set; } + public int PlayerIdx { get; private set; } + public UserRoomState() + { + ClearRoomData(); + } + + public void SetRoomData(int roomID,int playerIdx) + { + RoomID = roomID; + PlayerIdx = playerIdx; + } + + public void ClearRoomData() + { + RoomID = -1; + PlayerIdx = -1; + } } public class ClientManager @@ -23,8 +51,10 @@ namespace AxibugEmuOnline.Server.Manager private Dictionary _DictUIDClient = new Dictionary(); private long TestUIDSeed = 0; - private System.Timers.Timer _ClientCheckTimer; + private System.Timers.Timer clientCheckTimer; + private AutoResetEvent pingTickARE; private long _RemoveOfflineCacheMin; + private Thread threadPingTick; /// /// 初始化并指定检查时间 /// @@ -32,13 +62,22 @@ namespace AxibugEmuOnline.Server.Manager /// 清理掉线分钟数 public void Init(long ticktime, long RemoveOfflineCacheMin) { + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdPing, OnCmdPing); + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdPong, OnCmdPong); + + pingTickARE = AppSrv.g_Tick.AddNewARE(TickManager.TickType.Interval_2000MS); + //换算成毫秒 _RemoveOfflineCacheMin = RemoveOfflineCacheMin; - _ClientCheckTimer = new System.Timers.Timer(); - _ClientCheckTimer.Interval = ticktime; - _ClientCheckTimer.AutoReset = true; - _ClientCheckTimer.Elapsed += new ElapsedEventHandler(ClientCheckClearOffline_Elapsed); - _ClientCheckTimer.Enabled = true; + clientCheckTimer = new System.Timers.Timer(); + clientCheckTimer.Interval = ticktime; + clientCheckTimer.AutoReset = true; + clientCheckTimer.Elapsed += new ElapsedEventHandler(ClientCheckClearOffline_Elapsed); + clientCheckTimer.Enabled = true; + + pingTickARE = AppSrv.g_Tick.AddNewARE(TickManager.TickType.Interval_2000MS); + threadPingTick = new Thread(PingAllLoop); + threadPingTick.Start(); } public long GetNextUID() @@ -192,11 +231,75 @@ namespace AxibugEmuOnline.Server.Manager #endregion + #region Ping + void PingAllLoop() + { + while (true) + { + pingTickARE.WaitOne(); + AppSrv.g_Log.Info("PingAll"); + PingAll(); + } + } + void PingAll() + { + List clientlist = GetOnlineClientList(); + int randSeed = new Random().Next(0, int.MaxValue); + foreach (var _c in clientlist) + { + _c.LastPingSeed = randSeed; + _c.LastStartPingTime = AppSrv.g_Tick.sw.Elapsed; + + Protobuf_Ping resp = new Protobuf_Ping() + { + Seed = randSeed, + }; + AppSrv.g_ClientMgr.ClientSend(_c._socket, (int)CommandID.CmdPing, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); + } + } + public void OnCmdPing(Socket sk, byte[] reqData) + { + AppSrv.g_Log.Debug($"OnCmdPing"); + ClientInfo _c = AppSrv.g_ClientMgr.GetClientForSocket(sk); + Protobuf_Ping msg = ProtoBufHelper.DeSerizlize(reqData); + + //创建成功下行 + Protobuf_Pong resp = new Protobuf_Pong() + { + Seed = msg.Seed, + }; + AppSrv.g_ClientMgr.ClientSend(_c._socket, (int)CommandID.CmdPong, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); + } + public void OnCmdPong(Socket sk, byte[] reqData) + { + AppSrv.g_Log.Debug($"OnCmdPong"); + ClientInfo _c = AppSrv.g_ClientMgr.GetClientForSocket(sk); + Protobuf_Pong msg = ProtoBufHelper.DeSerizlize(reqData); + + if (_c.LastPingSeed == msg.Seed) + { + TimeSpan current = AppSrv.g_Tick.sw.Elapsed; + TimeSpan delta = current - _c.LastStartPingTime; + _c.NetDelay = delta.TotalSeconds; + } + } + #endregion + public void ClientSendALL(int CMDID, int ERRCODE, byte[] data, long SkipUID = -1) { ClientSend(ClientList, CMDID, ERRCODE, data, SkipUID); } + public void ClientSend(List UIDs,int CMDID, int ERRCODE, byte[] data, long SkipUID = -1) + { + for (int i = 0; i < UIDs.Count(); i++) + { + if (!GetClientByUID(UIDs[i], out ClientInfo _c, true)) + continue; + AppSrv.g_SocketMgr.SendToSocket(_c._socket, CMDID, ERRCODE, data); + } + } + /// /// 给一组用户发送数据 /// diff --git a/AxibugEmuOnline.Server/Manager/GameManager.cs b/AxibugEmuOnline.Server/Manager/GameManager.cs index 80dd2c6..01122ca 100644 --- a/AxibugEmuOnline.Server/Manager/GameManager.cs +++ b/AxibugEmuOnline.Server/Manager/GameManager.cs @@ -2,7 +2,6 @@ using AxibugEmuOnline.Server.Manager; using AxibugEmuOnline.Server.NetWork; using AxibugProtobuf; -using System.Net; using System.Net.Sockets; namespace AxibugEmuOnline.Server diff --git a/AxibugEmuOnline.Server/Manager/LoginManager.cs b/AxibugEmuOnline.Server/Manager/LoginManager.cs index ac4c921..98a8b34 100644 --- a/AxibugEmuOnline.Server/Manager/LoginManager.cs +++ b/AxibugEmuOnline.Server/Manager/LoginManager.cs @@ -26,7 +26,6 @@ namespace AxibugEmuOnline.Server.Manager Token = "", UID = cinfo.UID }); - } } } \ No newline at end of file diff --git a/AxibugEmuOnline.Server/Manager/RoomManager.cs b/AxibugEmuOnline.Server/Manager/RoomManager.cs index b8a6299..9719573 100644 --- a/AxibugEmuOnline.Server/Manager/RoomManager.cs +++ b/AxibugEmuOnline.Server/Manager/RoomManager.cs @@ -2,9 +2,10 @@ using AxibugEmuOnline.Server.Manager; using AxibugEmuOnline.Server.NetWork; using AxibugProtobuf; -using System.Net; +using System; using System.Net.Sockets; -using static System.Runtime.InteropServices.JavaScript.JSType; +using System.Runtime.InteropServices; +using System.Xml; namespace AxibugEmuOnline.Server { @@ -12,14 +13,22 @@ namespace AxibugEmuOnline.Server public class RoomManager { Dictionary mDictRoom = new Dictionary(); + List mKeyRoomList = new List(); + AutoResetEvent roomTickARE; + Thread threadRoomTick; + int RoomIDSeed = 1; public RoomManager() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomList, OnCmdRoomList); - NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomCreate, OnCmdRoomCreate); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomJoin, OnCmdRoomJoin); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomLeave, OnCmdRoomLeave); + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomSingelPlayerInput, OnSingelPlayerInput); + + roomTickARE = AppSrv.g_Tick.AddNewARE(TickManager.TickType.Interval_16MS); + threadRoomTick = new Thread(UpdateLoopTick); + threadRoomTick.Start(); } #region 房间管理 @@ -31,32 +40,33 @@ namespace AxibugEmuOnline.Server void AddRoom(Data_RoomData data) { - lock (mDictRoom) + lock (mDictRoom) { if (!mDictRoom.ContainsKey(data.RoomID)) { mDictRoom.Add(data.RoomID, data); + mKeyRoomList.Remove(data.RoomID); } } } - void RemoveRoom(int RoomID) + void RemoveRoom(int RoomID) { - lock(mDictRoom) + lock (mDictRoom) { if (mDictRoom.ContainsKey(RoomID)) { mDictRoom.Remove(RoomID); + mKeyRoomList.Remove(RoomID); } } } - public Data_RoomData GetRoomData(int RoomID) + public Data_RoomData GetRoomData(int RoomID) { - if (!mDictRoom.ContainsKey(RoomID)) + if (!mDictRoom.TryGetValue(RoomID,out Data_RoomData data)) return null; - - return mDictRoom[RoomID]; + return data; } List GetRoomList() @@ -105,7 +115,7 @@ namespace AxibugEmuOnline.Server Protobuf_Room_List_RESP resp = new Protobuf_Room_List_RESP(); List temp = GetRoomList(); - foreach (var room in temp) + foreach (var room in temp) resp.RoomMiniInfoList.Add(GetProtoDataRoom(room)); AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdChatmsg, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); } @@ -115,7 +125,7 @@ namespace AxibugEmuOnline.Server /// /// /// //[0] 更新或新增 [1] 删除 - public void SendRoomUpdateToAll(int RoomID,int type) + public void SendRoomUpdateToAll(int RoomID, int type) { Data_RoomData room = GetRoomData(RoomID); if (room == null) @@ -129,7 +139,7 @@ namespace AxibugEmuOnline.Server AppSrv.g_ClientMgr.ClientSendALL((int)CommandID.CmdRoomListUpdate, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); } - + public void OnCmdRoomCreate(Socket sk, byte[] reqData) { AppSrv.g_Log.Debug($"OnCmdRoomCreate "); @@ -137,7 +147,7 @@ namespace AxibugEmuOnline.Server Protobuf_Room_Create msg = ProtoBufHelper.DeSerizlize(reqData); Data_RoomData newRoom = new Data_RoomData(); - newRoom.Init(GetNewRoomID(), msg.GameRomID,msg.GameRomHash); + newRoom.Init(GetNewRoomID(), msg.GameRomID, msg.GameRomHash); AddRoom(newRoom); @@ -203,6 +213,16 @@ namespace AxibugEmuOnline.Server AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdRoomLeave, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); Protobuf_Room_MyRoom_State_Change(msg.RoomID); } + public void OnSingelPlayerInput(Socket sk, byte[] reqData) + { + ClientInfo _c = AppSrv.g_ClientMgr.GetClientForSocket(sk); + Protobuf_Room_SinglePlayerInputData msg = ProtoBufHelper.DeSerizlize(reqData); + + Data_RoomData room = GetRoomData(_c.RoomState.RoomID); + if (room == null) + return; + room.SetPlayerInput(_c.RoomState.PlayerIdx, msg.FrameID, (ushort)msg.InputData); + } /// /// 广播房间状态变化 @@ -221,9 +241,9 @@ namespace AxibugEmuOnline.Server List userlist = room.GetAllPlayerClientList(); - foreach(ClientInfo _c in userlist) + foreach (ClientInfo _c in userlist) { - AppSrv.g_ClientMgr.ClientSend(_c,(int)CommandID.CmdRoomMyRoomStateChanged, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); + AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdRoomMyRoomStateChanged, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); } } @@ -236,7 +256,7 @@ namespace AxibugEmuOnline.Server /// /// /// - bool Join(int RoomID,int PlayerNum,ClientInfo _c,out ErrorCode errcode) + bool Join(int RoomID, int PlayerNum, ClientInfo _c, out ErrorCode errcode) { Data_RoomData room = GetRoomData(RoomID); if (room == null) @@ -252,7 +272,7 @@ namespace AxibugEmuOnline.Server errcode = ErrorCode.ErrorRoomSlotReadlyHadPlayer; return false; } - room.Player1_UID = _c.UID; + room.SetPlayerUID(0,_c); } //其他玩家 else @@ -262,7 +282,7 @@ namespace AxibugEmuOnline.Server errcode = ErrorCode.ErrorRoomSlotReadlyHadPlayer; return false; } - room.Player2_UID = _c.UID; + room.SetPlayerUID(1, _c); } //广播房间 @@ -287,10 +307,7 @@ namespace AxibugEmuOnline.Server return false; } - if (room.Player1_UID == _c.UID) - room.Player1_UID = -1; - if (room.Player2_UID == _c.UID) - room.Player2_UID = -1; + room.RemovePlayer(_c); if (room.PlayerState == RoomPlayerState.NonePlayerState) { @@ -306,26 +323,108 @@ namespace AxibugEmuOnline.Server return true; } #endregion + + + #region 房间帧循环 + void UpdateLoopTick() + { + while (true) + { + roomTickARE.WaitOne(); + UpdateAllRoomLogic(); + } + } + void UpdateAllRoomLogic() + { + for (int i = 0; i < mKeyRoomList.Count; i++) + { + int roomid = mKeyRoomList[i]; + if (!mDictRoom.TryGetValue(roomid,out Data_RoomData room)) + continue; + if (room.GameState > RoomGameState.InGame) + continue; + //更新帧 + room.TakeFrame(); + //广播 + room.SynInputData(); + } + } + #endregion } public class Data_RoomData { - public int RoomID; - public int GameRomID; - public string RomHash; - public long Player1_UID; - public long Player2_UID; + public int RoomID { get; private set; } + public int GameRomID { get; private set; } + public string RomHash { get; private set; } + public bool bNeedLoadState { get; private set; } + public int LoadStateFrame { get; private set; } + public Google.Protobuf.ByteString LoadStateRaw { get; set; } + public long Player1_UID { get; private set; } + public long Player2_UID { get; private set; } + public long Player3_UID { get; private set; } + public long Player4_UID { get; private set; } + public bool[] PlayerReadyState { get; private set; } + public List SynUIDs; public RoomPlayerState PlayerState => getPlayerState(); public RoomGameState GameState; + public uint mCurrFrameId = 0; + public ServerInputSnapShot mCurrInputData; + public Queue<(uint, ServerInputSnapShot)> mInputQueue; + //TODO + public Dictionary> mDictPlayerIdx2SendQueue; - public void Init(int roomID,int gameRomID,string roomHash) + public void Init(int roomID, int gameRomID, string roomHash, bool bloadState = false) { RoomID = roomID; GameRomID = gameRomID; RomHash = roomHash; Player1_UID = -1; Player2_UID = -1; + Player3_UID = -1; + Player4_UID = -1; + SynUIDs = new List();//广播角色列表 GameState = RoomGameState.NoneGameState; + mCurrInputData = new ServerInputSnapShot(); + mInputQueue = new Queue<(uint, ServerInputSnapShot)>(); + } + + public void SetPlayerUID(int PlayerIdx,ClientInfo _c) + { + long oldUID = -1; + switch (PlayerIdx) + { + case 0: oldUID = Player1_UID; Player1_UID = _c.UID; break; + case 1: oldUID = Player2_UID; Player2_UID = _c.UID; break; + case 2: oldUID = Player3_UID; Player3_UID = _c.UID; break; + case 3: oldUID = Player4_UID; Player4_UID = _c.UID; break; + } + if(oldUID <= 0) + SynUIDs.Remove(oldUID); + SynUIDs.Add(_c.UID); + _c.RoomState.SetRoomData(this.RoomID, PlayerIdx); + } + + public void RemovePlayer(ClientInfo _c) + { + int PlayerIdx = GetPlayerIdx(_c); + switch (PlayerIdx) + { + case 0: Player1_UID = -1; SynUIDs.Remove(_c.UID);break; + case 1: Player2_UID = -1; SynUIDs.Remove(_c.UID);break; + case 2: Player3_UID = -1; SynUIDs.Remove(_c.UID);break; + case 3: Player4_UID = -1; SynUIDs.Remove(_c.UID);break; + } + _c.RoomState.ClearRoomData(); + } + + int GetPlayerIdx(ClientInfo _c) + { + if (Player1_UID == _c.UID) return 0; + if (Player2_UID == _c.UID) return 1; + if (Player3_UID == _c.UID) return 2; + if (Player4_UID == _c.UID) return 3; + return -1; } RoomPlayerState getPlayerState() @@ -358,7 +457,7 @@ namespace AxibugEmuOnline.Server foreach (long uid in Uids) { - if (!AppSrv.g_ClientMgr.GetClientByUID(uid, out ClientInfo _c,true)) + if (!AppSrv.g_ClientMgr.GetClientByUID(uid, out ClientInfo _c, true)) continue; list.Add(_c); @@ -366,5 +465,65 @@ namespace AxibugEmuOnline.Server return list; } + + public void SetPlayerInput(int PlayerIdx,long mFrameID,ushort input) + { + switch (PlayerIdx) + { + case 0: mCurrInputData.p1 = input; break; + case 1: mCurrInputData.p2 = input; break; + case 2: mCurrInputData.p3 = input; break; + case 3: mCurrInputData.p4 = input; break; + } + } + + public void ClearPlayerInput(int PlayerIdx) + { + switch (PlayerIdx) + { + case 0: mCurrInputData.p1 = 0; break; + case 1: mCurrInputData.p2 = 0; break; + case 2: mCurrInputData.p3 = 0; break; + case 3: mCurrInputData.p4 = 0; break; + } + } + + public void TakeFrame() + { + mInputQueue.Enqueue((mCurrFrameId, mCurrInputData)); + mCurrFrameId++; + } + + /// + /// 广播数据 + /// + public void SynInputData() + { + while (mInputQueue.Count > 0) + { + (uint frameId, ServerInputSnapShot inputdata) data = mInputQueue.Dequeue(); + Protobuf_Room_Syn_RoomFrameAllInput resp = new Protobuf_Room_Syn_RoomFrameAllInput() + { + FrameID = data.frameId, + InputData = data.inputdata.all + }; + AppSrv.g_ClientMgr.ClientSendALL((int)CommandID.CmdRoomSyn, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); + } + } + } + + [StructLayout(LayoutKind.Explicit)] + public struct ServerInputSnapShot + { + [FieldOffset(0)] + public UInt64 all; + [FieldOffset(0)] + public ushort p1; + [FieldOffset(2)] + public ushort p2; + [FieldOffset(4)] + public ushort p3; + [FieldOffset(6)] + public ushort p4; } } \ No newline at end of file diff --git a/AxibugEmuOnline.Server/Manager/TickManager.cs b/AxibugEmuOnline.Server/Manager/TickManager.cs new file mode 100644 index 0000000..8660e83 --- /dev/null +++ b/AxibugEmuOnline.Server/Manager/TickManager.cs @@ -0,0 +1,72 @@ +using System.Diagnostics; + +namespace AxibugEmuOnline.Server.Manager +{ + public class TickManager + { + public Stopwatch sw; + public enum TickType + { + Interval_16MS, + Interval_32MS, + Interval_2000MS, + } + + System.Timers.Timer mTimer16ms; + System.Timers.Timer mTimer32ms; + System.Timers.Timer mTimer2000ms; + List mAREList16ms; + List mAREList32ms; + List mAREList2000ms; + + public TickManager() + { + sw = Stopwatch.StartNew(); + mAREList16ms = new List(); + mAREList32ms = new List(); + mAREList2000ms = new List(); + + mTimer16ms = new System.Timers.Timer(16);//实例化Timer类,设置间隔时间为10000毫秒; + mTimer16ms.Elapsed += new System.Timers.ElapsedEventHandler((source, e) => { UpdateARE(mAREList16ms); });//到达时间的时候执行事件; + mTimer16ms.AutoReset = true;//设置是执行一次(false)还是一直执行(true); + mTimer16ms.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; + mTimer16ms.Start(); + + mTimer32ms = new System.Timers.Timer(32);//实例化Timer类,设置间隔时间为10000毫秒; + mTimer32ms.Elapsed += new System.Timers.ElapsedEventHandler((source, e) => { UpdateARE(mAREList32ms); });//到达时间的时候执行事件; + mTimer32ms.AutoReset = true;//设置是执行一次(false)还是一直执行(true); + mTimer32ms.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; + mTimer32ms.Start(); + + mTimer2000ms = new System.Timers.Timer(2000);//实例化Timer类,设置间隔时间为10000毫秒; + mTimer2000ms.Elapsed += new System.Timers.ElapsedEventHandler((source, e) => { UpdateARE(mAREList2000ms); });//到达时间的时候执行事件; + mTimer2000ms.AutoReset = true;//设置是执行一次(false)还是一直执行(true); + mTimer2000ms.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; + mTimer2000ms.Start(); + } + + public AutoResetEvent AddNewARE(TickType tikeType) + { + AutoResetEvent are = new AutoResetEvent(false); + switch (tikeType) + { + case TickType.Interval_16MS: + mAREList16ms.Add(are); + break; + case TickType.Interval_32MS: + mAREList32ms.Add(are); + break; + case TickType.Interval_2000MS: + mAREList2000ms.Add(are); + break; + } + return are; + } + + public void UpdateARE(List are) + { + for (int i = 0; i < are.Count; i++) + are[i].Set(); + } + } +} \ No newline at end of file diff --git a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs index ea11a55..3bdffac 100644 --- a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs @@ -27,72 +27,93 @@ namespace AxibugProtobuf { "Ch5wcm90b2J1Zl9BeGlidWdFbXVPbmxpbmUucHJvdG8SDkF4aWJ1Z1Byb3Rv", "YnVmIiMKEFByb3RvYnVmX0NoYXRNc2cSDwoHQ2hhdE1zZxgBIAEoCSJIChVQ", "cm90b2J1Zl9DaGF0TXNnX1JFU1ASEAoITmlja05hbWUYASABKAkSDwoHQ2hh", - "dE1zZxgCIAEoCRIMCgREYXRlGAMgASgDIpEBCg5Qcm90b2J1Zl9Mb2dpbhIs", - "Cglsb2dpblR5cGUYASABKA4yGS5BeGlidWdQcm90b2J1Zi5Mb2dpblR5cGUS", - "LgoKZGV2aWNlVHlwZRgCIAEoDjIaLkF4aWJ1Z1Byb3RvYnVmLkRldmljZVR5", - "cGUSDwoHQWNjb3VudBgDIAEoCRIQCghQYXNzd29yZBgEIAEoCSKMAQoTUHJv", - "dG9idWZfTG9naW5fUkVTUBINCgVUb2tlbhgBIAEoCRIVCg1MYXN0TG9naW5E", - "YXRlGAIgASgJEg8KB1JlZ0RhdGUYAyABKAkSMQoGU3RhdHVzGAQgASgOMiEu", - "QXhpYnVnUHJvdG9idWYuTG9naW5SZXN1bHRTdGF0dXMSCwoDVUlEGAUgASgD", - "IhQKElByb3RvYnVmX1Jvb21fTGlzdCJbChdQcm90b2J1Zl9Sb29tX0xpc3Rf", - "UkVTUBJAChBSb29tTWluaUluZm9MaXN0GAEgAygLMiYuQXhpYnVnUHJvdG9i", - "dWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyKsAgoWUHJvdG9idWZfUm9vbV9N", - "aW5pSW5mbxIOCgZSb29tSUQYASABKAUSEQoJR2FtZVJvbUlEGAIgASgFEhMK", - "C0dhbWVSb21IYXNoGAMgASgJEjQKC1BsYXllclN0YXRlGAQgASgOMh8uQXhp", - "YnVnUHJvdG9idWYuUm9vbVBsYXllclN0YXRlEjAKCUdhbWVTdGF0ZRgFIAEo", - "DjIdLkF4aWJ1Z1Byb3RvYnVmLlJvb21HYW1lU3RhdGUSFAoMT2JzVXNlckNv", - "dW50GAYgASgFEhMKC1BsYXllcjFfVUlEGAcgASgDEhgKEFBsYXllcjFfTmlj", - "a05hbWUYCCABKAkSEwoLUGxheWVyMl9VSUQYCSABKAMSGAoQUGxheWVyMl9O", - "aWNrTmFtZRgKIAEoCSJtChlQcm90b2J1Zl9Sb29tX1VwZGF0ZV9SRVNQEhIK", - "ClVwZGF0ZVR5cGUYASABKAUSPAoMUm9vbU1pbmlJbmZvGAIgASgLMiYuQXhp", - "YnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyJLChVQcm90b2J1", - "Zl9TY3Jlbm5fRnJhbWUSDgoGUm9vbUlEGAEgASgFEg8KB0ZyYW1lSUQYAiAB", - "KAUSEQoJUmF3Qml0bWFwGAMgASgMIj4KFFByb3RvYnVmX1Jvb21fQ3JlYXRl", - "EhEKCUdhbWVSb21JRBgBIAEoBRITCgtHYW1lUm9tSGFzaBgCIAEoCSJZChlQ", - "cm90b2J1Zl9Sb29tX0NyZWF0ZV9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEo", - "CzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iNwoS", - "UHJvdG9idWZfUm9vbV9Kb2luEg4KBlJvb21JRBgBIAEoBRIRCglQbGF5ZXJO", - "dW0YAiABKAUiVwoXUHJvdG9idWZfUm9vbV9Kb2luX1JFU1ASPAoMUm9vbU1p", - "bmlJbmZvGAEgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9N", - "aW5pSW5mbyIlChNQcm90b2J1Zl9Sb29tX0xlYXZlEg4KBlJvb21JRBgBIAEo", - "BSIqChhQcm90b2J1Zl9Sb29tX0xlYXZlX1JFU1ASDgoGUm9vbUlEGAEgASgF", - "ImEKIVByb3RvYnVmX1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZRI8CgxSb29t", - "TWluaUluZm8YASABKAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29t", - "X01pbmlJbmZvKuABCglDb21tYW5kSUQSDgoKQ01EX0RFRkFVTBAAEg4KCUNN", - "RF9MT0dJThDRDxIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9vbV9MaXN0", - "EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhQKD0NNRF9Sb29tX0Ny", - "ZWF0ZRDtJxISCg1DTURfUm9vbV9Kb2luEPEnEhMKDkNNRF9Sb29tX0xlYXZl", - "EPInEiIKHUNNRF9Sb29tX015Um9vbV9TdGF0ZV9DaGFuZ2VkEPYnEg8KCkNN", - "RF9TY3JlZW4Q8S4qbAoJRXJyb3JDb2RlEhAKDEVSUk9SX0RFRkFVTBAAEgwK", - "CEVSUk9SX09LEAESGAoURVJST1JfUk9PTV9OT1RfRk9VTkQQChIlCiFFUlJP", - "Ul9ST09NX1NMT1RfUkVBRExZX0hBRF9QTEFZRVIQCyocCglMb2dpblR5cGUS", - "DwoLQmFzZURlZmF1bHQQACpLCgpEZXZpY2VUeXBlEhYKEkRldmljZVR5cGVf", - "RGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9pZBACEgcKA0lPUxADEgcKA1BT", - "VhAEKk8KD1Jvb21QbGF5ZXJTdGF0ZRIUChBOb25lX1BsYXllclN0YXRlEAAS", - "CgoGT25seVAxEAESCgoGT25seVAyEAISDgoKQm90aE9ubGluZRADKjoKDVJv", - "b21HYW1lU3RhdGUSEgoOTm9uZV9HYW1lU3RhdGUQABIKCgZJbkdhbWUQARIJ", - "CgVQYXVzZRACKk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0", - "U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJC", - "AkgBYgZwcm90bzM=")); + "dE1zZxgCIAEoCRIMCgREYXRlGAMgASgDIh0KDVByb3RvYnVmX1BpbmcSDAoE", + "U2VlZBgBIAEoBSIdCg1Qcm90b2J1Zl9Qb25nEgwKBFNlZWQYASABKAUikQEK", + "DlByb3RvYnVmX0xvZ2luEiwKCWxvZ2luVHlwZRgBIAEoDjIZLkF4aWJ1Z1By", + "b3RvYnVmLkxvZ2luVHlwZRIuCgpkZXZpY2VUeXBlGAIgASgOMhouQXhpYnVn", + "UHJvdG9idWYuRGV2aWNlVHlwZRIPCgdBY2NvdW50GAMgASgJEhAKCFBhc3N3", + "b3JkGAQgASgJIqABChNQcm90b2J1Zl9Mb2dpbl9SRVNQEhIKCkRldmljZVVV", + "SUQYASABKAkSDQoFVG9rZW4YAiABKAkSFQoNTGFzdExvZ2luRGF0ZRgDIAEo", + "CRIPCgdSZWdEYXRlGAQgASgJEjEKBlN0YXR1cxgFIAEoDjIhLkF4aWJ1Z1By", + "b3RvYnVmLkxvZ2luUmVzdWx0U3RhdHVzEgsKA1VJRBgGIAEoAyIUChJQcm90", + "b2J1Zl9Sb29tX0xpc3QiWwoXUHJvdG9idWZfUm9vbV9MaXN0X1JFU1ASQAoQ", + "Um9vbU1pbmlJbmZvTGlzdBgBIAMoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3Rv", + "YnVmX1Jvb21fTWluaUluZm8irAIKFlByb3RvYnVmX1Jvb21fTWluaUluZm8S", + "DgoGUm9vbUlEGAEgASgFEhEKCUdhbWVSb21JRBgCIAEoBRITCgtHYW1lUm9t", + "SGFzaBgDIAEoCRI0CgtQbGF5ZXJTdGF0ZRgEIAEoDjIfLkF4aWJ1Z1Byb3Rv", + "YnVmLlJvb21QbGF5ZXJTdGF0ZRIwCglHYW1lU3RhdGUYBSABKA4yHS5BeGli", + "dWdQcm90b2J1Zi5Sb29tR2FtZVN0YXRlEhQKDE9ic1VzZXJDb3VudBgGIAEo", + "BRITCgtQbGF5ZXIxX1VJRBgHIAEoAxIYChBQbGF5ZXIxX05pY2tOYW1lGAgg", + "ASgJEhMKC1BsYXllcjJfVUlEGAkgASgDEhgKEFBsYXllcjJfTmlja05hbWUY", + "CiABKAkibQoZUHJvdG9idWZfUm9vbV9VcGRhdGVfUkVTUBISCgpVcGRhdGVU", + "eXBlGAEgASgFEjwKDFJvb21NaW5pSW5mbxgCIAEoCzImLkF4aWJ1Z1Byb3Rv", + "YnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iSwoVUHJvdG9idWZfU2NyZW5u", + "X0ZyYW1lEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJh", + "d0JpdG1hcBgDIAEoDCJJCiNQcm90b2J1Zl9Sb29tX1NpbmdsZVBsYXllcklu", + "cHV0RGF0YRIPCgdGcmFtZUlEGAEgASgNEhEKCUlucHV0RGF0YRgCIAEoDSJJ", + "CiNQcm90b2J1Zl9Sb29tX1N5bl9Sb29tRnJhbWVBbGxJbnB1dBIPCgdGcmFt", + "ZUlEGAEgASgNEhEKCUlucHV0RGF0YRgCIAEoBCI+ChRQcm90b2J1Zl9Sb29t", + "X0NyZWF0ZRIRCglHYW1lUm9tSUQYASABKAUSEwoLR2FtZVJvbUhhc2gYAiAB", + "KAkiWQoZUHJvdG9idWZfUm9vbV9DcmVhdGVfUkVTUBI8CgxSb29tTWluaUlu", + "Zm8YASABKAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJ", + "bmZvIjcKElByb3RvYnVmX1Jvb21fSm9pbhIOCgZSb29tSUQYASABKAUSEQoJ", + "UGxheWVyTnVtGAIgASgFIlcKF1Byb3RvYnVmX1Jvb21fSm9pbl9SRVNQEjwK", + "DFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVm", + "X1Jvb21fTWluaUluZm8iJQoTUHJvdG9idWZfUm9vbV9MZWF2ZRIOCgZSb29t", + "SUQYASABKAUiKgoYUHJvdG9idWZfUm9vbV9MZWF2ZV9SRVNQEg4KBlJvb21J", + "RBgBIAEoBSJhCiFQcm90b2J1Zl9Sb29tX015Um9vbV9TdGF0ZV9DaGFuZ2US", + "PAoMUm9vbU1pbmlJbmZvGAEgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9i", + "dWZfUm9vbV9NaW5pSW5mbyIvChtQcm90b2J1Zl9Sb29tX1dhaXRTdGVwX1JF", + "U1ASEAoIV2FpdFN0ZXAYASABKAUiUwonUHJvdG9idWZfUm9vbV9Ib3N0UGxh", + "eWVyX1VwZGF0ZVN0YXRlUmF3EhIKClJlYWR5RnJhbWUYASABKAUSFAoMTG9h", + "ZFN0YXRlUmF3GAIgASgMIhwKGlByb3RvYnVmX1Jvb21fUGxheWVyX1JlYWR5", + "Ko4DCglDb21tYW5kSUQSDgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAES", + "DAoIQ01EX1BPTkcQAhIOCglDTURfTE9HSU4Q0Q8SEAoLQ01EX0NIQVRNU0cQ", + "oR8SEgoNQ01EX1Jvb21fTGlzdBCJJxIZChRDTURfUm9vbV9MaXN0X1VwZGF0", + "ZRCKJxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDx", + "JxITCg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3Rh", + "dGVfQ2hhbmdlZBD2JxIWChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJDTURf", + "Um9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9Sb29t", + "X1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVySW5w", + "dXQQ+i4SEQoMQ01EX1JPT01fU1lOEP8uEg8KCkNNRF9TY3JlZW4Q2TYqbAoJ", + "RXJyb3JDb2RlEhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09LEAESGAoU", + "RVJST1JfUk9PTV9OT1RfRk9VTkQQChIlCiFFUlJPUl9ST09NX1NMT1RfUkVB", + "RExZX0hBRF9QTEFZRVIQCyocCglMb2dpblR5cGUSDwoLQmFzZURlZmF1bHQQ", + "ACpLCgpEZXZpY2VUeXBlEhYKEkRldmljZVR5cGVfRGVmYXVsdBAAEgYKAlBD", + "EAESCwoHQW5kcm9pZBACEgcKA0lPUxADEgcKA1BTVhAEKk8KD1Jvb21QbGF5", + "ZXJTdGF0ZRIUChBOb25lX1BsYXllclN0YXRlEAASCgoGT25seVAxEAESCgoG", + "T25seVAyEAISDgoKQm90aE9ubGluZRADKnsKDVJvb21HYW1lU3RhdGUSEgoO", + "Tm9uZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEg8KC1JlYWR5U3RlcF8w", + "EAISDwoLUmVhZHlTdGVwXzEQAxIPCgtSZWFkeVN0ZXBfMhAEEgkKBVBhdXNl", + "EAUSCgoGSW5HYW1lEAYqTgoRTG9naW5SZXN1bHRTdGF0dXMSIQodTG9naW5S", + "ZXN1bHRTdGF0dXNfQmFzZURlZmF1bHQQABIGCgJPSxABEg4KCkFjY291bnRF", + "cnIQAkICSAFiBnByb3RvMw==")); 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.RoomPlayerState), 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), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Pong), global::AxibugProtobuf.Protobuf_Pong.Parser, new[]{ "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login), global::AxibugProtobuf.Protobuf_Login.Parser, new[]{ "LoginType", "DeviceType", "Account", "Password" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "Token", "LastLoginDate", "RegDate", "Status", "UID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "DeviceUUID", "Token", "LastLoginDate", "RegDate", "Status", "UID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_List), global::AxibugProtobuf.Protobuf_Room_List.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_List_RESP), global::AxibugProtobuf.Protobuf_Room_List_RESP.Parser, new[]{ "RoomMiniInfoList" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_MiniInfo), global::AxibugProtobuf.Protobuf_Room_MiniInfo.Parser, new[]{ "RoomID", "GameRomID", "GameRomHash", "PlayerState", "GameState", "ObsUserCount", "Player1UID", "Player1NickName", "Player2UID", "Player2NickName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Update_RESP), global::AxibugProtobuf.Protobuf_Room_Update_RESP.Parser, new[]{ "UpdateType", "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Screnn_Frame), global::AxibugProtobuf.Protobuf_Screnn_Frame.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData), global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData.Parser, new[]{ "FrameID", "InputData" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInput), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInput.Parser, new[]{ "FrameID", "InputData" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create), global::AxibugProtobuf.Protobuf_Room_Create.Parser, new[]{ "GameRomID", "GameRomHash" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create_RESP), global::AxibugProtobuf.Protobuf_Room_Create_RESP.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Join), global::AxibugProtobuf.Protobuf_Room_Join.Parser, new[]{ "RoomID", "PlayerNum" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Join_RESP), global::AxibugProtobuf.Protobuf_Room_Join_RESP.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Leave), global::AxibugProtobuf.Protobuf_Room_Leave.Parser, new[]{ "RoomID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Leave_RESP), global::AxibugProtobuf.Protobuf_Room_Leave_RESP.Parser, new[]{ "RoomID" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change), global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change), global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP), global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP.Parser, new[]{ "WaitStep" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw.Parser, new[]{ "ReadyFrame", "LoadStateRaw" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, null, null, null, null, null) })); } #endregion @@ -105,6 +126,14 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_DEFAUL")] CmdDefaul = 0, /// + ///服务器或客户端,均可主动ping请求,对方响应。(这里测全流程延迟,即序 列化->发送->传输过程->接收->反序列化) + /// + [pbr::OriginalName("CMD_PING")] CmdPing = 1, + /// + ///Pong | 响应 对应 Protobuf_Pong + /// + [pbr::OriginalName("CMD_PONG")] CmdPong = 2, + /// ///自动登录上行 | 下行 对应 Protobuf_Login | Protobuf_Login_RESP /// [pbr::OriginalName("CMD_LOGIN")] CmdLogin = 2001, @@ -113,7 +142,7 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_CHATMSG")] CmdChatmsg = 4001, /// - ///房间列表相关 + ///房间列表相关(仅用于列表显示) /// [pbr::OriginalName("CMD_Room_List")] CmdRoomList = 5001, /// @@ -125,21 +154,59 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_Room_Create")] CmdRoomCreate = 5101, /// - ///房间列表加入 对应 Protobuf_Room_Join | Protobuf_Room_Join_RESP + ///房间加入 对应 Protobuf_Room_Join | Protobuf_Room_Join_RESP /// [pbr::OriginalName("CMD_Room_Join")] CmdRoomJoin = 5105, /// - ///房间列表离开 对应 Protobuf_Room_Leave | Protobuf_Room_Leave_RESP + ///房间离开 对应 Protobuf_Room_Leave | Protobuf_Room_Leave_RESP /// [pbr::OriginalName("CMD_Room_Leave")] CmdRoomLeave = 5106, /// - ///我所在的房间内状态发生变化 对应 Protobuf_Room_MyRoom_State_Change; + ///我所在的房间内状态发生变化 对应 Protobuf_Room_MyRoom_State_Change /// [pbr::OriginalName("CMD_Room_MyRoom_State_Changed")] CmdRoomMyRoomStateChanged = 5110, /// + ///准备和开始流程(5201 ~ 5204 ~ 5208) + /// + /// 我们采用,玩家可以随时进入的方式开发 + /// + /// 设计流程: + /// + /// Step0:服务器广播"等待-主机上报即使存档" CMD_Room_WaitStep WaitStep=[0] ---> 客户端:暂停模拟器核心:全员等待(主机玩家一人上传即时存档) + /// 主机玩家 上行 CMD_Room_HostPlayer_UpdateStateRaw消息,上传即时存档 + /// 主机玩家上传完毕之后,服务器会通知进入Step1 + /// + /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待(主机玩家一人上传) + /// 所有玩家确保加载ROM和即时存档,并保持模拟器暂停,准备完毕后 发送 CMD_Room_Player_Ready + /// 所有玩家Ready之后,服务器会根据所有玩家延迟提前跑若干Frame,通知进入Step2 + /// + /// Step2:服务器广播"开始" CMD_Room_WaitStep WaitStep=[2] ---> 客户端:立即开始 + /// + /// PS:[联机过程中加载即时存档] 房间在游玩过程中,单个玩家发送CMD_Room_HostPlayer_UpdateStateRaw 上报即时存档 + /// 重新从Step1走流程 + /// + /// + [pbr::OriginalName("CMD_Room_WaitStep")] CmdRoomWaitStep = 5201, + /// + ///服务器房间准备和开始标识 下行 Protobuf_Room_HostPlayer_UpdateStateRaw + /// + [pbr::OriginalName("CMD_Room_HostPlayer_UpdateStateRaw")] CmdRoomHostPlayerUpdateStateRaw = 5204, + /// + ///玩家准备完毕 上行 Protobuf_Room_Player_Ready + /// + [pbr::OriginalName("CMD_Room_Player_Ready")] CmdRoomPlayerReady = 5208, + /// ///游戏同步 /// - [pbr::OriginalName("CMD_Screen")] CmdScreen = 6001, + [pbr::OriginalName("CMD_Room_Singel_PlayerInput")] CmdRoomSingelPlayerInput = 6010, + /// + ///单个玩家操作同步上行 对应 Protobuf_Room_Syn_RoomFrameAllInput + /// + [pbr::OriginalName("CMD_ROOM_SYN")] CmdRoomSyn = 6015, + /// + ///画面采集 + /// + [pbr::OriginalName("CMD_Screen")] CmdScreen = 7001, } public enum ErrorCode { @@ -204,13 +271,29 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("None_GameState")] NoneGameState = 0, /// - ///游戏中 + ///仅主机,待加入 /// - [pbr::OriginalName("InGame")] InGame = 1, + [pbr::OriginalName("OnlyHost")] OnlyHost = 1, + /// + ///ReadyStep0 + /// + [pbr::OriginalName("ReadyStep_0")] ReadyStep0 = 2, + /// + ///ReadyStep1 + /// + [pbr::OriginalName("ReadyStep_1")] ReadyStep1 = 3, + /// + ///ReadyStep2 + /// + [pbr::OriginalName("ReadyStep_2")] ReadyStep2 = 4, /// ///暂停 /// - [pbr::OriginalName("Pause")] Pause = 2, + [pbr::OriginalName("Pause")] Pause = 5, + /// + ///游戏中 + /// + [pbr::OriginalName("InGame")] InGame = 6, } public enum LoginResultStatus { @@ -659,6 +742,356 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Ping : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Ping()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Ping() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Ping(Protobuf_Ping other) : this() { + seed_ = other.seed_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Ping Clone() { + return new Protobuf_Ping(this); + } + + /// Field number for the "Seed" field. + public const int SeedFieldNumber = 1; + private int seed_; + /// + ///随机数 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Seed { + get { return seed_; } + set { + seed_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Ping); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Ping other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Seed != other.Seed) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Seed != 0) hash ^= Seed.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Seed != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Seed); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Ping other) { + if (other == null) { + return; + } + if (other.Seed != 0) { + Seed = other.Seed; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Pong : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Pong()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[3]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Pong() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Pong(Protobuf_Pong other) : this() { + seed_ = other.seed_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Pong Clone() { + return new Protobuf_Pong(this); + } + + /// Field number for the "Seed" field. + public const int SeedFieldNumber = 1; + private int seed_; + /// + ///原样返回随机数 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Seed { + get { return seed_; } + set { + seed_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Pong); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Pong other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Seed != other.Seed) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Seed != 0) hash ^= Seed.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Seed != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Seed); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Pong other) { + if (other == null) { + return; + } + if (other.Seed != 0) { + Seed = other.Seed; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + /// ///登录数据上行 /// @@ -674,7 +1107,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[2]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -969,7 +1402,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[3]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -986,6 +1419,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Login_RESP(Protobuf_Login_RESP other) : this() { + deviceUUID_ = other.deviceUUID_; token_ = other.token_; lastLoginDate_ = other.lastLoginDate_; regDate_ = other.regDate_; @@ -999,8 +1433,22 @@ namespace AxibugProtobuf { return new Protobuf_Login_RESP(this); } + /// Field number for the "DeviceUUID" field. + public const int DeviceUUIDFieldNumber = 1; + private string deviceUUID_ = ""; + /// + ///设备唯一串 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string DeviceUUID { + get { return deviceUUID_; } + set { + deviceUUID_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Field number for the "Token" field. - public const int TokenFieldNumber = 1; + public const int TokenFieldNumber = 2; private string token_ = ""; /// ///登录凭据 (本次登录之后,所有业务请求凭据,需要存储在内存中) @@ -1014,7 +1462,7 @@ namespace AxibugProtobuf { } /// Field number for the "LastLoginDate" field. - public const int LastLoginDateFieldNumber = 2; + public const int LastLoginDateFieldNumber = 3; private string lastLoginDate_ = ""; /// ///上次登录时间(只用于呈现的字符串,若界面需求需要) @@ -1028,7 +1476,7 @@ namespace AxibugProtobuf { } /// Field number for the "RegDate" field. - public const int RegDateFieldNumber = 3; + public const int RegDateFieldNumber = 4; private string regDate_ = ""; /// ///注册时间(只用于呈现的字符串,若界面需求需要) @@ -1042,7 +1490,7 @@ namespace AxibugProtobuf { } /// Field number for the "Status" field. - public const int StatusFieldNumber = 4; + public const int StatusFieldNumber = 5; private global::AxibugProtobuf.LoginResultStatus status_ = global::AxibugProtobuf.LoginResultStatus.BaseDefault; /// ///账号状态 (预留) [1]正常[0]被禁封 @@ -1056,7 +1504,7 @@ namespace AxibugProtobuf { } /// Field number for the "UID" field. - public const int UIDFieldNumber = 5; + public const int UIDFieldNumber = 6; private long uID_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public long UID { @@ -1079,6 +1527,7 @@ namespace AxibugProtobuf { if (ReferenceEquals(other, this)) { return true; } + if (DeviceUUID != other.DeviceUUID) return false; if (Token != other.Token) return false; if (LastLoginDate != other.LastLoginDate) return false; if (RegDate != other.RegDate) return false; @@ -1090,6 +1539,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; + if (DeviceUUID.Length != 0) hash ^= DeviceUUID.GetHashCode(); if (Token.Length != 0) hash ^= Token.GetHashCode(); if (LastLoginDate.Length != 0) hash ^= LastLoginDate.GetHashCode(); if (RegDate.Length != 0) hash ^= RegDate.GetHashCode(); @@ -1111,24 +1561,28 @@ namespace AxibugProtobuf { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (Token.Length != 0) { + if (DeviceUUID.Length != 0) { output.WriteRawTag(10); + output.WriteString(DeviceUUID); + } + if (Token.Length != 0) { + output.WriteRawTag(18); output.WriteString(Token); } if (LastLoginDate.Length != 0) { - output.WriteRawTag(18); + output.WriteRawTag(26); output.WriteString(LastLoginDate); } if (RegDate.Length != 0) { - output.WriteRawTag(26); + output.WriteRawTag(34); output.WriteString(RegDate); } if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { - output.WriteRawTag(32); + output.WriteRawTag(40); output.WriteEnum((int) Status); } if (UID != 0L) { - output.WriteRawTag(40); + output.WriteRawTag(48); output.WriteInt64(UID); } if (_unknownFields != null) { @@ -1140,24 +1594,28 @@ namespace AxibugProtobuf { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (Token.Length != 0) { + if (DeviceUUID.Length != 0) { output.WriteRawTag(10); + output.WriteString(DeviceUUID); + } + if (Token.Length != 0) { + output.WriteRawTag(18); output.WriteString(Token); } if (LastLoginDate.Length != 0) { - output.WriteRawTag(18); + output.WriteRawTag(26); output.WriteString(LastLoginDate); } if (RegDate.Length != 0) { - output.WriteRawTag(26); + output.WriteRawTag(34); output.WriteString(RegDate); } if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { - output.WriteRawTag(32); + output.WriteRawTag(40); output.WriteEnum((int) Status); } if (UID != 0L) { - output.WriteRawTag(40); + output.WriteRawTag(48); output.WriteInt64(UID); } if (_unknownFields != null) { @@ -1169,6 +1627,9 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; + if (DeviceUUID.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(DeviceUUID); + } if (Token.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Token); } @@ -1195,6 +1656,9 @@ namespace AxibugProtobuf { if (other == null) { return; } + if (other.DeviceUUID.Length != 0) { + DeviceUUID = other.DeviceUUID; + } if (other.Token.Length != 0) { Token = other.Token; } @@ -1225,22 +1689,26 @@ namespace AxibugProtobuf { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - Token = input.ReadString(); + DeviceUUID = input.ReadString(); break; } case 18: { - LastLoginDate = input.ReadString(); + Token = input.ReadString(); break; } case 26: { + LastLoginDate = input.ReadString(); + break; + } + case 34: { RegDate = input.ReadString(); break; } - case 32: { + case 40: { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } - case 40: { + case 48: { UID = input.ReadInt64(); break; } @@ -1259,22 +1727,26 @@ namespace AxibugProtobuf { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - Token = input.ReadString(); + DeviceUUID = input.ReadString(); break; } case 18: { - LastLoginDate = input.ReadString(); + Token = input.ReadString(); break; } case 26: { + LastLoginDate = input.ReadString(); + break; + } + case 34: { RegDate = input.ReadString(); break; } - case 32: { + case 40: { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } - case 40: { + case 48: { UID = input.ReadInt64(); break; } @@ -1297,7 +1769,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[4]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1433,7 +1905,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[5]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1597,7 +2069,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2120,7 +2592,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2343,7 +2815,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2584,6 +3056,434 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Room_SinglePlayerInputData : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_SinglePlayerInputData()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_SinglePlayerInputData() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_SinglePlayerInputData(Protobuf_Room_SinglePlayerInputData other) : this() { + frameID_ = other.frameID_; + inputData_ = other.inputData_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_SinglePlayerInputData Clone() { + return new Protobuf_Room_SinglePlayerInputData(this); + } + + /// Field number for the "FrameID" field. + public const int FrameIDFieldNumber = 1; + private uint frameID_; + /// + ///帧编号 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint FrameID { + get { return frameID_; } + set { + frameID_ = value; + } + } + + /// Field number for the "InputData" field. + public const int InputDataFieldNumber = 2; + private uint inputData_; + /// + ///单个玩家操作位运算汇总 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint InputData { + get { return inputData_; } + set { + inputData_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_SinglePlayerInputData); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_SinglePlayerInputData other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (FrameID != other.FrameID) return false; + if (InputData != other.InputData) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (FrameID != 0) hash ^= FrameID.GetHashCode(); + if (InputData != 0) hash ^= InputData.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0) { + output.WriteRawTag(16); + output.WriteUInt32(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0) { + output.WriteRawTag(16); + output.WriteUInt32(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (FrameID != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FrameID); + } + if (InputData != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(InputData); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_SinglePlayerInputData other) { + if (other == null) { + return; + } + if (other.FrameID != 0) { + FrameID = other.FrameID; + } + if (other.InputData != 0) { + InputData = other.InputData; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_Syn_RoomFrameAllInput : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Syn_RoomFrameAllInput()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Syn_RoomFrameAllInput() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Syn_RoomFrameAllInput(Protobuf_Room_Syn_RoomFrameAllInput other) : this() { + frameID_ = other.frameID_; + inputData_ = other.inputData_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Syn_RoomFrameAllInput Clone() { + return new Protobuf_Room_Syn_RoomFrameAllInput(this); + } + + /// Field number for the "FrameID" field. + public const int FrameIDFieldNumber = 1; + private uint frameID_; + /// + ///帧编号 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint FrameID { + get { return frameID_; } + set { + frameID_ = value; + } + } + + /// Field number for the "InputData" field. + public const int InputDataFieldNumber = 2; + private ulong inputData_; + /// + ///所有玩家操作位运算汇总 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ulong InputData { + get { return inputData_; } + set { + inputData_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Syn_RoomFrameAllInput); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Syn_RoomFrameAllInput other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (FrameID != other.FrameID) return false; + if (InputData != other.InputData) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (FrameID != 0) hash ^= FrameID.GetHashCode(); + if (InputData != 0UL) hash ^= InputData.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0UL) { + output.WriteRawTag(16); + output.WriteUInt64(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0UL) { + output.WriteRawTag(16); + output.WriteUInt64(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (FrameID != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FrameID); + } + if (InputData != 0UL) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(InputData); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Syn_RoomFrameAllInput other) { + if (other == null) { + return; + } + if (other.FrameID != 0) { + FrameID = other.FrameID; + } + if (other.InputData != 0UL) { + InputData = other.InputData; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + public sealed partial class Protobuf_Room_Create : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage @@ -2596,7 +3496,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2804,7 +3704,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2988,7 +3888,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3202,7 +4102,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3386,7 +4286,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3561,7 +4461,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3736,7 +4636,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3908,6 +4808,531 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Room_WaitStep_RESP : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_WaitStep_RESP()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_WaitStep_RESP() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_WaitStep_RESP(Protobuf_Room_WaitStep_RESP other) : this() { + waitStep_ = other.waitStep_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_WaitStep_RESP Clone() { + return new Protobuf_Room_WaitStep_RESP(this); + } + + /// Field number for the "WaitStep" field. + public const int WaitStepFieldNumber = 1; + private int waitStep_; + /// + ///状态 [0]等待主机上报即时存档 [1]要求准备 [2]开始(收到本状态时,立即开始跑模拟器核心) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int WaitStep { + get { return waitStep_; } + set { + waitStep_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_WaitStep_RESP); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_WaitStep_RESP other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (WaitStep != other.WaitStep) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (WaitStep != 0) hash ^= WaitStep.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (WaitStep != 0) { + output.WriteRawTag(8); + output.WriteInt32(WaitStep); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (WaitStep != 0) { + output.WriteRawTag(8); + output.WriteInt32(WaitStep); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (WaitStep != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(WaitStep); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_WaitStep_RESP other) { + if (other == null) { + return; + } + if (other.WaitStep != 0) { + WaitStep = other.WaitStep; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + WaitStep = input.ReadInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + WaitStep = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_HostPlayer_UpdateStateRaw : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_HostPlayer_UpdateStateRaw()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_HostPlayer_UpdateStateRaw() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_HostPlayer_UpdateStateRaw(Protobuf_Room_HostPlayer_UpdateStateRaw other) : this() { + readyFrame_ = other.readyFrame_; + loadStateRaw_ = other.loadStateRaw_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_HostPlayer_UpdateStateRaw Clone() { + return new Protobuf_Room_HostPlayer_UpdateStateRaw(this); + } + + /// Field number for the "ReadyFrame" field. + public const int ReadyFrameFieldNumber = 1; + private int readyFrame_; + /// + ///要求准备的帧数 (非即时存档则为0) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int ReadyFrame { + get { return readyFrame_; } + set { + readyFrame_ = value; + } + } + + /// Field number for the "LoadStateRaw" field. + public const int LoadStateRawFieldNumber = 2; + private pb::ByteString loadStateRaw_ = pb::ByteString.Empty; + /// + ///即时存档byte数据 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pb::ByteString LoadStateRaw { + get { return loadStateRaw_; } + set { + loadStateRaw_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_HostPlayer_UpdateStateRaw); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_HostPlayer_UpdateStateRaw other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ReadyFrame != other.ReadyFrame) return false; + if (LoadStateRaw != other.LoadStateRaw) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (ReadyFrame != 0) hash ^= ReadyFrame.GetHashCode(); + if (LoadStateRaw.Length != 0) hash ^= LoadStateRaw.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (ReadyFrame != 0) { + output.WriteRawTag(8); + output.WriteInt32(ReadyFrame); + } + if (LoadStateRaw.Length != 0) { + output.WriteRawTag(18); + output.WriteBytes(LoadStateRaw); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (ReadyFrame != 0) { + output.WriteRawTag(8); + output.WriteInt32(ReadyFrame); + } + if (LoadStateRaw.Length != 0) { + output.WriteRawTag(18); + output.WriteBytes(LoadStateRaw); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (ReadyFrame != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ReadyFrame); + } + if (LoadStateRaw.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(LoadStateRaw); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_HostPlayer_UpdateStateRaw other) { + if (other == null) { + return; + } + if (other.ReadyFrame != 0) { + ReadyFrame = other.ReadyFrame; + } + if (other.LoadStateRaw.Length != 0) { + LoadStateRaw = other.LoadStateRaw; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ReadyFrame = input.ReadInt32(); + break; + } + case 18: { + LoadStateRaw = input.ReadBytes(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ReadyFrame = input.ReadInt32(); + break; + } + case 18: { + LoadStateRaw = input.ReadBytes(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_Player_Ready : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Player_Ready()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Player_Ready() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Player_Ready(Protobuf_Room_Player_Ready other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Player_Ready Clone() { + return new Protobuf_Room_Player_Ready(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Player_Ready); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Player_Ready other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Player_Ready other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + } + } + } + #endif + + } + #endregion } diff --git a/ProtobufCore/build_cs.bat b/ProtobufCore/build_cs.bat index bbb9a34..fc73069 100644 --- a/ProtobufCore/build_cs.bat +++ b/ProtobufCore/build_cs.bat @@ -12,5 +12,5 @@ for /f "delims=" %%i in ('dir /b proto "proto/*.proto"') do ( echo "==>>build finish" echo "==>>copy cs" -copy %cd%\out\CS\ ..\AxibugEmuOnline.Server\AxibugEmuOnline.Server\Protobuf +copy %cd%\out\CS\ ..\AxibugEmuOnline.Server\Protobuf pause \ No newline at end of file diff --git a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs index ea11a55..3bdffac 100644 --- a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs +++ b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs @@ -27,72 +27,93 @@ namespace AxibugProtobuf { "Ch5wcm90b2J1Zl9BeGlidWdFbXVPbmxpbmUucHJvdG8SDkF4aWJ1Z1Byb3Rv", "YnVmIiMKEFByb3RvYnVmX0NoYXRNc2cSDwoHQ2hhdE1zZxgBIAEoCSJIChVQ", "cm90b2J1Zl9DaGF0TXNnX1JFU1ASEAoITmlja05hbWUYASABKAkSDwoHQ2hh", - "dE1zZxgCIAEoCRIMCgREYXRlGAMgASgDIpEBCg5Qcm90b2J1Zl9Mb2dpbhIs", - "Cglsb2dpblR5cGUYASABKA4yGS5BeGlidWdQcm90b2J1Zi5Mb2dpblR5cGUS", - "LgoKZGV2aWNlVHlwZRgCIAEoDjIaLkF4aWJ1Z1Byb3RvYnVmLkRldmljZVR5", - "cGUSDwoHQWNjb3VudBgDIAEoCRIQCghQYXNzd29yZBgEIAEoCSKMAQoTUHJv", - "dG9idWZfTG9naW5fUkVTUBINCgVUb2tlbhgBIAEoCRIVCg1MYXN0TG9naW5E", - "YXRlGAIgASgJEg8KB1JlZ0RhdGUYAyABKAkSMQoGU3RhdHVzGAQgASgOMiEu", - "QXhpYnVnUHJvdG9idWYuTG9naW5SZXN1bHRTdGF0dXMSCwoDVUlEGAUgASgD", - "IhQKElByb3RvYnVmX1Jvb21fTGlzdCJbChdQcm90b2J1Zl9Sb29tX0xpc3Rf", - "UkVTUBJAChBSb29tTWluaUluZm9MaXN0GAEgAygLMiYuQXhpYnVnUHJvdG9i", - "dWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyKsAgoWUHJvdG9idWZfUm9vbV9N", - "aW5pSW5mbxIOCgZSb29tSUQYASABKAUSEQoJR2FtZVJvbUlEGAIgASgFEhMK", - "C0dhbWVSb21IYXNoGAMgASgJEjQKC1BsYXllclN0YXRlGAQgASgOMh8uQXhp", - "YnVnUHJvdG9idWYuUm9vbVBsYXllclN0YXRlEjAKCUdhbWVTdGF0ZRgFIAEo", - "DjIdLkF4aWJ1Z1Byb3RvYnVmLlJvb21HYW1lU3RhdGUSFAoMT2JzVXNlckNv", - "dW50GAYgASgFEhMKC1BsYXllcjFfVUlEGAcgASgDEhgKEFBsYXllcjFfTmlj", - "a05hbWUYCCABKAkSEwoLUGxheWVyMl9VSUQYCSABKAMSGAoQUGxheWVyMl9O", - "aWNrTmFtZRgKIAEoCSJtChlQcm90b2J1Zl9Sb29tX1VwZGF0ZV9SRVNQEhIK", - "ClVwZGF0ZVR5cGUYASABKAUSPAoMUm9vbU1pbmlJbmZvGAIgASgLMiYuQXhp", - "YnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9NaW5pSW5mbyJLChVQcm90b2J1", - "Zl9TY3Jlbm5fRnJhbWUSDgoGUm9vbUlEGAEgASgFEg8KB0ZyYW1lSUQYAiAB", - "KAUSEQoJUmF3Qml0bWFwGAMgASgMIj4KFFByb3RvYnVmX1Jvb21fQ3JlYXRl", - "EhEKCUdhbWVSb21JRBgBIAEoBRITCgtHYW1lUm9tSGFzaBgCIAEoCSJZChlQ", - "cm90b2J1Zl9Sb29tX0NyZWF0ZV9SRVNQEjwKDFJvb21NaW5pSW5mbxgBIAEo", - "CzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iNwoS", - "UHJvdG9idWZfUm9vbV9Kb2luEg4KBlJvb21JRBgBIAEoBRIRCglQbGF5ZXJO", - "dW0YAiABKAUiVwoXUHJvdG9idWZfUm9vbV9Kb2luX1JFU1ASPAoMUm9vbU1p", - "bmlJbmZvGAEgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9idWZfUm9vbV9N", - "aW5pSW5mbyIlChNQcm90b2J1Zl9Sb29tX0xlYXZlEg4KBlJvb21JRBgBIAEo", - "BSIqChhQcm90b2J1Zl9Sb29tX0xlYXZlX1JFU1ASDgoGUm9vbUlEGAEgASgF", - "ImEKIVByb3RvYnVmX1Jvb21fTXlSb29tX1N0YXRlX0NoYW5nZRI8CgxSb29t", - "TWluaUluZm8YASABKAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29t", - "X01pbmlJbmZvKuABCglDb21tYW5kSUQSDgoKQ01EX0RFRkFVTBAAEg4KCUNN", - "RF9MT0dJThDRDxIQCgtDTURfQ0hBVE1TRxChHxISCg1DTURfUm9vbV9MaXN0", - "EIknEhkKFENNRF9Sb29tX0xpc3RfVXBkYXRlEIonEhQKD0NNRF9Sb29tX0Ny", - "ZWF0ZRDtJxISCg1DTURfUm9vbV9Kb2luEPEnEhMKDkNNRF9Sb29tX0xlYXZl", - "EPInEiIKHUNNRF9Sb29tX015Um9vbV9TdGF0ZV9DaGFuZ2VkEPYnEg8KCkNN", - "RF9TY3JlZW4Q8S4qbAoJRXJyb3JDb2RlEhAKDEVSUk9SX0RFRkFVTBAAEgwK", - "CEVSUk9SX09LEAESGAoURVJST1JfUk9PTV9OT1RfRk9VTkQQChIlCiFFUlJP", - "Ul9ST09NX1NMT1RfUkVBRExZX0hBRF9QTEFZRVIQCyocCglMb2dpblR5cGUS", - "DwoLQmFzZURlZmF1bHQQACpLCgpEZXZpY2VUeXBlEhYKEkRldmljZVR5cGVf", - "RGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9pZBACEgcKA0lPUxADEgcKA1BT", - "VhAEKk8KD1Jvb21QbGF5ZXJTdGF0ZRIUChBOb25lX1BsYXllclN0YXRlEAAS", - "CgoGT25seVAxEAESCgoGT25seVAyEAISDgoKQm90aE9ubGluZRADKjoKDVJv", - "b21HYW1lU3RhdGUSEgoOTm9uZV9HYW1lU3RhdGUQABIKCgZJbkdhbWUQARIJ", - "CgVQYXVzZRACKk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0", - "U3RhdHVzX0Jhc2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJC", - "AkgBYgZwcm90bzM=")); + "dE1zZxgCIAEoCRIMCgREYXRlGAMgASgDIh0KDVByb3RvYnVmX1BpbmcSDAoE", + "U2VlZBgBIAEoBSIdCg1Qcm90b2J1Zl9Qb25nEgwKBFNlZWQYASABKAUikQEK", + "DlByb3RvYnVmX0xvZ2luEiwKCWxvZ2luVHlwZRgBIAEoDjIZLkF4aWJ1Z1By", + "b3RvYnVmLkxvZ2luVHlwZRIuCgpkZXZpY2VUeXBlGAIgASgOMhouQXhpYnVn", + "UHJvdG9idWYuRGV2aWNlVHlwZRIPCgdBY2NvdW50GAMgASgJEhAKCFBhc3N3", + "b3JkGAQgASgJIqABChNQcm90b2J1Zl9Mb2dpbl9SRVNQEhIKCkRldmljZVVV", + "SUQYASABKAkSDQoFVG9rZW4YAiABKAkSFQoNTGFzdExvZ2luRGF0ZRgDIAEo", + "CRIPCgdSZWdEYXRlGAQgASgJEjEKBlN0YXR1cxgFIAEoDjIhLkF4aWJ1Z1By", + "b3RvYnVmLkxvZ2luUmVzdWx0U3RhdHVzEgsKA1VJRBgGIAEoAyIUChJQcm90", + "b2J1Zl9Sb29tX0xpc3QiWwoXUHJvdG9idWZfUm9vbV9MaXN0X1JFU1ASQAoQ", + "Um9vbU1pbmlJbmZvTGlzdBgBIAMoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3Rv", + "YnVmX1Jvb21fTWluaUluZm8irAIKFlByb3RvYnVmX1Jvb21fTWluaUluZm8S", + "DgoGUm9vbUlEGAEgASgFEhEKCUdhbWVSb21JRBgCIAEoBRITCgtHYW1lUm9t", + "SGFzaBgDIAEoCRI0CgtQbGF5ZXJTdGF0ZRgEIAEoDjIfLkF4aWJ1Z1Byb3Rv", + "YnVmLlJvb21QbGF5ZXJTdGF0ZRIwCglHYW1lU3RhdGUYBSABKA4yHS5BeGli", + "dWdQcm90b2J1Zi5Sb29tR2FtZVN0YXRlEhQKDE9ic1VzZXJDb3VudBgGIAEo", + "BRITCgtQbGF5ZXIxX1VJRBgHIAEoAxIYChBQbGF5ZXIxX05pY2tOYW1lGAgg", + "ASgJEhMKC1BsYXllcjJfVUlEGAkgASgDEhgKEFBsYXllcjJfTmlja05hbWUY", + "CiABKAkibQoZUHJvdG9idWZfUm9vbV9VcGRhdGVfUkVTUBISCgpVcGRhdGVU", + "eXBlGAEgASgFEjwKDFJvb21NaW5pSW5mbxgCIAEoCzImLkF4aWJ1Z1Byb3Rv", + "YnVmLlByb3RvYnVmX1Jvb21fTWluaUluZm8iSwoVUHJvdG9idWZfU2NyZW5u", + "X0ZyYW1lEg4KBlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJh", + "d0JpdG1hcBgDIAEoDCJJCiNQcm90b2J1Zl9Sb29tX1NpbmdsZVBsYXllcklu", + "cHV0RGF0YRIPCgdGcmFtZUlEGAEgASgNEhEKCUlucHV0RGF0YRgCIAEoDSJJ", + "CiNQcm90b2J1Zl9Sb29tX1N5bl9Sb29tRnJhbWVBbGxJbnB1dBIPCgdGcmFt", + "ZUlEGAEgASgNEhEKCUlucHV0RGF0YRgCIAEoBCI+ChRQcm90b2J1Zl9Sb29t", + "X0NyZWF0ZRIRCglHYW1lUm9tSUQYASABKAUSEwoLR2FtZVJvbUhhc2gYAiAB", + "KAkiWQoZUHJvdG9idWZfUm9vbV9DcmVhdGVfUkVTUBI8CgxSb29tTWluaUlu", + "Zm8YASABKAsyJi5BeGlidWdQcm90b2J1Zi5Qcm90b2J1Zl9Sb29tX01pbmlJ", + "bmZvIjcKElByb3RvYnVmX1Jvb21fSm9pbhIOCgZSb29tSUQYASABKAUSEQoJ", + "UGxheWVyTnVtGAIgASgFIlcKF1Byb3RvYnVmX1Jvb21fSm9pbl9SRVNQEjwK", + "DFJvb21NaW5pSW5mbxgBIAEoCzImLkF4aWJ1Z1Byb3RvYnVmLlByb3RvYnVm", + "X1Jvb21fTWluaUluZm8iJQoTUHJvdG9idWZfUm9vbV9MZWF2ZRIOCgZSb29t", + "SUQYASABKAUiKgoYUHJvdG9idWZfUm9vbV9MZWF2ZV9SRVNQEg4KBlJvb21J", + "RBgBIAEoBSJhCiFQcm90b2J1Zl9Sb29tX015Um9vbV9TdGF0ZV9DaGFuZ2US", + "PAoMUm9vbU1pbmlJbmZvGAEgASgLMiYuQXhpYnVnUHJvdG9idWYuUHJvdG9i", + "dWZfUm9vbV9NaW5pSW5mbyIvChtQcm90b2J1Zl9Sb29tX1dhaXRTdGVwX1JF", + "U1ASEAoIV2FpdFN0ZXAYASABKAUiUwonUHJvdG9idWZfUm9vbV9Ib3N0UGxh", + "eWVyX1VwZGF0ZVN0YXRlUmF3EhIKClJlYWR5RnJhbWUYASABKAUSFAoMTG9h", + "ZFN0YXRlUmF3GAIgASgMIhwKGlByb3RvYnVmX1Jvb21fUGxheWVyX1JlYWR5", + "Ko4DCglDb21tYW5kSUQSDgoKQ01EX0RFRkFVTBAAEgwKCENNRF9QSU5HEAES", + "DAoIQ01EX1BPTkcQAhIOCglDTURfTE9HSU4Q0Q8SEAoLQ01EX0NIQVRNU0cQ", + "oR8SEgoNQ01EX1Jvb21fTGlzdBCJJxIZChRDTURfUm9vbV9MaXN0X1VwZGF0", + "ZRCKJxIUCg9DTURfUm9vbV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDx", + "JxITCg5DTURfUm9vbV9MZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3Rh", + "dGVfQ2hhbmdlZBD2JxIWChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJDTURf", + "Um9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9Sb29t", + "X1BsYXllcl9SZWFkeRDYKBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVySW5w", + "dXQQ+i4SEQoMQ01EX1JPT01fU1lOEP8uEg8KCkNNRF9TY3JlZW4Q2TYqbAoJ", + "RXJyb3JDb2RlEhAKDEVSUk9SX0RFRkFVTBAAEgwKCEVSUk9SX09LEAESGAoU", + "RVJST1JfUk9PTV9OT1RfRk9VTkQQChIlCiFFUlJPUl9ST09NX1NMT1RfUkVB", + "RExZX0hBRF9QTEFZRVIQCyocCglMb2dpblR5cGUSDwoLQmFzZURlZmF1bHQQ", + "ACpLCgpEZXZpY2VUeXBlEhYKEkRldmljZVR5cGVfRGVmYXVsdBAAEgYKAlBD", + "EAESCwoHQW5kcm9pZBACEgcKA0lPUxADEgcKA1BTVhAEKk8KD1Jvb21QbGF5", + "ZXJTdGF0ZRIUChBOb25lX1BsYXllclN0YXRlEAASCgoGT25seVAxEAESCgoG", + "T25seVAyEAISDgoKQm90aE9ubGluZRADKnsKDVJvb21HYW1lU3RhdGUSEgoO", + "Tm9uZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEg8KC1JlYWR5U3RlcF8w", + "EAISDwoLUmVhZHlTdGVwXzEQAxIPCgtSZWFkeVN0ZXBfMhAEEgkKBVBhdXNl", + "EAUSCgoGSW5HYW1lEAYqTgoRTG9naW5SZXN1bHRTdGF0dXMSIQodTG9naW5S", + "ZXN1bHRTdGF0dXNfQmFzZURlZmF1bHQQABIGCgJPSxABEg4KCkFjY291bnRF", + "cnIQAkICSAFiBnByb3RvMw==")); 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.RoomPlayerState), 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), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Pong), global::AxibugProtobuf.Protobuf_Pong.Parser, new[]{ "Seed" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login), global::AxibugProtobuf.Protobuf_Login.Parser, new[]{ "LoginType", "DeviceType", "Account", "Password" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "Token", "LastLoginDate", "RegDate", "Status", "UID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Login_RESP), global::AxibugProtobuf.Protobuf_Login_RESP.Parser, new[]{ "DeviceUUID", "Token", "LastLoginDate", "RegDate", "Status", "UID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_List), global::AxibugProtobuf.Protobuf_Room_List.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_List_RESP), global::AxibugProtobuf.Protobuf_Room_List_RESP.Parser, new[]{ "RoomMiniInfoList" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_MiniInfo), global::AxibugProtobuf.Protobuf_Room_MiniInfo.Parser, new[]{ "RoomID", "GameRomID", "GameRomHash", "PlayerState", "GameState", "ObsUserCount", "Player1UID", "Player1NickName", "Player2UID", "Player2NickName" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Update_RESP), global::AxibugProtobuf.Protobuf_Room_Update_RESP.Parser, new[]{ "UpdateType", "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Screnn_Frame), global::AxibugProtobuf.Protobuf_Screnn_Frame.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData), global::AxibugProtobuf.Protobuf_Room_SinglePlayerInputData.Parser, new[]{ "FrameID", "InputData" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInput), global::AxibugProtobuf.Protobuf_Room_Syn_RoomFrameAllInput.Parser, new[]{ "FrameID", "InputData" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create), global::AxibugProtobuf.Protobuf_Room_Create.Parser, new[]{ "GameRomID", "GameRomHash" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Create_RESP), global::AxibugProtobuf.Protobuf_Room_Create_RESP.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Join), global::AxibugProtobuf.Protobuf_Room_Join.Parser, new[]{ "RoomID", "PlayerNum" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Join_RESP), global::AxibugProtobuf.Protobuf_Room_Join_RESP.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Leave), global::AxibugProtobuf.Protobuf_Room_Leave.Parser, new[]{ "RoomID" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Leave_RESP), global::AxibugProtobuf.Protobuf_Room_Leave_RESP.Parser, new[]{ "RoomID" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change), global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change), global::AxibugProtobuf.Protobuf_Room_MyRoom_State_Change.Parser, new[]{ "RoomMiniInfo" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP), global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP.Parser, new[]{ "WaitStep" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw.Parser, new[]{ "ReadyFrame", "LoadStateRaw" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, null, null, null, null, null) })); } #endregion @@ -105,6 +126,14 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_DEFAUL")] CmdDefaul = 0, /// + ///服务器或客户端,均可主动ping请求,对方响应。(这里测全流程延迟,即序 列化->发送->传输过程->接收->反序列化) + /// + [pbr::OriginalName("CMD_PING")] CmdPing = 1, + /// + ///Pong | 响应 对应 Protobuf_Pong + /// + [pbr::OriginalName("CMD_PONG")] CmdPong = 2, + /// ///自动登录上行 | 下行 对应 Protobuf_Login | Protobuf_Login_RESP /// [pbr::OriginalName("CMD_LOGIN")] CmdLogin = 2001, @@ -113,7 +142,7 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_CHATMSG")] CmdChatmsg = 4001, /// - ///房间列表相关 + ///房间列表相关(仅用于列表显示) /// [pbr::OriginalName("CMD_Room_List")] CmdRoomList = 5001, /// @@ -125,21 +154,59 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_Room_Create")] CmdRoomCreate = 5101, /// - ///房间列表加入 对应 Protobuf_Room_Join | Protobuf_Room_Join_RESP + ///房间加入 对应 Protobuf_Room_Join | Protobuf_Room_Join_RESP /// [pbr::OriginalName("CMD_Room_Join")] CmdRoomJoin = 5105, /// - ///房间列表离开 对应 Protobuf_Room_Leave | Protobuf_Room_Leave_RESP + ///房间离开 对应 Protobuf_Room_Leave | Protobuf_Room_Leave_RESP /// [pbr::OriginalName("CMD_Room_Leave")] CmdRoomLeave = 5106, /// - ///我所在的房间内状态发生变化 对应 Protobuf_Room_MyRoom_State_Change; + ///我所在的房间内状态发生变化 对应 Protobuf_Room_MyRoom_State_Change /// [pbr::OriginalName("CMD_Room_MyRoom_State_Changed")] CmdRoomMyRoomStateChanged = 5110, /// + ///准备和开始流程(5201 ~ 5204 ~ 5208) + /// + /// 我们采用,玩家可以随时进入的方式开发 + /// + /// 设计流程: + /// + /// Step0:服务器广播"等待-主机上报即使存档" CMD_Room_WaitStep WaitStep=[0] ---> 客户端:暂停模拟器核心:全员等待(主机玩家一人上传即时存档) + /// 主机玩家 上行 CMD_Room_HostPlayer_UpdateStateRaw消息,上传即时存档 + /// 主机玩家上传完毕之后,服务器会通知进入Step1 + /// + /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待(主机玩家一人上传) + /// 所有玩家确保加载ROM和即时存档,并保持模拟器暂停,准备完毕后 发送 CMD_Room_Player_Ready + /// 所有玩家Ready之后,服务器会根据所有玩家延迟提前跑若干Frame,通知进入Step2 + /// + /// Step2:服务器广播"开始" CMD_Room_WaitStep WaitStep=[2] ---> 客户端:立即开始 + /// + /// PS:[联机过程中加载即时存档] 房间在游玩过程中,单个玩家发送CMD_Room_HostPlayer_UpdateStateRaw 上报即时存档 + /// 重新从Step1走流程 + /// + /// + [pbr::OriginalName("CMD_Room_WaitStep")] CmdRoomWaitStep = 5201, + /// + ///服务器房间准备和开始标识 下行 Protobuf_Room_HostPlayer_UpdateStateRaw + /// + [pbr::OriginalName("CMD_Room_HostPlayer_UpdateStateRaw")] CmdRoomHostPlayerUpdateStateRaw = 5204, + /// + ///玩家准备完毕 上行 Protobuf_Room_Player_Ready + /// + [pbr::OriginalName("CMD_Room_Player_Ready")] CmdRoomPlayerReady = 5208, + /// ///游戏同步 /// - [pbr::OriginalName("CMD_Screen")] CmdScreen = 6001, + [pbr::OriginalName("CMD_Room_Singel_PlayerInput")] CmdRoomSingelPlayerInput = 6010, + /// + ///单个玩家操作同步上行 对应 Protobuf_Room_Syn_RoomFrameAllInput + /// + [pbr::OriginalName("CMD_ROOM_SYN")] CmdRoomSyn = 6015, + /// + ///画面采集 + /// + [pbr::OriginalName("CMD_Screen")] CmdScreen = 7001, } public enum ErrorCode { @@ -204,13 +271,29 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("None_GameState")] NoneGameState = 0, /// - ///游戏中 + ///仅主机,待加入 /// - [pbr::OriginalName("InGame")] InGame = 1, + [pbr::OriginalName("OnlyHost")] OnlyHost = 1, + /// + ///ReadyStep0 + /// + [pbr::OriginalName("ReadyStep_0")] ReadyStep0 = 2, + /// + ///ReadyStep1 + /// + [pbr::OriginalName("ReadyStep_1")] ReadyStep1 = 3, + /// + ///ReadyStep2 + /// + [pbr::OriginalName("ReadyStep_2")] ReadyStep2 = 4, /// ///暂停 /// - [pbr::OriginalName("Pause")] Pause = 2, + [pbr::OriginalName("Pause")] Pause = 5, + /// + ///游戏中 + /// + [pbr::OriginalName("InGame")] InGame = 6, } public enum LoginResultStatus { @@ -659,6 +742,356 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Ping : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Ping()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[2]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Ping() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Ping(Protobuf_Ping other) : this() { + seed_ = other.seed_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Ping Clone() { + return new Protobuf_Ping(this); + } + + /// Field number for the "Seed" field. + public const int SeedFieldNumber = 1; + private int seed_; + /// + ///随机数 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Seed { + get { return seed_; } + set { + seed_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Ping); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Ping other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Seed != other.Seed) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Seed != 0) hash ^= Seed.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Seed != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Seed); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Ping other) { + if (other == null) { + return; + } + if (other.Seed != 0) { + Seed = other.Seed; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Pong : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Pong()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[3]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Pong() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Pong(Protobuf_Pong other) : this() { + seed_ = other.seed_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Pong Clone() { + return new Protobuf_Pong(this); + } + + /// Field number for the "Seed" field. + public const int SeedFieldNumber = 1; + private int seed_; + /// + ///原样返回随机数 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int Seed { + get { return seed_; } + set { + seed_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Pong); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Pong other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Seed != other.Seed) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (Seed != 0) hash ^= Seed.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Seed != 0) { + output.WriteRawTag(8); + output.WriteInt32(Seed); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (Seed != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Seed); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Pong other) { + if (other == null) { + return; + } + if (other.Seed != 0) { + Seed = other.Seed; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Seed = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + /// ///登录数据上行 /// @@ -674,7 +1107,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[2]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -969,7 +1402,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[3]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -986,6 +1419,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public Protobuf_Login_RESP(Protobuf_Login_RESP other) : this() { + deviceUUID_ = other.deviceUUID_; token_ = other.token_; lastLoginDate_ = other.lastLoginDate_; regDate_ = other.regDate_; @@ -999,8 +1433,22 @@ namespace AxibugProtobuf { return new Protobuf_Login_RESP(this); } + /// Field number for the "DeviceUUID" field. + public const int DeviceUUIDFieldNumber = 1; + private string deviceUUID_ = ""; + /// + ///设备唯一串 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public string DeviceUUID { + get { return deviceUUID_; } + set { + deviceUUID_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + /// Field number for the "Token" field. - public const int TokenFieldNumber = 1; + public const int TokenFieldNumber = 2; private string token_ = ""; /// ///登录凭据 (本次登录之后,所有业务请求凭据,需要存储在内存中) @@ -1014,7 +1462,7 @@ namespace AxibugProtobuf { } /// Field number for the "LastLoginDate" field. - public const int LastLoginDateFieldNumber = 2; + public const int LastLoginDateFieldNumber = 3; private string lastLoginDate_ = ""; /// ///上次登录时间(只用于呈现的字符串,若界面需求需要) @@ -1028,7 +1476,7 @@ namespace AxibugProtobuf { } /// Field number for the "RegDate" field. - public const int RegDateFieldNumber = 3; + public const int RegDateFieldNumber = 4; private string regDate_ = ""; /// ///注册时间(只用于呈现的字符串,若界面需求需要) @@ -1042,7 +1490,7 @@ namespace AxibugProtobuf { } /// Field number for the "Status" field. - public const int StatusFieldNumber = 4; + public const int StatusFieldNumber = 5; private global::AxibugProtobuf.LoginResultStatus status_ = global::AxibugProtobuf.LoginResultStatus.BaseDefault; /// ///账号状态 (预留) [1]正常[0]被禁封 @@ -1056,7 +1504,7 @@ namespace AxibugProtobuf { } /// Field number for the "UID" field. - public const int UIDFieldNumber = 5; + public const int UIDFieldNumber = 6; private long uID_; [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public long UID { @@ -1079,6 +1527,7 @@ namespace AxibugProtobuf { if (ReferenceEquals(other, this)) { return true; } + if (DeviceUUID != other.DeviceUUID) return false; if (Token != other.Token) return false; if (LastLoginDate != other.LastLoginDate) return false; if (RegDate != other.RegDate) return false; @@ -1090,6 +1539,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public override int GetHashCode() { int hash = 1; + if (DeviceUUID.Length != 0) hash ^= DeviceUUID.GetHashCode(); if (Token.Length != 0) hash ^= Token.GetHashCode(); if (LastLoginDate.Length != 0) hash ^= LastLoginDate.GetHashCode(); if (RegDate.Length != 0) hash ^= RegDate.GetHashCode(); @@ -1111,24 +1561,28 @@ namespace AxibugProtobuf { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE output.WriteRawMessage(this); #else - if (Token.Length != 0) { + if (DeviceUUID.Length != 0) { output.WriteRawTag(10); + output.WriteString(DeviceUUID); + } + if (Token.Length != 0) { + output.WriteRawTag(18); output.WriteString(Token); } if (LastLoginDate.Length != 0) { - output.WriteRawTag(18); + output.WriteRawTag(26); output.WriteString(LastLoginDate); } if (RegDate.Length != 0) { - output.WriteRawTag(26); + output.WriteRawTag(34); output.WriteString(RegDate); } if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { - output.WriteRawTag(32); + output.WriteRawTag(40); output.WriteEnum((int) Status); } if (UID != 0L) { - output.WriteRawTag(40); + output.WriteRawTag(48); output.WriteInt64(UID); } if (_unknownFields != null) { @@ -1140,24 +1594,28 @@ namespace AxibugProtobuf { #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE [global::System.Diagnostics.DebuggerNonUserCodeAttribute] void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { - if (Token.Length != 0) { + if (DeviceUUID.Length != 0) { output.WriteRawTag(10); + output.WriteString(DeviceUUID); + } + if (Token.Length != 0) { + output.WriteRawTag(18); output.WriteString(Token); } if (LastLoginDate.Length != 0) { - output.WriteRawTag(18); + output.WriteRawTag(26); output.WriteString(LastLoginDate); } if (RegDate.Length != 0) { - output.WriteRawTag(26); + output.WriteRawTag(34); output.WriteString(RegDate); } if (Status != global::AxibugProtobuf.LoginResultStatus.BaseDefault) { - output.WriteRawTag(32); + output.WriteRawTag(40); output.WriteEnum((int) Status); } if (UID != 0L) { - output.WriteRawTag(40); + output.WriteRawTag(48); output.WriteInt64(UID); } if (_unknownFields != null) { @@ -1169,6 +1627,9 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public int CalculateSize() { int size = 0; + if (DeviceUUID.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeStringSize(DeviceUUID); + } if (Token.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(Token); } @@ -1195,6 +1656,9 @@ namespace AxibugProtobuf { if (other == null) { return; } + if (other.DeviceUUID.Length != 0) { + DeviceUUID = other.DeviceUUID; + } if (other.Token.Length != 0) { Token = other.Token; } @@ -1225,22 +1689,26 @@ namespace AxibugProtobuf { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); break; case 10: { - Token = input.ReadString(); + DeviceUUID = input.ReadString(); break; } case 18: { - LastLoginDate = input.ReadString(); + Token = input.ReadString(); break; } case 26: { + LastLoginDate = input.ReadString(); + break; + } + case 34: { RegDate = input.ReadString(); break; } - case 32: { + case 40: { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } - case 40: { + case 48: { UID = input.ReadInt64(); break; } @@ -1259,22 +1727,26 @@ namespace AxibugProtobuf { _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); break; case 10: { - Token = input.ReadString(); + DeviceUUID = input.ReadString(); break; } case 18: { - LastLoginDate = input.ReadString(); + Token = input.ReadString(); break; } case 26: { + LastLoginDate = input.ReadString(); + break; + } + case 34: { RegDate = input.ReadString(); break; } - case 32: { + case 40: { Status = (global::AxibugProtobuf.LoginResultStatus) input.ReadEnum(); break; } - case 40: { + case 48: { UID = input.ReadInt64(); break; } @@ -1297,7 +1769,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[4]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1433,7 +1905,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[5]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1597,7 +2069,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[6]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2120,7 +2592,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[7]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2343,7 +2815,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[8]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2584,6 +3056,434 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Room_SinglePlayerInputData : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_SinglePlayerInputData()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_SinglePlayerInputData() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_SinglePlayerInputData(Protobuf_Room_SinglePlayerInputData other) : this() { + frameID_ = other.frameID_; + inputData_ = other.inputData_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_SinglePlayerInputData Clone() { + return new Protobuf_Room_SinglePlayerInputData(this); + } + + /// Field number for the "FrameID" field. + public const int FrameIDFieldNumber = 1; + private uint frameID_; + /// + ///帧编号 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint FrameID { + get { return frameID_; } + set { + frameID_ = value; + } + } + + /// Field number for the "InputData" field. + public const int InputDataFieldNumber = 2; + private uint inputData_; + /// + ///单个玩家操作位运算汇总 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint InputData { + get { return inputData_; } + set { + inputData_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_SinglePlayerInputData); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_SinglePlayerInputData other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (FrameID != other.FrameID) return false; + if (InputData != other.InputData) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (FrameID != 0) hash ^= FrameID.GetHashCode(); + if (InputData != 0) hash ^= InputData.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0) { + output.WriteRawTag(16); + output.WriteUInt32(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0) { + output.WriteRawTag(16); + output.WriteUInt32(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (FrameID != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FrameID); + } + if (InputData != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(InputData); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_SinglePlayerInputData other) { + if (other == null) { + return; + } + if (other.FrameID != 0) { + FrameID = other.FrameID; + } + if (other.InputData != 0) { + InputData = other.InputData; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_Syn_RoomFrameAllInput : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Syn_RoomFrameAllInput()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Syn_RoomFrameAllInput() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Syn_RoomFrameAllInput(Protobuf_Room_Syn_RoomFrameAllInput other) : this() { + frameID_ = other.frameID_; + inputData_ = other.inputData_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Syn_RoomFrameAllInput Clone() { + return new Protobuf_Room_Syn_RoomFrameAllInput(this); + } + + /// Field number for the "FrameID" field. + public const int FrameIDFieldNumber = 1; + private uint frameID_; + /// + ///帧编号 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public uint FrameID { + get { return frameID_; } + set { + frameID_ = value; + } + } + + /// Field number for the "InputData" field. + public const int InputDataFieldNumber = 2; + private ulong inputData_; + /// + ///所有玩家操作位运算汇总 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public ulong InputData { + get { return inputData_; } + set { + inputData_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Syn_RoomFrameAllInput); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Syn_RoomFrameAllInput other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (FrameID != other.FrameID) return false; + if (InputData != other.InputData) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (FrameID != 0) hash ^= FrameID.GetHashCode(); + if (InputData != 0UL) hash ^= InputData.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0UL) { + output.WriteRawTag(16); + output.WriteUInt64(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (FrameID != 0) { + output.WriteRawTag(8); + output.WriteUInt32(FrameID); + } + if (InputData != 0UL) { + output.WriteRawTag(16); + output.WriteUInt64(InputData); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (FrameID != 0) { + size += 1 + pb::CodedOutputStream.ComputeUInt32Size(FrameID); + } + if (InputData != 0UL) { + size += 1 + pb::CodedOutputStream.ComputeUInt64Size(InputData); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Syn_RoomFrameAllInput other) { + if (other == null) { + return; + } + if (other.FrameID != 0) { + FrameID = other.FrameID; + } + if (other.InputData != 0UL) { + InputData = other.InputData; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + FrameID = input.ReadUInt32(); + break; + } + case 16: { + InputData = input.ReadUInt64(); + break; + } + } + } + } + #endif + + } + public sealed partial class Protobuf_Room_Create : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage @@ -2596,7 +3496,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[9]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2804,7 +3704,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[10]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2988,7 +3888,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[11]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3202,7 +4102,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[12]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[16]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3386,7 +4286,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[13]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[17]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3561,7 +4461,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[14]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[18]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3736,7 +4636,7 @@ namespace AxibugProtobuf { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] public static pbr::MessageDescriptor Descriptor { - get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[15]; } + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[19]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3908,6 +4808,531 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Room_WaitStep_RESP : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_WaitStep_RESP()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[20]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_WaitStep_RESP() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_WaitStep_RESP(Protobuf_Room_WaitStep_RESP other) : this() { + waitStep_ = other.waitStep_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_WaitStep_RESP Clone() { + return new Protobuf_Room_WaitStep_RESP(this); + } + + /// Field number for the "WaitStep" field. + public const int WaitStepFieldNumber = 1; + private int waitStep_; + /// + ///状态 [0]等待主机上报即时存档 [1]要求准备 [2]开始(收到本状态时,立即开始跑模拟器核心) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int WaitStep { + get { return waitStep_; } + set { + waitStep_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_WaitStep_RESP); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_WaitStep_RESP other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (WaitStep != other.WaitStep) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (WaitStep != 0) hash ^= WaitStep.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (WaitStep != 0) { + output.WriteRawTag(8); + output.WriteInt32(WaitStep); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (WaitStep != 0) { + output.WriteRawTag(8); + output.WriteInt32(WaitStep); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (WaitStep != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(WaitStep); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_WaitStep_RESP other) { + if (other == null) { + return; + } + if (other.WaitStep != 0) { + WaitStep = other.WaitStep; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + WaitStep = input.ReadInt32(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + WaitStep = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_HostPlayer_UpdateStateRaw : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_HostPlayer_UpdateStateRaw()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[21]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_HostPlayer_UpdateStateRaw() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_HostPlayer_UpdateStateRaw(Protobuf_Room_HostPlayer_UpdateStateRaw other) : this() { + readyFrame_ = other.readyFrame_; + loadStateRaw_ = other.loadStateRaw_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_HostPlayer_UpdateStateRaw Clone() { + return new Protobuf_Room_HostPlayer_UpdateStateRaw(this); + } + + /// Field number for the "ReadyFrame" field. + public const int ReadyFrameFieldNumber = 1; + private int readyFrame_; + /// + ///要求准备的帧数 (非即时存档则为0) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int ReadyFrame { + get { return readyFrame_; } + set { + readyFrame_ = value; + } + } + + /// Field number for the "LoadStateRaw" field. + public const int LoadStateRawFieldNumber = 2; + private pb::ByteString loadStateRaw_ = pb::ByteString.Empty; + /// + ///即时存档byte数据 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pb::ByteString LoadStateRaw { + get { return loadStateRaw_; } + set { + loadStateRaw_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_HostPlayer_UpdateStateRaw); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_HostPlayer_UpdateStateRaw other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (ReadyFrame != other.ReadyFrame) return false; + if (LoadStateRaw != other.LoadStateRaw) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (ReadyFrame != 0) hash ^= ReadyFrame.GetHashCode(); + if (LoadStateRaw.Length != 0) hash ^= LoadStateRaw.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (ReadyFrame != 0) { + output.WriteRawTag(8); + output.WriteInt32(ReadyFrame); + } + if (LoadStateRaw.Length != 0) { + output.WriteRawTag(18); + output.WriteBytes(LoadStateRaw); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (ReadyFrame != 0) { + output.WriteRawTag(8); + output.WriteInt32(ReadyFrame); + } + if (LoadStateRaw.Length != 0) { + output.WriteRawTag(18); + output.WriteBytes(LoadStateRaw); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (ReadyFrame != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(ReadyFrame); + } + if (LoadStateRaw.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(LoadStateRaw); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_HostPlayer_UpdateStateRaw other) { + if (other == null) { + return; + } + if (other.ReadyFrame != 0) { + ReadyFrame = other.ReadyFrame; + } + if (other.LoadStateRaw.Length != 0) { + LoadStateRaw = other.LoadStateRaw; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + ReadyFrame = input.ReadInt32(); + break; + } + case 18: { + LoadStateRaw = input.ReadBytes(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + ReadyFrame = input.ReadInt32(); + break; + } + case 18: { + LoadStateRaw = input.ReadBytes(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_Player_Ready : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Player_Ready()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public static pbr::MessageDescriptor Descriptor { + get { return global::AxibugProtobuf.ProtobufAxibugEmuOnlineReflection.Descriptor.MessageTypes[22]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Player_Ready() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Player_Ready(Protobuf_Room_Player_Ready other) : this() { + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Player_Ready Clone() { + return new Protobuf_Room_Player_Ready(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Player_Ready); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Player_Ready other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Player_Ready other) { + if (other == null) { + return; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + } + } + } + #endif + + } + #endregion } diff --git a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto index a2fda67..726ac9e 100644 --- a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto +++ b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto @@ -6,26 +6,54 @@ enum CommandID { CMD_DEFAUL = 0;//缺省不使用 + //服务器或客户端,均可主动ping请求,对方响应。(这里测全流程延迟,即序 列化->发送->传输过程->接收->反序列化) + CMD_PING = 1; //Ping | 请求 对应 Protobuf_Ping + CMD_PONG = 2; //Pong | 响应 对应 Protobuf_Pong + CMD_LOGIN = 2001; //自动登录上行 | 下行 对应 Protobuf_Login | Protobuf_Login_RESP CMD_CHATMSG = 4001; //广播聊天信息上行 | 下行 对应 Protobuf_ChatMsg | Protobuf_ChatMsg_RESP - //房间列表相关 + //房间列表相关(仅用于列表显示) CMD_Room_List = 5001; //房间列表 上行 | 下行 对应 Protobuf_Room_List | Protobuf_Room_List_RESP - CMD_Room_List_Update = 5002; //房间单个房间信息更新 对应 Protobuf_Room_Update_RESP //房间内相关 - CMD_Room_Create = 5101; //房间列表创建 对应 Protobuf_Room_Create | Protobuf_Room_Create_RESP + CMD_Room_Create = 5101; //房间创建 对应 Protobuf_Room_Create | Protobuf_Room_Create_RESP + CMD_Room_Join = 5105; //房间加入 对应 Protobuf_Room_Join | Protobuf_Room_Join_RESP + CMD_Room_Leave = 5106; //房间离开 对应 Protobuf_Room_Leave | Protobuf_Room_Leave_RESP + CMD_Room_MyRoom_State_Changed = 5110; //我所在的房间内状态发生变化 对应 Protobuf_Room_MyRoom_State_Change - CMD_Room_Join = 5105; //房间列表加入 对应 Protobuf_Room_Join | Protobuf_Room_Join_RESP - - CMD_Room_Leave = 5106; //房间列表离开 对应 Protobuf_Room_Leave | Protobuf_Room_Leave_RESP - - CMD_Room_MyRoom_State_Changed = 5110; //我所在的房间内状态发生变化 对应 Protobuf_Room_MyRoom_State_Change; + //准备和开始流程(5201 ~ 5204 ~ 5208) + // + // 我们采用,玩家可以随时进入的方式开发 + // + // 设计流程: + // + // Step0:服务器广播"等待-主机上报即使存档" CMD_Room_WaitStep WaitStep=[0] ---> 客户端:暂停模拟器核心:全员等待(主机玩家一人上传即时存档) + // 主机玩家 上行 CMD_Room_HostPlayer_UpdateStateRaw消息,上传即时存档 + // 主机玩家上传完毕之后,服务器会通知进入Step1 + // + // Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待(主机玩家一人上传) + // 所有玩家确保加载ROM和即时存档,并保持模拟器暂停,准备完毕后 发送 CMD_Room_Player_Ready + // 所有玩家Ready之后,服务器会根据所有玩家延迟提前跑若干Frame,通知进入Step2 + // + // Step2:服务器广播"开始" CMD_Room_WaitStep WaitStep=[2] ---> 客户端:立即开始 + // + // + // PS:[联机过程中加载即时存档] 房间在游玩过程中,单个玩家发送CMD_Room_HostPlayer_UpdateStateRaw 上报即时存档 + // 重新从Step1走流程 + // + CMD_Room_WaitStep = 5201; //服务器等待Step通知 下行 Protobuf_Room_WaitStep_RESP + CMD_Room_HostPlayer_UpdateStateRaw = 5204; //服务器房间准备和开始标识 下行 Protobuf_Room_HostPlayer_UpdateStateRaw + CMD_Room_Player_Ready = 5208; //玩家准备完毕 上行 Protobuf_Room_Player_Ready //游戏同步 - CMD_Screen = 6001; //画面同步 | 同步广播 对应 Protobuf_Screnn_Frame + CMD_Room_Singel_PlayerInput = 6010; //单个玩家操作同步上行 对应 Protobuf_Room_SinglePlayerInputData + CMD_ROOM_SYN = 6015; //单个玩家操作同步上行 对应 Protobuf_Room_Syn_RoomFrameAllInput + + //画面采集 + CMD_Screen = 7001; //画面采集 | 同步广播 对应 Protobuf_Screnn_Frame } enum ErrorCode @@ -62,8 +90,12 @@ enum RoomPlayerState enum RoomGameState { None_GameState = 0;//缺省 - InGame = 1;//游戏中 - Pause = 2;//暂停 + OnlyHost = 1;//仅主机,待加入 + ReadyStep_0 = 2;//ReadyStep0 + ReadyStep_1 = 3;//ReadyStep1 + ReadyStep_2 = 4;//ReadyStep2 + Pause = 5;//暂停 + InGame = 6;//游戏中 } @@ -88,6 +120,15 @@ message Protobuf_ChatMsg_RESP int64 Date = 3;//时间 } +message Protobuf_Ping +{ + int32 Seed = 1;//随机数 +} + +message Protobuf_Pong +{ + int32 Seed = 1;//原样返回随机数 +} //登录数据上行 message Protobuf_Login @@ -101,14 +142,14 @@ message Protobuf_Login //登录数据下行 message Protobuf_Login_RESP { - string Token = 1;//登录凭据 (本次登录之后,所有业务请求凭据,需要存储在内存中) - string LastLoginDate = 2;//上次登录时间(只用于呈现的字符串,若界面需求需要) - string RegDate = 3;//注册时间(只用于呈现的字符串,若界面需求需要) - LoginResultStatus Status = 4;//账号状态 (预留) [1]正常[0]被禁封 - int64 UID = 5; + string DeviceUUID = 1;//设备唯一串 + string Token = 2;//登录凭据 (本次登录之后,所有业务请求凭据,需要存储在内存中) + string LastLoginDate = 3;//上次登录时间(只用于呈现的字符串,若界面需求需要) + string RegDate = 4;//注册时间(只用于呈现的字符串,若界面需求需要) + LoginResultStatus Status = 5;//账号状态 (预留) [1]正常[0]被禁封 + int64 UID = 6; } - message Protobuf_Room_List { @@ -146,6 +187,18 @@ message Protobuf_Screnn_Frame bytes RawBitmap = 3;//渲染层画面 } +message Protobuf_Room_SinglePlayerInputData +{ + uint32 FrameID = 1;//帧编号 + uint32 InputData = 2;//单个玩家操作位运算汇总 +} + +message Protobuf_Room_Syn_RoomFrameAllInput +{ + uint32 FrameID = 1;//帧编号 + uint64 InputData = 2;//所有玩家操作位运算汇总 +} + message Protobuf_Room_Create { int32 GameRomID = 1; @@ -181,4 +234,20 @@ message Protobuf_Room_Leave_RESP message Protobuf_Room_MyRoom_State_Change { Protobuf_Room_MiniInfo RoomMiniInfo = 1;//更新房间信息 +} + + +message Protobuf_Room_WaitStep_RESP +{ + int32 WaitStep = 1;//状态 [0]等待主机上报即时存档 [1]要求准备 [2]开始(收到本状态时,立即开始跑模拟器核心) +} + +message Protobuf_Room_HostPlayer_UpdateStateRaw +{ + int32 ReadyFrame = 1;//要求准备的帧数 (非即时存档则为0) + bytes LoadStateRaw = 2;//即时存档byte数据 +} + +message Protobuf_Room_Player_Ready +{ } \ No newline at end of file