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