From 1e32a111b5d21b050e99d5a7987c30d05922d66d Mon Sep 17 00:00:00 2001 From: sin365 <353374337@qq.com> Date: Wed, 18 Sep 2024 10:21:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8D=95=E4=B8=AA=E6=88=BF?= =?UTF-8?q?=E9=97=B4=E7=94=BB=E9=9D=A2=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Script/Event/EEvent.cs | 1 + .../Assets/Script/Manager/AppRoom.cs | 25 + .../Protobuf/ProtobufAxibugEmuOnline.cs | 482 +++++++++++++++++- AxibugEmuOnline.Server/Manager/RoomManager.cs | 22 + .../Protobuf/ProtobufAxibugEmuOnline.cs | 482 +++++++++++++++++- .../out/CS/ProtobufAxibugEmuOnline.cs | 482 +++++++++++++++++- .../proto/protobuf_AxibugEmuOnline.proto | 13 + 7 files changed, 1441 insertions(+), 66 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/Event/EEvent.cs b/AxibugEmuOnline.Client/Assets/Script/Event/EEvent.cs index 12673f1..666423b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Event/EEvent.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Event/EEvent.cs @@ -8,6 +8,7 @@ OnRoomListAllUpdate,//房间列表全量刷新 OnRoomListSingleUpdate,//房间列表中单个更新 + OnRoomGetRoomScreen,//获取到房间数据 /// /// 我进入房间 diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs index 73d4ec5..515db04 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/AppRoom.cs @@ -31,6 +31,7 @@ namespace AxibugEmuOnline.Client.Manager } Protobuf_Room_List _Protobuf_Room_List = new Protobuf_Room_List(); + Protobuf_Room_Get_Screen _Protobuf_Room_Get_Screen = new Protobuf_Room_Get_Screen(); Protobuf_Room_Create _Protobuf_Room_Create = new Protobuf_Room_Create(); Protobuf_Room_Join _Protobuf_Room_Join = new Protobuf_Room_Join(); Protobuf_Room_Leave _Protobuf_Room_Leave = new Protobuf_Room_Leave(); @@ -41,6 +42,7 @@ namespace AxibugEmuOnline.Client.Manager { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomList, RecvGetRoomList); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomListUpdate, RecvGetRoomListUpdate); + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomGetScreen, RecvRoomGetScreen); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomCreate, RecvCreateRoom); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomJoin, RecvJoinRoom); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomLeave, RecvLeavnRoom); @@ -200,6 +202,29 @@ namespace AxibugEmuOnline.Client.Manager Protobuf_Room_Update_RESP msg = ProtoBufHelper.DeSerizlize(reqData); AddOrUpdateRoomList(msg.RoomMiniInfo); Eventer.Instance.PostEvent(EEvent.OnRoomListSingleUpdate, msg.RoomMiniInfo.GameRomID); + } + + /// + /// 获取房间画面快照 + /// + /// + public void SendGetRoomScreen(int RoomID) + { + _Protobuf_Room_Get_Screen.RoomID = RoomID; + App.log.Info($"获取房间画面快照"); + App.network.SendToServer((int)CommandID.CmdRoomGetScreen, ProtoBufHelper.Serizlize(_Protobuf_Room_Get_Screen)); + } + /// + /// 获取单个房间画面 + /// + /// + void RecvRoomGetScreen(byte[] reqData) + { + App.log.Debug("单个房间状态更新"); + Protobuf_Room_Get_Screen_RESP msg = ProtoBufHelper.DeSerizlize(reqData); + //解压 + byte[] data = Helper.DecompressByteArray(msg.RawBitmap.ToArray()); + Eventer.Instance.PostEvent(EEvent.OnRoomGetRoomScreen, msg.RoomID, data); } /// diff --git a/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs b/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs index 6c6329c..d8b8324 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Protobuf/ProtobufAxibugEmuOnline.cs @@ -71,26 +71,30 @@ namespace AxibugProtobuf { "KAwiPwonUHJvdG9idWZfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3", "EhQKDExvYWRTdGF0ZVJhdxgBIAEoDCIuCixQcm90b2J1Zl9Sb29tX0hvc3RQ", "bGF5ZXJfVXBkYXRlU3RhdGVSYXdfUkVTUCIcChpQcm90b2J1Zl9Sb29tX1Bs", - "YXllcl9SZWFkeSqaAwoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghD", - "TURfUElORxABEgwKCENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhAKC0NN", - "RF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01EX1Jvb21f", - "TGlzdF9VcGRhdGUQiicSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNNRF9S", - "b29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jvb21f", - "TXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSFgoRQ01EX1Jvb21fV2FpdFN0ZXAQ", - "0SgSJwoiQ01EX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxDUKBIa", - "ChVDTURfUm9vbV9QbGF5ZXJfUmVhZHkQ2CgSIAobQ01EX1Jvb21fU2luZ2Vs", - "X1BsYXllcklucHV0EPouEh0KGENNRF9ST09NX1NZTl9QbGF5ZXJJbnB1dBD/", - "LhIPCgpDTURfU2NyZWVuENk2Ko8BCglFcnJvckNvZGUSEAoMRVJST1JfREVG", - "QVVMEAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAK", - "EiUKIUVSUk9SX1JPT01fU0xPVF9SRUFETFlfSEFEX1BMQVlFUhALEiEKHUVS", - "Uk9SX1JPT01fQ0FOVF9ET19DVVJSX1NUQVRFEDIqHAoJTG9naW5UeXBlEg8K", - "C0Jhc2VEZWZhdWx0EAAqSwoKRGV2aWNlVHlwZRIWChJEZXZpY2VUeXBlX0Rl", - "ZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQAxIHCgNQU1YQ", - "BCpwCg1Sb29tR2FtZVN0YXRlEhIKDk5vbmVfR2FtZVN0YXRlEAASDAoIT25s", - "eUhvc3QQARIRCg1XYWl0UmF3VXBkYXRlEAISDQoJV2FpdFJlYWR5EAMSCQoF", - "UGF1c2UQBBIQCgxJbk9ubGluZUdhbWUQBSpOChFMb2dpblJlc3VsdFN0YXR1", - "cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9LEAES", - "DgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); + "YXllcl9SZWFkeSIqChhQcm90b2J1Zl9Sb29tX0dldF9TY3JlZW4SDgoGUm9v", + "bUlEGAEgASgFIlMKHVByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbl9SRVNQEg4K", + "BlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0JpdG1hcBgD", + "IAEoDCq0AwoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghDTURfUElO", + "RxABEgwKCENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhAKC0NNRF9DSEFU", + "TVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01EX1Jvb21fTGlzdF9V", + "cGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCTJxIUCg9DTURfUm9v", + "bV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxITCg5DTURfUm9vbV9M", + "ZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVfQ2hhbmdlZBD2JxIW", + "ChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJDTURfUm9vbV9Ib3N0UGxheWVy", + "X1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9Sb29tX1BsYXllcl9SZWFkeRDY", + "KBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVySW5wdXQQ+i4SHQoYQ01EX1JP", + "T01fU1lOX1BsYXllcklucHV0EP8uEg8KCkNNRF9TY3JlZW4Q2TYqjwEKCUVy", + "cm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9PSxABEhgKFEVS", + "Uk9SX1JPT01fTk9UX0ZPVU5EEAoSJQohRVJST1JfUk9PTV9TTE9UX1JFQURM", + "WV9IQURfUExBWUVSEAsSIQodRVJST1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RB", + "VEUQMiocCglMb2dpblR5cGUSDwoLQmFzZURlZmF1bHQQACpLCgpEZXZpY2VU", + "eXBlEhYKEkRldmljZVR5cGVfRGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9p", + "ZBACEgcKA0lPUxADEgcKA1BTVhAEKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9u", + "ZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQ", + "AhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAF", + "Kk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jh", + "c2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90", + "bzM=")); 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.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -117,7 +121,9 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP), global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP.Parser, new[]{ "WaitStep", "LoadStateRaw" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw.Parser, new[]{ "LoadStateRaw" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw_RESP), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw_RESP.Parser, null, 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) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, null, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null) })); } #endregion @@ -154,6 +160,10 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_Room_List_Update")] CmdRoomListUpdate = 5002, /// + ///房间列表 上行 | 下行 对应 Protobuf_Room_Get_Screen | Protobuf_Room_Get_Screen_RESP + /// + [pbr::OriginalName("CMD_Room_Get_Screen")] CmdRoomGetScreen = 5011, + /// ///房间内相关 /// [pbr::OriginalName("CMD_Room_Create")] CmdRoomCreate = 5101, @@ -180,7 +190,7 @@ namespace AxibugProtobuf { /// 主机玩家 上行 CMD_Room_HostPlayer_UpdateStateRaw消息,上传即时存档 /// 主机玩家上传完毕之后,服务器会通知进入Step1 /// - /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待(主机玩家一人上传) + /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待 /// 所有玩家确保加载ROM和即时存档,并保持模拟器暂停,准备完毕后 发送 CMD_Room_Player_Ready /// 所有玩家Ready之后,服务器会根据所有玩家延迟提前跑若干Frame,通知进入Step2 /// @@ -5727,6 +5737,434 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Room_Get_Screen : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Get_Screen()); + 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[24]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen(Protobuf_Room_Get_Screen other) : this() { + roomID_ = other.roomID_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen Clone() { + return new Protobuf_Room_Get_Screen(this); + } + + /// Field number for the "RoomID" field. + public const int RoomIDFieldNumber = 1; + private int roomID_; + /// + ///房间ID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int RoomID { + get { return roomID_; } + set { + roomID_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Get_Screen); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Get_Screen other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RoomID != other.RoomID) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (RoomID != 0) hash ^= RoomID.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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + 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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (RoomID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomID); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Get_Screen other) { + if (other == null) { + return; + } + if (other.RoomID != 0) { + RoomID = other.RoomID; + } + _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: { + RoomID = 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: { + RoomID = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_Get_Screen_RESP : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Get_Screen_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[25]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP(Protobuf_Room_Get_Screen_RESP other) : this() { + roomID_ = other.roomID_; + frameID_ = other.frameID_; + rawBitmap_ = other.rawBitmap_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP Clone() { + return new Protobuf_Room_Get_Screen_RESP(this); + } + + /// Field number for the "RoomID" field. + public const int RoomIDFieldNumber = 1; + private int roomID_; + /// + ///房间ID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int RoomID { + get { return roomID_; } + set { + roomID_ = value; + } + } + + /// Field number for the "FrameID" field. + public const int FrameIDFieldNumber = 2; + private int frameID_; + /// + ///帧编号 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int FrameID { + get { return frameID_; } + set { + frameID_ = value; + } + } + + /// Field number for the "RawBitmap" field. + public const int RawBitmapFieldNumber = 3; + private pb::ByteString rawBitmap_ = pb::ByteString.Empty; + /// + ///渲染层画面 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pb::ByteString RawBitmap { + get { return rawBitmap_; } + set { + rawBitmap_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Get_Screen_RESP); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Get_Screen_RESP other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RoomID != other.RoomID) return false; + if (FrameID != other.FrameID) return false; + if (RawBitmap != other.RawBitmap) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (RoomID != 0) hash ^= RoomID.GetHashCode(); + if (FrameID != 0) hash ^= FrameID.GetHashCode(); + if (RawBitmap.Length != 0) hash ^= RawBitmap.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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (FrameID != 0) { + output.WriteRawTag(16); + output.WriteInt32(FrameID); + } + if (RawBitmap.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(RawBitmap); + } + 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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (FrameID != 0) { + output.WriteRawTag(16); + output.WriteInt32(FrameID); + } + if (RawBitmap.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(RawBitmap); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (RoomID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomID); + } + if (FrameID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(FrameID); + } + if (RawBitmap.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(RawBitmap); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Get_Screen_RESP other) { + if (other == null) { + return; + } + if (other.RoomID != 0) { + RoomID = other.RoomID; + } + if (other.FrameID != 0) { + FrameID = other.FrameID; + } + if (other.RawBitmap.Length != 0) { + RawBitmap = other.RawBitmap; + } + _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: { + RoomID = input.ReadInt32(); + break; + } + case 16: { + FrameID = input.ReadInt32(); + break; + } + case 26: { + RawBitmap = 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: { + RoomID = input.ReadInt32(); + break; + } + case 16: { + FrameID = input.ReadInt32(); + break; + } + case 26: { + RawBitmap = input.ReadBytes(); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/AxibugEmuOnline.Server/Manager/RoomManager.cs b/AxibugEmuOnline.Server/Manager/RoomManager.cs index 466bcd5..cdcca5a 100644 --- a/AxibugEmuOnline.Server/Manager/RoomManager.cs +++ b/AxibugEmuOnline.Server/Manager/RoomManager.cs @@ -20,6 +20,7 @@ namespace AxibugEmuOnline.Server public RoomManager() { NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomList, OnCmdRoomList); + NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomGetScreen, CmdRoomGetScreen); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomCreate, OnCmdRoomCreate); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomJoin, OnCmdRoomJoin); NetMsg.Instance.RegNetMsgEvent((int)CommandID.CmdRoomLeave, OnCmdRoomLeave); @@ -132,6 +133,27 @@ namespace AxibugEmuOnline.Server resp.RoomMiniInfoList.Add(GetProtoDataRoom(room)); AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdChatmsg, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); } + public void CmdRoomGetScreen(Socket sk, byte[] reqData) + { + AppSrv.g_Log.Debug($"OnCmdRoomList "); + ClientInfo _c = AppSrv.g_ClientMgr.GetClientForSocket(sk); + Protobuf_Room_Get_Screen msg = ProtoBufHelper.DeSerizlize(reqData); + + Data_RoomData room = GetRoomData(_c.RoomState.RoomID); + bool bHadRoomStateChange = false; + ErrorCode Errcode = ErrorCode.ErrorOk; + Protobuf_Room_Get_Screen_RESP resp = new Protobuf_Room_Get_Screen_RESP(); + if (room == null) + Errcode = ErrorCode.ErrorRoomNotFound; + else + { + resp.FrameID = (int)room.mCurrFrameId; + resp.RoomID = room.RoomID; + resp.RawBitmap = room.ScreenRaw; + } + + AppSrv.g_ClientMgr.ClientSend(_c, (int)CommandID.CmdRoomGetScreen, (int)ErrorCode.ErrorOk, ProtoBufHelper.Serizlize(resp)); + } /// /// diff --git a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs index 6c6329c..d8b8324 100644 --- a/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs +++ b/AxibugEmuOnline.Server/Protobuf/ProtobufAxibugEmuOnline.cs @@ -71,26 +71,30 @@ namespace AxibugProtobuf { "KAwiPwonUHJvdG9idWZfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3", "EhQKDExvYWRTdGF0ZVJhdxgBIAEoDCIuCixQcm90b2J1Zl9Sb29tX0hvc3RQ", "bGF5ZXJfVXBkYXRlU3RhdGVSYXdfUkVTUCIcChpQcm90b2J1Zl9Sb29tX1Bs", - "YXllcl9SZWFkeSqaAwoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghD", - "TURfUElORxABEgwKCENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhAKC0NN", - "RF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01EX1Jvb21f", - "TGlzdF9VcGRhdGUQiicSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNNRF9S", - "b29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jvb21f", - "TXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSFgoRQ01EX1Jvb21fV2FpdFN0ZXAQ", - "0SgSJwoiQ01EX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxDUKBIa", - "ChVDTURfUm9vbV9QbGF5ZXJfUmVhZHkQ2CgSIAobQ01EX1Jvb21fU2luZ2Vs", - "X1BsYXllcklucHV0EPouEh0KGENNRF9ST09NX1NZTl9QbGF5ZXJJbnB1dBD/", - "LhIPCgpDTURfU2NyZWVuENk2Ko8BCglFcnJvckNvZGUSEAoMRVJST1JfREVG", - "QVVMEAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAK", - "EiUKIUVSUk9SX1JPT01fU0xPVF9SRUFETFlfSEFEX1BMQVlFUhALEiEKHUVS", - "Uk9SX1JPT01fQ0FOVF9ET19DVVJSX1NUQVRFEDIqHAoJTG9naW5UeXBlEg8K", - "C0Jhc2VEZWZhdWx0EAAqSwoKRGV2aWNlVHlwZRIWChJEZXZpY2VUeXBlX0Rl", - "ZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQAxIHCgNQU1YQ", - "BCpwCg1Sb29tR2FtZVN0YXRlEhIKDk5vbmVfR2FtZVN0YXRlEAASDAoIT25s", - "eUhvc3QQARIRCg1XYWl0UmF3VXBkYXRlEAISDQoJV2FpdFJlYWR5EAMSCQoF", - "UGF1c2UQBBIQCgxJbk9ubGluZUdhbWUQBSpOChFMb2dpblJlc3VsdFN0YXR1", - "cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9LEAES", - "DgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); + "YXllcl9SZWFkeSIqChhQcm90b2J1Zl9Sb29tX0dldF9TY3JlZW4SDgoGUm9v", + "bUlEGAEgASgFIlMKHVByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbl9SRVNQEg4K", + "BlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0JpdG1hcBgD", + "IAEoDCq0AwoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghDTURfUElO", + "RxABEgwKCENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhAKC0NNRF9DSEFU", + "TVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01EX1Jvb21fTGlzdF9V", + "cGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCTJxIUCg9DTURfUm9v", + "bV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxITCg5DTURfUm9vbV9M", + "ZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVfQ2hhbmdlZBD2JxIW", + "ChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJDTURfUm9vbV9Ib3N0UGxheWVy", + "X1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9Sb29tX1BsYXllcl9SZWFkeRDY", + "KBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVySW5wdXQQ+i4SHQoYQ01EX1JP", + "T01fU1lOX1BsYXllcklucHV0EP8uEg8KCkNNRF9TY3JlZW4Q2TYqjwEKCUVy", + "cm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9PSxABEhgKFEVS", + "Uk9SX1JPT01fTk9UX0ZPVU5EEAoSJQohRVJST1JfUk9PTV9TTE9UX1JFQURM", + "WV9IQURfUExBWUVSEAsSIQodRVJST1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RB", + "VEUQMiocCglMb2dpblR5cGUSDwoLQmFzZURlZmF1bHQQACpLCgpEZXZpY2VU", + "eXBlEhYKEkRldmljZVR5cGVfRGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9p", + "ZBACEgcKA0lPUxADEgcKA1BTVhAEKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9u", + "ZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQ", + "AhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAF", + "Kk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jh", + "c2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90", + "bzM=")); 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.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -117,7 +121,9 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP), global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP.Parser, new[]{ "WaitStep", "LoadStateRaw" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw.Parser, new[]{ "LoadStateRaw" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw_RESP), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw_RESP.Parser, null, 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) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, null, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null) })); } #endregion @@ -154,6 +160,10 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_Room_List_Update")] CmdRoomListUpdate = 5002, /// + ///房间列表 上行 | 下行 对应 Protobuf_Room_Get_Screen | Protobuf_Room_Get_Screen_RESP + /// + [pbr::OriginalName("CMD_Room_Get_Screen")] CmdRoomGetScreen = 5011, + /// ///房间内相关 /// [pbr::OriginalName("CMD_Room_Create")] CmdRoomCreate = 5101, @@ -180,7 +190,7 @@ namespace AxibugProtobuf { /// 主机玩家 上行 CMD_Room_HostPlayer_UpdateStateRaw消息,上传即时存档 /// 主机玩家上传完毕之后,服务器会通知进入Step1 /// - /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待(主机玩家一人上传) + /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待 /// 所有玩家确保加载ROM和即时存档,并保持模拟器暂停,准备完毕后 发送 CMD_Room_Player_Ready /// 所有玩家Ready之后,服务器会根据所有玩家延迟提前跑若干Frame,通知进入Step2 /// @@ -5727,6 +5737,434 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Room_Get_Screen : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Get_Screen()); + 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[24]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen(Protobuf_Room_Get_Screen other) : this() { + roomID_ = other.roomID_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen Clone() { + return new Protobuf_Room_Get_Screen(this); + } + + /// Field number for the "RoomID" field. + public const int RoomIDFieldNumber = 1; + private int roomID_; + /// + ///房间ID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int RoomID { + get { return roomID_; } + set { + roomID_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Get_Screen); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Get_Screen other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RoomID != other.RoomID) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (RoomID != 0) hash ^= RoomID.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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + 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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (RoomID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomID); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Get_Screen other) { + if (other == null) { + return; + } + if (other.RoomID != 0) { + RoomID = other.RoomID; + } + _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: { + RoomID = 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: { + RoomID = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_Get_Screen_RESP : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Get_Screen_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[25]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP(Protobuf_Room_Get_Screen_RESP other) : this() { + roomID_ = other.roomID_; + frameID_ = other.frameID_; + rawBitmap_ = other.rawBitmap_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP Clone() { + return new Protobuf_Room_Get_Screen_RESP(this); + } + + /// Field number for the "RoomID" field. + public const int RoomIDFieldNumber = 1; + private int roomID_; + /// + ///房间ID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int RoomID { + get { return roomID_; } + set { + roomID_ = value; + } + } + + /// Field number for the "FrameID" field. + public const int FrameIDFieldNumber = 2; + private int frameID_; + /// + ///帧编号 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int FrameID { + get { return frameID_; } + set { + frameID_ = value; + } + } + + /// Field number for the "RawBitmap" field. + public const int RawBitmapFieldNumber = 3; + private pb::ByteString rawBitmap_ = pb::ByteString.Empty; + /// + ///渲染层画面 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pb::ByteString RawBitmap { + get { return rawBitmap_; } + set { + rawBitmap_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Get_Screen_RESP); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Get_Screen_RESP other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RoomID != other.RoomID) return false; + if (FrameID != other.FrameID) return false; + if (RawBitmap != other.RawBitmap) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (RoomID != 0) hash ^= RoomID.GetHashCode(); + if (FrameID != 0) hash ^= FrameID.GetHashCode(); + if (RawBitmap.Length != 0) hash ^= RawBitmap.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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (FrameID != 0) { + output.WriteRawTag(16); + output.WriteInt32(FrameID); + } + if (RawBitmap.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(RawBitmap); + } + 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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (FrameID != 0) { + output.WriteRawTag(16); + output.WriteInt32(FrameID); + } + if (RawBitmap.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(RawBitmap); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (RoomID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomID); + } + if (FrameID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(FrameID); + } + if (RawBitmap.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(RawBitmap); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Get_Screen_RESP other) { + if (other == null) { + return; + } + if (other.RoomID != 0) { + RoomID = other.RoomID; + } + if (other.FrameID != 0) { + FrameID = other.FrameID; + } + if (other.RawBitmap.Length != 0) { + RawBitmap = other.RawBitmap; + } + _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: { + RoomID = input.ReadInt32(); + break; + } + case 16: { + FrameID = input.ReadInt32(); + break; + } + case 26: { + RawBitmap = 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: { + RoomID = input.ReadInt32(); + break; + } + case 16: { + FrameID = input.ReadInt32(); + break; + } + case 26: { + RawBitmap = input.ReadBytes(); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs index 6c6329c..d8b8324 100644 --- a/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs +++ b/ProtobufCore/out/CS/ProtobufAxibugEmuOnline.cs @@ -71,26 +71,30 @@ namespace AxibugProtobuf { "KAwiPwonUHJvdG9idWZfUm9vbV9Ib3N0UGxheWVyX1VwZGF0ZVN0YXRlUmF3", "EhQKDExvYWRTdGF0ZVJhdxgBIAEoDCIuCixQcm90b2J1Zl9Sb29tX0hvc3RQ", "bGF5ZXJfVXBkYXRlU3RhdGVSYXdfUkVTUCIcChpQcm90b2J1Zl9Sb29tX1Bs", - "YXllcl9SZWFkeSqaAwoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghD", - "TURfUElORxABEgwKCENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhAKC0NN", - "RF9DSEFUTVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01EX1Jvb21f", - "TGlzdF9VcGRhdGUQiicSFAoPQ01EX1Jvb21fQ3JlYXRlEO0nEhIKDUNNRF9S", - "b29tX0pvaW4Q8ScSEwoOQ01EX1Jvb21fTGVhdmUQ8icSIgodQ01EX1Jvb21f", - "TXlSb29tX1N0YXRlX0NoYW5nZWQQ9icSFgoRQ01EX1Jvb21fV2FpdFN0ZXAQ", - "0SgSJwoiQ01EX1Jvb21fSG9zdFBsYXllcl9VcGRhdGVTdGF0ZVJhdxDUKBIa", - "ChVDTURfUm9vbV9QbGF5ZXJfUmVhZHkQ2CgSIAobQ01EX1Jvb21fU2luZ2Vs", - "X1BsYXllcklucHV0EPouEh0KGENNRF9ST09NX1NZTl9QbGF5ZXJJbnB1dBD/", - "LhIPCgpDTURfU2NyZWVuENk2Ko8BCglFcnJvckNvZGUSEAoMRVJST1JfREVG", - "QVVMEAASDAoIRVJST1JfT0sQARIYChRFUlJPUl9ST09NX05PVF9GT1VORBAK", - "EiUKIUVSUk9SX1JPT01fU0xPVF9SRUFETFlfSEFEX1BMQVlFUhALEiEKHUVS", - "Uk9SX1JPT01fQ0FOVF9ET19DVVJSX1NUQVRFEDIqHAoJTG9naW5UeXBlEg8K", - "C0Jhc2VEZWZhdWx0EAAqSwoKRGV2aWNlVHlwZRIWChJEZXZpY2VUeXBlX0Rl", - "ZmF1bHQQABIGCgJQQxABEgsKB0FuZHJvaWQQAhIHCgNJT1MQAxIHCgNQU1YQ", - "BCpwCg1Sb29tR2FtZVN0YXRlEhIKDk5vbmVfR2FtZVN0YXRlEAASDAoIT25s", - "eUhvc3QQARIRCg1XYWl0UmF3VXBkYXRlEAISDQoJV2FpdFJlYWR5EAMSCQoF", - "UGF1c2UQBBIQCgxJbk9ubGluZUdhbWUQBSpOChFMb2dpblJlc3VsdFN0YXR1", - "cxIhCh1Mb2dpblJlc3VsdFN0YXR1c19CYXNlRGVmYXVsdBAAEgYKAk9LEAES", - "DgoKQWNjb3VudEVychACQgJIAWIGcHJvdG8z")); + "YXllcl9SZWFkeSIqChhQcm90b2J1Zl9Sb29tX0dldF9TY3JlZW4SDgoGUm9v", + "bUlEGAEgASgFIlMKHVByb3RvYnVmX1Jvb21fR2V0X1NjcmVlbl9SRVNQEg4K", + "BlJvb21JRBgBIAEoBRIPCgdGcmFtZUlEGAIgASgFEhEKCVJhd0JpdG1hcBgD", + "IAEoDCq0AwoJQ29tbWFuZElEEg4KCkNNRF9ERUZBVUwQABIMCghDTURfUElO", + "RxABEgwKCENNRF9QT05HEAISDgoJQ01EX0xPR0lOENEPEhAKC0NNRF9DSEFU", + "TVNHEKEfEhIKDUNNRF9Sb29tX0xpc3QQiScSGQoUQ01EX1Jvb21fTGlzdF9V", + "cGRhdGUQiicSGAoTQ01EX1Jvb21fR2V0X1NjcmVlbhCTJxIUCg9DTURfUm9v", + "bV9DcmVhdGUQ7ScSEgoNQ01EX1Jvb21fSm9pbhDxJxITCg5DTURfUm9vbV9M", + "ZWF2ZRDyJxIiCh1DTURfUm9vbV9NeVJvb21fU3RhdGVfQ2hhbmdlZBD2JxIW", + "ChFDTURfUm9vbV9XYWl0U3RlcBDRKBInCiJDTURfUm9vbV9Ib3N0UGxheWVy", + "X1VwZGF0ZVN0YXRlUmF3ENQoEhoKFUNNRF9Sb29tX1BsYXllcl9SZWFkeRDY", + "KBIgChtDTURfUm9vbV9TaW5nZWxfUGxheWVySW5wdXQQ+i4SHQoYQ01EX1JP", + "T01fU1lOX1BsYXllcklucHV0EP8uEg8KCkNNRF9TY3JlZW4Q2TYqjwEKCUVy", + "cm9yQ29kZRIQCgxFUlJPUl9ERUZBVUwQABIMCghFUlJPUl9PSxABEhgKFEVS", + "Uk9SX1JPT01fTk9UX0ZPVU5EEAoSJQohRVJST1JfUk9PTV9TTE9UX1JFQURM", + "WV9IQURfUExBWUVSEAsSIQodRVJST1JfUk9PTV9DQU5UX0RPX0NVUlJfU1RB", + "VEUQMiocCglMb2dpblR5cGUSDwoLQmFzZURlZmF1bHQQACpLCgpEZXZpY2VU", + "eXBlEhYKEkRldmljZVR5cGVfRGVmYXVsdBAAEgYKAlBDEAESCwoHQW5kcm9p", + "ZBACEgcKA0lPUxADEgcKA1BTVhAEKnAKDVJvb21HYW1lU3RhdGUSEgoOTm9u", + "ZV9HYW1lU3RhdGUQABIMCghPbmx5SG9zdBABEhEKDVdhaXRSYXdVcGRhdGUQ", + "AhINCglXYWl0UmVhZHkQAxIJCgVQYXVzZRAEEhAKDEluT25saW5lR2FtZRAF", + "Kk4KEUxvZ2luUmVzdWx0U3RhdHVzEiEKHUxvZ2luUmVzdWx0U3RhdHVzX0Jh", + "c2VEZWZhdWx0EAASBgoCT0sQARIOCgpBY2NvdW50RXJyEAJCAkgBYgZwcm90", + "bzM=")); 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.RoomGameState), typeof(global::AxibugProtobuf.LoginResultStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -117,7 +121,9 @@ namespace AxibugProtobuf { new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP), global::AxibugProtobuf.Protobuf_Room_WaitStep_RESP.Parser, new[]{ "WaitStep", "LoadStateRaw" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw.Parser, new[]{ "LoadStateRaw" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw_RESP), global::AxibugProtobuf.Protobuf_Room_HostPlayer_UpdateStateRaw_RESP.Parser, null, 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) + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Player_Ready), global::AxibugProtobuf.Protobuf_Room_Player_Ready.Parser, null, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen), global::AxibugProtobuf.Protobuf_Room_Get_Screen.Parser, new[]{ "RoomID" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP), global::AxibugProtobuf.Protobuf_Room_Get_Screen_RESP.Parser, new[]{ "RoomID", "FrameID", "RawBitmap" }, null, null, null, null) })); } #endregion @@ -154,6 +160,10 @@ namespace AxibugProtobuf { /// [pbr::OriginalName("CMD_Room_List_Update")] CmdRoomListUpdate = 5002, /// + ///房间列表 上行 | 下行 对应 Protobuf_Room_Get_Screen | Protobuf_Room_Get_Screen_RESP + /// + [pbr::OriginalName("CMD_Room_Get_Screen")] CmdRoomGetScreen = 5011, + /// ///房间内相关 /// [pbr::OriginalName("CMD_Room_Create")] CmdRoomCreate = 5101, @@ -180,7 +190,7 @@ namespace AxibugProtobuf { /// 主机玩家 上行 CMD_Room_HostPlayer_UpdateStateRaw消息,上传即时存档 /// 主机玩家上传完毕之后,服务器会通知进入Step1 /// - /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待(主机玩家一人上传) + /// Step1:服务器广播"等待-全员加载即时存档" CMD_Room_WaitStep WaitStep=[1] 附带即时存档 ---> 客户端:全员等待 /// 所有玩家确保加载ROM和即时存档,并保持模拟器暂停,准备完毕后 发送 CMD_Room_Player_Ready /// 所有玩家Ready之后,服务器会根据所有玩家延迟提前跑若干Frame,通知进入Step2 /// @@ -5727,6 +5737,434 @@ namespace AxibugProtobuf { } + public sealed partial class Protobuf_Room_Get_Screen : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Get_Screen()); + 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[24]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen(Protobuf_Room_Get_Screen other) : this() { + roomID_ = other.roomID_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen Clone() { + return new Protobuf_Room_Get_Screen(this); + } + + /// Field number for the "RoomID" field. + public const int RoomIDFieldNumber = 1; + private int roomID_; + /// + ///房间ID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int RoomID { + get { return roomID_; } + set { + roomID_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Get_Screen); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Get_Screen other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RoomID != other.RoomID) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (RoomID != 0) hash ^= RoomID.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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + 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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (RoomID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomID); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Get_Screen other) { + if (other == null) { + return; + } + if (other.RoomID != 0) { + RoomID = other.RoomID; + } + _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: { + RoomID = 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: { + RoomID = input.ReadInt32(); + break; + } + } + } + } + #endif + + } + + public sealed partial class Protobuf_Room_Get_Screen_RESP : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Protobuf_Room_Get_Screen_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[25]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP(Protobuf_Room_Get_Screen_RESP other) : this() { + roomID_ = other.roomID_; + frameID_ = other.frameID_; + rawBitmap_ = other.rawBitmap_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public Protobuf_Room_Get_Screen_RESP Clone() { + return new Protobuf_Room_Get_Screen_RESP(this); + } + + /// Field number for the "RoomID" field. + public const int RoomIDFieldNumber = 1; + private int roomID_; + /// + ///房间ID + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int RoomID { + get { return roomID_; } + set { + roomID_ = value; + } + } + + /// Field number for the "FrameID" field. + public const int FrameIDFieldNumber = 2; + private int frameID_; + /// + ///帧编号 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int FrameID { + get { return frameID_; } + set { + frameID_ = value; + } + } + + /// Field number for the "RawBitmap" field. + public const int RawBitmapFieldNumber = 3; + private pb::ByteString rawBitmap_ = pb::ByteString.Empty; + /// + ///渲染层画面 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public pb::ByteString RawBitmap { + get { return rawBitmap_; } + set { + rawBitmap_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override bool Equals(object other) { + return Equals(other as Protobuf_Room_Get_Screen_RESP); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public bool Equals(Protobuf_Room_Get_Screen_RESP other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (RoomID != other.RoomID) return false; + if (FrameID != other.FrameID) return false; + if (RawBitmap != other.RawBitmap) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public override int GetHashCode() { + int hash = 1; + if (RoomID != 0) hash ^= RoomID.GetHashCode(); + if (FrameID != 0) hash ^= FrameID.GetHashCode(); + if (RawBitmap.Length != 0) hash ^= RawBitmap.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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (FrameID != 0) { + output.WriteRawTag(16); + output.WriteInt32(FrameID); + } + if (RawBitmap.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(RawBitmap); + } + 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 (RoomID != 0) { + output.WriteRawTag(8); + output.WriteInt32(RoomID); + } + if (FrameID != 0) { + output.WriteRawTag(16); + output.WriteInt32(FrameID); + } + if (RawBitmap.Length != 0) { + output.WriteRawTag(26); + output.WriteBytes(RawBitmap); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public int CalculateSize() { + int size = 0; + if (RoomID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomID); + } + if (FrameID != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(FrameID); + } + if (RawBitmap.Length != 0) { + size += 1 + pb::CodedOutputStream.ComputeBytesSize(RawBitmap); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + public void MergeFrom(Protobuf_Room_Get_Screen_RESP other) { + if (other == null) { + return; + } + if (other.RoomID != 0) { + RoomID = other.RoomID; + } + if (other.FrameID != 0) { + FrameID = other.FrameID; + } + if (other.RawBitmap.Length != 0) { + RawBitmap = other.RawBitmap; + } + _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: { + RoomID = input.ReadInt32(); + break; + } + case 16: { + FrameID = input.ReadInt32(); + break; + } + case 26: { + RawBitmap = 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: { + RoomID = input.ReadInt32(); + break; + } + case 16: { + FrameID = input.ReadInt32(); + break; + } + case 26: { + RawBitmap = input.ReadBytes(); + break; + } + } + } + } + #endif + + } + #endregion } diff --git a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto index 4eb8666..e9a8684 100644 --- a/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto +++ b/ProtobufCore/proto/protobuf_AxibugEmuOnline.proto @@ -17,6 +17,7 @@ enum CommandID //房间列表相关(仅用于列表显示) CMD_Room_List = 5001; //房间列表 上行 | 下行 对应 Protobuf_Room_List | Protobuf_Room_List_RESP CMD_Room_List_Update = 5002; //房间单个房间信息更新 对应 Protobuf_Room_Update_RESP + CMD_Room_Get_Screen = 5011; //房间列表 上行 | 下行 对应 Protobuf_Room_Get_Screen | Protobuf_Room_Get_Screen_RESP //房间内相关 CMD_Room_Create = 5101; //房间创建 对应 Protobuf_Room_Create | Protobuf_Room_Create_RESP @@ -263,4 +264,16 @@ message Protobuf_Room_HostPlayer_UpdateStateRaw_RESP message Protobuf_Room_Player_Ready { +} + +message Protobuf_Room_Get_Screen +{ + int32 RoomID = 1;//房间ID +} + +message Protobuf_Room_Get_Screen_RESP +{ + int32 RoomID = 1;//房间ID + int32 FrameID = 2;//帧编号 + bytes RawBitmap = 3;//渲染层画面 } \ No newline at end of file