From cd72623a8a7702679fe01bac639e30d02cd40f92 Mon Sep 17 00:00:00 2001 From: tangmingyou Date: Fri, 31 Mar 2023 11:52:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=A4=A7=E5=8E=85=E7=89=8C?= =?UTF-8?q?=E6=A1=8C=E9=80=9A=E7=9F=A5=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/operation.go | 2 + api/poker.pb.go | 654 ++++++++++++++++++++++------------------ api/poker.proto | 5 + api/proto.js | 203 +++++++++++++ data/config.toml | 4 +- internal/logic/table.go | 17 +- 6 files changed, 584 insertions(+), 301 deletions(-) diff --git a/api/operation.go b/api/operation.go index fc0628f..f073bfd 100644 --- a/api/operation.go +++ b/api/operation.go @@ -56,6 +56,8 @@ var protoInstances = []proto.Message{ &ReqAccountBalance{}, &ResAccountBalance{}, + + &ResLobbyFresh{}, } var ( diff --git a/api/poker.pb.go b/api/poker.pb.go index dea0652..982102d 100644 --- a/api/poker.pb.go +++ b/api/poker.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v3.17.3 +// protoc v3.21.12 // source: poker.proto package api @@ -521,6 +521,54 @@ func (x *ResLobbyView) GetTables() []*LobbyTable { return nil } +// 有新桌面创建通知消息 +type ResLobbyFresh struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TableNo int32 `protobuf:"varint,1,opt,name=tableNo,proto3" json:"tableNo,omitempty"` +} + +func (x *ResLobbyFresh) Reset() { + *x = ResLobbyFresh{} + if protoimpl.UnsafeEnabled { + mi := &file_poker_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResLobbyFresh) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResLobbyFresh) ProtoMessage() {} + +func (x *ResLobbyFresh) ProtoReflect() protoreflect.Message { + mi := &file_poker_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResLobbyFresh.ProtoReflect.Descriptor instead. +func (*ResLobbyFresh) Descriptor() ([]byte, []int) { + return file_poker_proto_rawDescGZIP(), []int{9} +} + +func (x *ResLobbyFresh) GetTableNo() int32 { + if x != nil { + return x.TableNo + } + return 0 +} + type LobbyTable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -535,7 +583,7 @@ type LobbyTable struct { func (x *LobbyTable) Reset() { *x = LobbyTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[9] + mi := &file_poker_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -548,7 +596,7 @@ func (x *LobbyTable) String() string { func (*LobbyTable) ProtoMessage() {} func (x *LobbyTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[9] + mi := &file_poker_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -561,7 +609,7 @@ func (x *LobbyTable) ProtoReflect() protoreflect.Message { // Deprecated: Use LobbyTable.ProtoReflect.Descriptor instead. func (*LobbyTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{9} + return file_poker_proto_rawDescGZIP(), []int{10} } func (x *LobbyTable) GetTableNo() int32 { @@ -606,7 +654,7 @@ type LobbyPlayer struct { func (x *LobbyPlayer) Reset() { *x = LobbyPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[10] + mi := &file_poker_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -619,7 +667,7 @@ func (x *LobbyPlayer) String() string { func (*LobbyPlayer) ProtoMessage() {} func (x *LobbyPlayer) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[10] + mi := &file_poker_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -632,7 +680,7 @@ func (x *LobbyPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use LobbyPlayer.ProtoReflect.Descriptor instead. func (*LobbyPlayer) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{10} + return file_poker_proto_rawDescGZIP(), []int{11} } func (x *LobbyPlayer) GetRobot() bool { @@ -678,7 +726,7 @@ type ReqCreateTable struct { func (x *ReqCreateTable) Reset() { *x = ReqCreateTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[11] + mi := &file_poker_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -691,7 +739,7 @@ func (x *ReqCreateTable) String() string { func (*ReqCreateTable) ProtoMessage() {} func (x *ReqCreateTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[11] + mi := &file_poker_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -704,7 +752,7 @@ func (x *ReqCreateTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCreateTable.ProtoReflect.Descriptor instead. func (*ReqCreateTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{11} + return file_poker_proto_rawDescGZIP(), []int{12} } func (x *ReqCreateTable) GetPlayers() int32 { @@ -746,7 +794,7 @@ type ResCreateTable struct { func (x *ResCreateTable) Reset() { *x = ResCreateTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[12] + mi := &file_poker_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -759,7 +807,7 @@ func (x *ResCreateTable) String() string { func (*ResCreateTable) ProtoMessage() {} func (x *ResCreateTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[12] + mi := &file_poker_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -772,7 +820,7 @@ func (x *ResCreateTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCreateTable.ProtoReflect.Descriptor instead. func (*ResCreateTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{12} + return file_poker_proto_rawDescGZIP(), []int{13} } func (x *ResCreateTable) GetTableNo() int32 { @@ -794,7 +842,7 @@ type ReqJoinTable struct { func (x *ReqJoinTable) Reset() { *x = ReqJoinTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[13] + mi := &file_poker_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -807,7 +855,7 @@ func (x *ReqJoinTable) String() string { func (*ReqJoinTable) ProtoMessage() {} func (x *ReqJoinTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[13] + mi := &file_poker_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -820,7 +868,7 @@ func (x *ReqJoinTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqJoinTable.ProtoReflect.Descriptor instead. func (*ReqJoinTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{13} + return file_poker_proto_rawDescGZIP(), []int{14} } func (x *ReqJoinTable) GetTableNo() int32 { @@ -840,7 +888,7 @@ type ReqLeaveTable struct { func (x *ReqLeaveTable) Reset() { *x = ReqLeaveTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[14] + mi := &file_poker_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -853,7 +901,7 @@ func (x *ReqLeaveTable) String() string { func (*ReqLeaveTable) ProtoMessage() {} func (x *ReqLeaveTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[14] + mi := &file_poker_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -866,7 +914,7 @@ func (x *ReqLeaveTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqLeaveTable.ProtoReflect.Descriptor instead. func (*ReqLeaveTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{14} + return file_poker_proto_rawDescGZIP(), []int{15} } // 玩家准备开始 @@ -879,7 +927,7 @@ type ReqReadyStart struct { func (x *ReqReadyStart) Reset() { *x = ReqReadyStart{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[15] + mi := &file_poker_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -892,7 +940,7 @@ func (x *ReqReadyStart) String() string { func (*ReqReadyStart) ProtoMessage() {} func (x *ReqReadyStart) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[15] + mi := &file_poker_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -905,7 +953,7 @@ func (x *ReqReadyStart) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqReadyStart.ProtoReflect.Descriptor instead. func (*ReqReadyStart) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{15} + return file_poker_proto_rawDescGZIP(), []int{16} } // 取消准备 @@ -918,7 +966,7 @@ type ReqCancelReady struct { func (x *ReqCancelReady) Reset() { *x = ReqCancelReady{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[16] + mi := &file_poker_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -931,7 +979,7 @@ func (x *ReqCancelReady) String() string { func (*ReqCancelReady) ProtoMessage() {} func (x *ReqCancelReady) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[16] + mi := &file_poker_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -944,7 +992,7 @@ func (x *ReqCancelReady) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqCancelReady.ProtoReflect.Descriptor instead. func (*ReqCancelReady) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{16} + return file_poker_proto_rawDescGZIP(), []int{17} } // 房主踢人 @@ -959,7 +1007,7 @@ type ReqKickOutTable struct { func (x *ReqKickOutTable) Reset() { *x = ReqKickOutTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[17] + mi := &file_poker_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -972,7 +1020,7 @@ func (x *ReqKickOutTable) String() string { func (*ReqKickOutTable) ProtoMessage() {} func (x *ReqKickOutTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[17] + mi := &file_poker_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -985,7 +1033,7 @@ func (x *ReqKickOutTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqKickOutTable.ProtoReflect.Descriptor instead. func (*ReqKickOutTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{17} + return file_poker_proto_rawDescGZIP(), []int{18} } func (x *ReqKickOutTable) GetPlayerId() int64 { @@ -1005,7 +1053,7 @@ type ResKickOutTable struct { func (x *ResKickOutTable) Reset() { *x = ResKickOutTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[18] + mi := &file_poker_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1018,7 +1066,7 @@ func (x *ResKickOutTable) String() string { func (*ResKickOutTable) ProtoMessage() {} func (x *ResKickOutTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[18] + mi := &file_poker_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1031,7 +1079,7 @@ func (x *ResKickOutTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ResKickOutTable.ProtoReflect.Descriptor instead. func (*ResKickOutTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{18} + return file_poker_proto_rawDescGZIP(), []int{19} } type ReqGameAction struct { @@ -1046,7 +1094,7 @@ type ReqGameAction struct { func (x *ReqGameAction) Reset() { *x = ReqGameAction{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[19] + mi := &file_poker_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1059,7 +1107,7 @@ func (x *ReqGameAction) String() string { func (*ReqGameAction) ProtoMessage() {} func (x *ReqGameAction) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[19] + mi := &file_poker_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1072,7 +1120,7 @@ func (x *ReqGameAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGameAction.ProtoReflect.Descriptor instead. func (*ReqGameAction) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{19} + return file_poker_proto_rawDescGZIP(), []int{20} } func (x *ReqGameAction) GetAction() int32 { @@ -1098,7 +1146,7 @@ type ResGameAction struct { func (x *ResGameAction) Reset() { *x = ResGameAction{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[20] + mi := &file_poker_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1111,7 +1159,7 @@ func (x *ResGameAction) String() string { func (*ResGameAction) ProtoMessage() {} func (x *ResGameAction) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[20] + mi := &file_poker_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1124,7 +1172,7 @@ func (x *ResGameAction) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGameAction.ProtoReflect.Descriptor instead. func (*ResGameAction) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{20} + return file_poker_proto_rawDescGZIP(), []int{21} } // 查询玩家当前游戏状态 @@ -1137,7 +1185,7 @@ type ReqGameFullStatus struct { func (x *ReqGameFullStatus) Reset() { *x = ReqGameFullStatus{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[21] + mi := &file_poker_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1150,7 +1198,7 @@ func (x *ReqGameFullStatus) String() string { func (*ReqGameFullStatus) ProtoMessage() {} func (x *ReqGameFullStatus) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[21] + mi := &file_poker_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1163,7 +1211,7 @@ func (x *ReqGameFullStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGameFullStatus.ProtoReflect.Descriptor instead. func (*ReqGameFullStatus) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{21} + return file_poker_proto_rawDescGZIP(), []int{22} } type ResGameFullStatus struct { @@ -1185,7 +1233,7 @@ type ResGameFullStatus struct { func (x *ResGameFullStatus) Reset() { *x = ResGameFullStatus{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[22] + mi := &file_poker_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1198,7 +1246,7 @@ func (x *ResGameFullStatus) String() string { func (*ResGameFullStatus) ProtoMessage() {} func (x *ResGameFullStatus) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[22] + mi := &file_poker_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1211,7 +1259,7 @@ func (x *ResGameFullStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGameFullStatus.ProtoReflect.Descriptor instead. func (*ResGameFullStatus) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{22} + return file_poker_proto_rawDescGZIP(), []int{23} } func (x *ResGameFullStatus) GetTableNo() int32 { @@ -1293,7 +1341,7 @@ type TablePlayer struct { func (x *TablePlayer) Reset() { *x = TablePlayer{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[23] + mi := &file_poker_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1306,7 +1354,7 @@ func (x *TablePlayer) String() string { func (*TablePlayer) ProtoMessage() {} func (x *TablePlayer) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[23] + mi := &file_poker_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1319,7 +1367,7 @@ func (x *TablePlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use TablePlayer.ProtoReflect.Descriptor instead. func (*TablePlayer) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{23} + return file_poker_proto_rawDescGZIP(), []int{24} } func (x *TablePlayer) GetRobot() bool { @@ -1425,7 +1473,7 @@ type Card struct { func (x *Card) Reset() { *x = Card{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[24] + mi := &file_poker_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1438,7 +1486,7 @@ func (x *Card) String() string { func (*Card) ProtoMessage() {} func (x *Card) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[24] + mi := &file_poker_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1451,7 +1499,7 @@ func (x *Card) ProtoReflect() protoreflect.Message { // Deprecated: Use Card.ProtoReflect.Descriptor instead. func (*Card) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{24} + return file_poker_proto_rawDescGZIP(), []int{25} } func (x *Card) GetDot() int32 { @@ -1484,7 +1532,7 @@ type BetRole struct { func (x *BetRole) Reset() { *x = BetRole{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[25] + mi := &file_poker_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1497,7 +1545,7 @@ func (x *BetRole) String() string { func (*BetRole) ProtoMessage() {} func (x *BetRole) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[25] + mi := &file_poker_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1510,7 +1558,7 @@ func (x *BetRole) ProtoReflect() protoreflect.Message { // Deprecated: Use BetRole.ProtoReflect.Descriptor instead. func (*BetRole) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{25} + return file_poker_proto_rawDescGZIP(), []int{26} } func (x *BetRole) GetBetMin() int32 { @@ -1561,7 +1609,7 @@ type HandType struct { func (x *HandType) Reset() { *x = HandType{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[26] + mi := &file_poker_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1574,7 +1622,7 @@ func (x *HandType) String() string { func (*HandType) ProtoMessage() {} func (x *HandType) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[26] + mi := &file_poker_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1587,7 +1635,7 @@ func (x *HandType) ProtoReflect() protoreflect.Message { // Deprecated: Use HandType.ProtoReflect.Descriptor instead. func (*HandType) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{26} + return file_poker_proto_rawDescGZIP(), []int{27} } func (x *HandType) GetHand() string { @@ -1621,7 +1669,7 @@ type ReqGameStart struct { func (x *ReqGameStart) Reset() { *x = ReqGameStart{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[27] + mi := &file_poker_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1634,7 +1682,7 @@ func (x *ReqGameStart) String() string { func (*ReqGameStart) ProtoMessage() {} func (x *ReqGameStart) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[27] + mi := &file_poker_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1647,7 +1695,7 @@ func (x *ReqGameStart) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqGameStart.ProtoReflect.Descriptor instead. func (*ReqGameStart) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{27} + return file_poker_proto_rawDescGZIP(), []int{28} } // 解散房间 @@ -1660,7 +1708,7 @@ type ReqDismissGameTable struct { func (x *ReqDismissGameTable) Reset() { *x = ReqDismissGameTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[28] + mi := &file_poker_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1673,7 +1721,7 @@ func (x *ReqDismissGameTable) String() string { func (*ReqDismissGameTable) ProtoMessage() {} func (x *ReqDismissGameTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[28] + mi := &file_poker_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1686,7 +1734,7 @@ func (x *ReqDismissGameTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqDismissGameTable.ProtoReflect.Descriptor instead. func (*ReqDismissGameTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{28} + return file_poker_proto_rawDescGZIP(), []int{29} } type ResDismissGameTable struct { @@ -1698,7 +1746,7 @@ type ResDismissGameTable struct { func (x *ResDismissGameTable) Reset() { *x = ResDismissGameTable{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[29] + mi := &file_poker_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1711,7 +1759,7 @@ func (x *ResDismissGameTable) String() string { func (*ResDismissGameTable) ProtoMessage() {} func (x *ResDismissGameTable) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[29] + mi := &file_poker_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1724,7 +1772,7 @@ func (x *ResDismissGameTable) ProtoReflect() protoreflect.Message { // Deprecated: Use ResDismissGameTable.ProtoReflect.Descriptor instead. func (*ResDismissGameTable) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{29} + return file_poker_proto_rawDescGZIP(), []int{30} } // 下注 @@ -1741,7 +1789,7 @@ type ReqBetting struct { func (x *ReqBetting) Reset() { *x = ReqBetting{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[30] + mi := &file_poker_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1754,7 +1802,7 @@ func (x *ReqBetting) String() string { func (*ReqBetting) ProtoMessage() {} func (x *ReqBetting) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[30] + mi := &file_poker_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1767,7 +1815,7 @@ func (x *ReqBetting) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqBetting.ProtoReflect.Descriptor instead. func (*ReqBetting) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{30} + return file_poker_proto_rawDescGZIP(), []int{31} } func (x *ReqBetting) GetBetType() int32 { @@ -1806,7 +1854,7 @@ type ResNoticePlayerLine struct { func (x *ResNoticePlayerLine) Reset() { *x = ResNoticePlayerLine{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[31] + mi := &file_poker_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1819,7 +1867,7 @@ func (x *ResNoticePlayerLine) String() string { func (*ResNoticePlayerLine) ProtoMessage() {} func (x *ResNoticePlayerLine) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[31] + mi := &file_poker_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1832,7 +1880,7 @@ func (x *ResNoticePlayerLine) ProtoReflect() protoreflect.Message { // Deprecated: Use ResNoticePlayerLine.ProtoReflect.Descriptor instead. func (*ResNoticePlayerLine) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{31} + return file_poker_proto_rawDescGZIP(), []int{32} } func (x *ResNoticePlayerLine) GetPlayerId() int64 { @@ -1874,7 +1922,7 @@ type ResGameEndSettle struct { func (x *ResGameEndSettle) Reset() { *x = ResGameEndSettle{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[32] + mi := &file_poker_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1887,7 +1935,7 @@ func (x *ResGameEndSettle) String() string { func (*ResGameEndSettle) ProtoMessage() {} func (x *ResGameEndSettle) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[32] + mi := &file_poker_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,7 +1948,7 @@ func (x *ResGameEndSettle) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGameEndSettle.ProtoReflect.Descriptor instead. func (*ResGameEndSettle) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{32} + return file_poker_proto_rawDescGZIP(), []int{33} } func (x *ResGameEndSettle) GetGame() *ResGameFullStatus { @@ -1922,7 +1970,7 @@ type ResCalcWinnerChip struct { func (x *ResCalcWinnerChip) Reset() { *x = ResCalcWinnerChip{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[33] + mi := &file_poker_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1935,7 +1983,7 @@ func (x *ResCalcWinnerChip) String() string { func (*ResCalcWinnerChip) ProtoMessage() {} func (x *ResCalcWinnerChip) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[33] + mi := &file_poker_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1948,7 +1996,7 @@ func (x *ResCalcWinnerChip) ProtoReflect() protoreflect.Message { // Deprecated: Use ResCalcWinnerChip.ProtoReflect.Descriptor instead. func (*ResCalcWinnerChip) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{33} + return file_poker_proto_rawDescGZIP(), []int{34} } func (x *ResCalcWinnerChip) GetWinsChip() map[int64]int32 { @@ -1970,7 +2018,7 @@ type ResGameNextRound struct { func (x *ResGameNextRound) Reset() { *x = ResGameNextRound{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[34] + mi := &file_poker_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1983,7 +2031,7 @@ func (x *ResGameNextRound) String() string { func (*ResGameNextRound) ProtoMessage() {} func (x *ResGameNextRound) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[34] + mi := &file_poker_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1996,7 +2044,7 @@ func (x *ResGameNextRound) ProtoReflect() protoreflect.Message { // Deprecated: Use ResGameNextRound.ProtoReflect.Descriptor instead. func (*ResGameNextRound) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{34} + return file_poker_proto_rawDescGZIP(), []int{35} } func (x *ResGameNextRound) GetRound() int32 { @@ -2015,7 +2063,7 @@ type ReqAccountBalance struct { func (x *ReqAccountBalance) Reset() { *x = ReqAccountBalance{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[35] + mi := &file_poker_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2028,7 +2076,7 @@ func (x *ReqAccountBalance) String() string { func (*ReqAccountBalance) ProtoMessage() {} func (x *ReqAccountBalance) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[35] + mi := &file_poker_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2041,7 +2089,7 @@ func (x *ReqAccountBalance) ProtoReflect() protoreflect.Message { // Deprecated: Use ReqAccountBalance.ProtoReflect.Descriptor instead. func (*ReqAccountBalance) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{35} + return file_poker_proto_rawDescGZIP(), []int{36} } type ResAccountBalance struct { @@ -2055,7 +2103,7 @@ type ResAccountBalance struct { func (x *ResAccountBalance) Reset() { *x = ResAccountBalance{} if protoimpl.UnsafeEnabled { - mi := &file_poker_proto_msgTypes[36] + mi := &file_poker_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2068,7 +2116,7 @@ func (x *ResAccountBalance) String() string { func (*ResAccountBalance) ProtoMessage() {} func (x *ResAccountBalance) ProtoReflect() protoreflect.Message { - mi := &file_poker_proto_msgTypes[36] + mi := &file_poker_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2081,7 +2129,7 @@ func (x *ResAccountBalance) ProtoReflect() protoreflect.Message { // Deprecated: Use ResAccountBalance.ProtoReflect.Descriptor instead. func (*ResAccountBalance) Descriptor() ([]byte, []int) { - return file_poker_proto_rawDescGZIP(), []int{36} + return file_poker_proto_rawDescGZIP(), []int{37} } func (x *ResAccountBalance) GetBalance() int32 { @@ -2127,149 +2175,152 @@ var file_poker_proto_rawDesc = []byte{ 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x12, 0x27, 0x0a, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x62, 0x62, - 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x8c, - 0x01, 0x0a, 0x0a, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, - 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, - 0x6d, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x67, 0x0a, - 0x0b, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, - 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x6f, 0x62, - 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x7c, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, - 0x78, 0x61, 0x73, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, - 0x65, 0x78, 0x61, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x67, 0x42, - 0x6c, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x67, 0x42, - 0x6c, 0x69, 0x6e, 0x64, 0x22, 0x2a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, - 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, - 0x22, 0x28, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, - 0x71, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x52, - 0x65, 0x71, 0x52, 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x10, 0x0a, 0x0e, - 0x52, 0x65, 0x71, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x22, 0x2d, - 0x0a, 0x0f, 0x52, 0x65, 0x71, 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, - 0x0f, 0x52, 0x65, 0x73, 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x22, 0x3b, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x68, 0x69, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x68, 0x69, 0x70, 0x22, 0x0f, 0x0a, - 0x0d, 0x52, 0x65, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x13, - 0x0a, 0x11, 0x52, 0x65, 0x71, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x22, 0x9a, 0x02, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x67, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x68, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x63, 0x68, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x69, 0x67, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x62, 0x69, 0x67, 0x42, 0x6c, 0x69, 0x6e, 0x64, - 0x50, 0x6f, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x42, 0x6c, 0x69, 0x6e, - 0x64, 0x50, 0x6f, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x6d, 0x61, 0x6c, - 0x6c, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x43, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x43, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x22, 0x95, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x68, - 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x68, 0x69, 0x70, 0x12, 0x16, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x24, - 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x65, 0x74, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x65, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x6f, 0x75, - 0x6e, 0x64, 0x42, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x43, 0x68, 0x69, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x43, 0x68, 0x69, 0x70, 0x12, 0x29, - 0x0a, 0x08, 0x68, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x08, 0x68, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x62, 0x65, 0x74, - 0x52, 0x6f, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x42, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x07, 0x62, 0x65, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x12, 0x25, 0x0a, 0x08, 0x68, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x08, - 0x68, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x22, 0x2c, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, - 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x75, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x73, 0x75, 0x69, 0x74, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x62, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x65, - 0x74, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x65, 0x74, 0x4d, - 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x65, 0x74, 0x53, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x62, 0x65, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x62, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x07, 0x62, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x73, 0x22, 0x4c, 0x0a, 0x08, 0x48, 0x61, 0x6e, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, - 0x5a, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x5a, 0x68, - 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x47, 0x61, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x44, 0x69, 0x73, - 0x6d, 0x69, 0x73, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x15, 0x0a, - 0x13, 0x52, 0x65, 0x73, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5c, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x42, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x62, 0x65, 0x74, 0x43, 0x68, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, - 0x65, 0x74, 0x43, 0x68, 0x69, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x6f, 0x72, 0x22, 0x73, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x31, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6e, 0x65, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, - 0x32, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x33, 0x22, 0x3e, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x61, - 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x67, - 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x65, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x43, - 0x61, 0x6c, 0x63, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x68, 0x69, 0x70, 0x12, 0x40, 0x0a, - 0x08, 0x77, 0x69, 0x6e, 0x73, 0x43, 0x68, 0x69, 0x70, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x43, 0x61, 0x6c, 0x63, 0x57, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x43, 0x68, 0x69, 0x70, 0x2e, 0x57, 0x69, 0x6e, 0x73, 0x43, 0x68, 0x69, 0x70, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x73, 0x43, 0x68, 0x69, 0x70, 0x1a, - 0x3b, 0x0a, 0x0d, 0x57, 0x69, 0x6e, 0x73, 0x43, 0x68, 0x69, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x28, 0x0a, 0x10, - 0x52, 0x65, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x2d, 0x0a, 0x11, 0x52, - 0x65, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, - 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0x29, + 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x46, 0x72, 0x65, 0x73, 0x68, 0x12, + 0x18, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x0a, 0x4c, 0x6f, + 0x62, 0x62, 0x79, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x4e, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x07, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, + 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x67, 0x0a, 0x0b, 0x4c, 0x6f, 0x62, 0x62, + 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x62, 0x6f, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, + 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, + 0x72, 0x22, 0x7c, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, + 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x78, 0x61, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x65, 0x78, 0x61, 0x73, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x67, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x67, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x22, + 0x2a, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x22, 0x28, 0x0a, 0x0c, 0x52, + 0x65, 0x71, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x4c, 0x65, 0x61, 0x76, + 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x52, 0x65, 0x61, + 0x64, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x10, 0x0a, 0x0e, 0x52, 0x65, 0x71, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x22, 0x2d, 0x0a, 0x0f, 0x52, 0x65, 0x71, + 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x4b, + 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x3b, 0x0a, 0x0d, 0x52, + 0x65, 0x71, 0x47, 0x61, 0x6d, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x68, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x63, 0x68, 0x69, 0x70, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x47, + 0x61, 0x6d, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x71, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9a, + 0x02, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x12, 0x1c, + 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x68, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x68, 0x69, 0x70, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x62, 0x69, 0x67, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x62, 0x69, 0x67, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x12, 0x24, + 0x0a, 0x0d, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x42, 0x6c, 0x69, 0x6e, + 0x64, 0x50, 0x6f, 0x73, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x61, + 0x72, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, + 0x61, 0x72, 0x64, 0x52, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x2a, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x52, 0x07, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x95, 0x03, 0x0a, 0x0b, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x72, + 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x6f, 0x62, 0x6f, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x68, 0x69, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x68, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, + 0x24, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x42, 0x65, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, + 0x74, 0x43, 0x68, 0x69, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x42, 0x65, 0x74, 0x43, 0x68, 0x69, 0x70, 0x12, 0x29, 0x0a, 0x08, 0x68, 0x61, 0x6e, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x68, 0x61, 0x6e, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x07, 0x62, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x65, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x07, 0x62, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x08, + 0x68, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x52, 0x08, 0x68, 0x61, 0x6e, 0x64, 0x43, + 0x61, 0x72, 0x64, 0x22, 0x2c, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x64, + 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x64, 0x6f, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x75, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x75, 0x69, + 0x74, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x62, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, + 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x62, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x12, 0x22, 0x0a, + 0x0c, 0x62, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x62, 0x65, 0x74, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x62, 0x65, 0x74, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x65, 0x74, + 0x4f, 0x70, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x62, 0x65, 0x74, 0x4f, + 0x70, 0x74, 0x73, 0x22, 0x4c, 0x0a, 0x08, 0x48, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x68, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, + 0x61, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x5a, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x5a, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x22, 0x0e, 0x0a, 0x0c, 0x52, 0x65, 0x71, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x71, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x47, + 0x61, 0x6d, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x73, 0x44, + 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22, + 0x5c, 0x0a, 0x0a, 0x52, 0x65, 0x71, 0x42, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, + 0x07, 0x62, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x62, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x65, 0x74, 0x43, 0x68, + 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x65, 0x74, 0x43, 0x68, 0x69, + 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x73, 0x0a, + 0x13, 0x52, 0x65, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x32, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x32, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x69, 0x6e, 0x65, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x69, 0x6e, + 0x65, 0x33, 0x22, 0x3e, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x64, + 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x67, 0x61, 0x6d, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x73, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x04, 0x67, 0x61, + 0x6d, 0x65, 0x22, 0x92, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x43, 0x61, 0x6c, 0x63, 0x57, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x68, 0x69, 0x70, 0x12, 0x40, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x73, + 0x43, 0x68, 0x69, 0x70, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x52, 0x65, 0x73, 0x43, 0x61, 0x6c, 0x63, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x68, + 0x69, 0x70, 0x2e, 0x57, 0x69, 0x6e, 0x73, 0x43, 0x68, 0x69, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x08, 0x77, 0x69, 0x6e, 0x73, 0x43, 0x68, 0x69, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x57, 0x69, + 0x6e, 0x73, 0x43, 0x68, 0x69, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x28, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x47, 0x61, + 0x6d, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x22, 0x13, 0x0a, 0x11, 0x52, 0x65, 0x71, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x2d, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0b, 0x5a, 0x09, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, + 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2284,7 +2335,7 @@ func file_poker_proto_rawDescGZIP() []byte { return file_poker_proto_rawDescData } -var file_poker_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_poker_proto_msgTypes = make([]protoimpl.MessageInfo, 39) var file_poker_proto_goTypes = []interface{}{ (*ProtoWrap)(nil), // 0: api.ProtoWrap (*Ping)(nil), // 1: api.Ping @@ -2295,46 +2346,47 @@ var file_poker_proto_goTypes = []interface{}{ (*ResIdentity)(nil), // 6: api.ResIdentity (*ReqLobbyView)(nil), // 7: api.ReqLobbyView (*ResLobbyView)(nil), // 8: api.ResLobbyView - (*LobbyTable)(nil), // 9: api.LobbyTable - (*LobbyPlayer)(nil), // 10: api.LobbyPlayer - (*ReqCreateTable)(nil), // 11: api.ReqCreateTable - (*ResCreateTable)(nil), // 12: api.ResCreateTable - (*ReqJoinTable)(nil), // 13: api.ReqJoinTable - (*ReqLeaveTable)(nil), // 14: api.ReqLeaveTable - (*ReqReadyStart)(nil), // 15: api.ReqReadyStart - (*ReqCancelReady)(nil), // 16: api.ReqCancelReady - (*ReqKickOutTable)(nil), // 17: api.ReqKickOutTable - (*ResKickOutTable)(nil), // 18: api.ResKickOutTable - (*ReqGameAction)(nil), // 19: api.ReqGameAction - (*ResGameAction)(nil), // 20: api.ResGameAction - (*ReqGameFullStatus)(nil), // 21: api.ReqGameFullStatus - (*ResGameFullStatus)(nil), // 22: api.ResGameFullStatus - (*TablePlayer)(nil), // 23: api.TablePlayer - (*Card)(nil), // 24: api.Card - (*BetRole)(nil), // 25: api.BetRole - (*HandType)(nil), // 26: api.HandType - (*ReqGameStart)(nil), // 27: api.ReqGameStart - (*ReqDismissGameTable)(nil), // 28: api.ReqDismissGameTable - (*ResDismissGameTable)(nil), // 29: api.ResDismissGameTable - (*ReqBetting)(nil), // 30: api.ReqBetting - (*ResNoticePlayerLine)(nil), // 31: api.ResNoticePlayerLine - (*ResGameEndSettle)(nil), // 32: api.ResGameEndSettle - (*ResCalcWinnerChip)(nil), // 33: api.ResCalcWinnerChip - (*ResGameNextRound)(nil), // 34: api.ResGameNextRound - (*ReqAccountBalance)(nil), // 35: api.ReqAccountBalance - (*ResAccountBalance)(nil), // 36: api.ResAccountBalance - nil, // 37: api.ResCalcWinnerChip.WinsChipEntry + (*ResLobbyFresh)(nil), // 9: api.ResLobbyFresh + (*LobbyTable)(nil), // 10: api.LobbyTable + (*LobbyPlayer)(nil), // 11: api.LobbyPlayer + (*ReqCreateTable)(nil), // 12: api.ReqCreateTable + (*ResCreateTable)(nil), // 13: api.ResCreateTable + (*ReqJoinTable)(nil), // 14: api.ReqJoinTable + (*ReqLeaveTable)(nil), // 15: api.ReqLeaveTable + (*ReqReadyStart)(nil), // 16: api.ReqReadyStart + (*ReqCancelReady)(nil), // 17: api.ReqCancelReady + (*ReqKickOutTable)(nil), // 18: api.ReqKickOutTable + (*ResKickOutTable)(nil), // 19: api.ResKickOutTable + (*ReqGameAction)(nil), // 20: api.ReqGameAction + (*ResGameAction)(nil), // 21: api.ResGameAction + (*ReqGameFullStatus)(nil), // 22: api.ReqGameFullStatus + (*ResGameFullStatus)(nil), // 23: api.ResGameFullStatus + (*TablePlayer)(nil), // 24: api.TablePlayer + (*Card)(nil), // 25: api.Card + (*BetRole)(nil), // 26: api.BetRole + (*HandType)(nil), // 27: api.HandType + (*ReqGameStart)(nil), // 28: api.ReqGameStart + (*ReqDismissGameTable)(nil), // 29: api.ReqDismissGameTable + (*ResDismissGameTable)(nil), // 30: api.ResDismissGameTable + (*ReqBetting)(nil), // 31: api.ReqBetting + (*ResNoticePlayerLine)(nil), // 32: api.ResNoticePlayerLine + (*ResGameEndSettle)(nil), // 33: api.ResGameEndSettle + (*ResCalcWinnerChip)(nil), // 34: api.ResCalcWinnerChip + (*ResGameNextRound)(nil), // 35: api.ResGameNextRound + (*ReqAccountBalance)(nil), // 36: api.ReqAccountBalance + (*ResAccountBalance)(nil), // 37: api.ResAccountBalance + nil, // 38: api.ResCalcWinnerChip.WinsChipEntry } var file_poker_proto_depIdxs = []int32{ - 9, // 0: api.ResLobbyView.tables:type_name -> api.LobbyTable - 10, // 1: api.LobbyTable.players:type_name -> api.LobbyPlayer - 24, // 2: api.ResGameFullStatus.publicCard:type_name -> api.Card - 23, // 3: api.ResGameFullStatus.players:type_name -> api.TablePlayer - 26, // 4: api.TablePlayer.handType:type_name -> api.HandType - 25, // 5: api.TablePlayer.betRole:type_name -> api.BetRole - 24, // 6: api.TablePlayer.handCard:type_name -> api.Card - 22, // 7: api.ResGameEndSettle.game:type_name -> api.ResGameFullStatus - 37, // 8: api.ResCalcWinnerChip.winsChip:type_name -> api.ResCalcWinnerChip.WinsChipEntry + 10, // 0: api.ResLobbyView.tables:type_name -> api.LobbyTable + 11, // 1: api.LobbyTable.players:type_name -> api.LobbyPlayer + 25, // 2: api.ResGameFullStatus.publicCard:type_name -> api.Card + 24, // 3: api.ResGameFullStatus.players:type_name -> api.TablePlayer + 27, // 4: api.TablePlayer.handType:type_name -> api.HandType + 26, // 5: api.TablePlayer.betRole:type_name -> api.BetRole + 25, // 6: api.TablePlayer.handCard:type_name -> api.Card + 23, // 7: api.ResGameEndSettle.game:type_name -> api.ResGameFullStatus + 38, // 8: api.ResCalcWinnerChip.winsChip:type_name -> api.ResCalcWinnerChip.WinsChipEntry 9, // [9:9] is the sub-list for method output_type 9, // [9:9] is the sub-list for method input_type 9, // [9:9] is the sub-list for extension type_name @@ -2457,7 +2509,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LobbyTable); i { + switch v := v.(*ResLobbyFresh); i { case 0: return &v.state case 1: @@ -2469,7 +2521,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LobbyPlayer); i { + switch v := v.(*LobbyTable); i { case 0: return &v.state case 1: @@ -2481,7 +2533,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqCreateTable); i { + switch v := v.(*LobbyPlayer); i { case 0: return &v.state case 1: @@ -2493,7 +2545,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResCreateTable); i { + switch v := v.(*ReqCreateTable); i { case 0: return &v.state case 1: @@ -2505,7 +2557,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqJoinTable); i { + switch v := v.(*ResCreateTable); i { case 0: return &v.state case 1: @@ -2517,7 +2569,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqLeaveTable); i { + switch v := v.(*ReqJoinTable); i { case 0: return &v.state case 1: @@ -2529,7 +2581,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqReadyStart); i { + switch v := v.(*ReqLeaveTable); i { case 0: return &v.state case 1: @@ -2541,7 +2593,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqCancelReady); i { + switch v := v.(*ReqReadyStart); i { case 0: return &v.state case 1: @@ -2553,7 +2605,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqKickOutTable); i { + switch v := v.(*ReqCancelReady); i { case 0: return &v.state case 1: @@ -2565,7 +2617,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResKickOutTable); i { + switch v := v.(*ReqKickOutTable); i { case 0: return &v.state case 1: @@ -2577,7 +2629,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqGameAction); i { + switch v := v.(*ResKickOutTable); i { case 0: return &v.state case 1: @@ -2589,7 +2641,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResGameAction); i { + switch v := v.(*ReqGameAction); i { case 0: return &v.state case 1: @@ -2601,7 +2653,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqGameFullStatus); i { + switch v := v.(*ResGameAction); i { case 0: return &v.state case 1: @@ -2613,7 +2665,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResGameFullStatus); i { + switch v := v.(*ReqGameFullStatus); i { case 0: return &v.state case 1: @@ -2625,7 +2677,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TablePlayer); i { + switch v := v.(*ResGameFullStatus); i { case 0: return &v.state case 1: @@ -2637,7 +2689,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Card); i { + switch v := v.(*TablePlayer); i { case 0: return &v.state case 1: @@ -2649,7 +2701,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BetRole); i { + switch v := v.(*Card); i { case 0: return &v.state case 1: @@ -2661,7 +2713,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HandType); i { + switch v := v.(*BetRole); i { case 0: return &v.state case 1: @@ -2673,7 +2725,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqGameStart); i { + switch v := v.(*HandType); i { case 0: return &v.state case 1: @@ -2685,7 +2737,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqDismissGameTable); i { + switch v := v.(*ReqGameStart); i { case 0: return &v.state case 1: @@ -2697,7 +2749,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResDismissGameTable); i { + switch v := v.(*ReqDismissGameTable); i { case 0: return &v.state case 1: @@ -2709,7 +2761,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqBetting); i { + switch v := v.(*ResDismissGameTable); i { case 0: return &v.state case 1: @@ -2721,7 +2773,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResNoticePlayerLine); i { + switch v := v.(*ReqBetting); i { case 0: return &v.state case 1: @@ -2733,7 +2785,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResGameEndSettle); i { + switch v := v.(*ResNoticePlayerLine); i { case 0: return &v.state case 1: @@ -2745,7 +2797,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResCalcWinnerChip); i { + switch v := v.(*ResGameEndSettle); i { case 0: return &v.state case 1: @@ -2757,7 +2809,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResGameNextRound); i { + switch v := v.(*ResCalcWinnerChip); i { case 0: return &v.state case 1: @@ -2769,7 +2821,7 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReqAccountBalance); i { + switch v := v.(*ResGameNextRound); i { case 0: return &v.state case 1: @@ -2781,6 +2833,18 @@ func file_poker_proto_init() { } } file_poker_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReqAccountBalance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_poker_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ResAccountBalance); i { case 0: return &v.state @@ -2799,7 +2863,7 @@ func file_poker_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_poker_proto_rawDesc, NumEnums: 0, - NumMessages: 38, + NumMessages: 39, NumExtensions: 0, NumServices: 0, }, diff --git a/api/poker.proto b/api/poker.proto index cc79a88..d6ca435 100644 --- a/api/poker.proto +++ b/api/poker.proto @@ -59,6 +59,11 @@ message ResLobbyView { repeated LobbyTable tables = 3; } +// 有新桌面创建通知消息 +message ResLobbyFresh { + int32 tableNo = 1; +} + message LobbyTable { int32 tableNo = 1; // 游戏编号 int32 playerNum = 2; // 限定玩家数量 diff --git a/api/proto.js b/api/proto.js index 45e47d2..3003196 100644 --- a/api/proto.js +++ b/api/proto.js @@ -2135,6 +2135,209 @@ export const api = $root.api = (() => { return ResLobbyView; })(); + api.ResLobbyFresh = (function() { + + /** + * Properties of a ResLobbyFresh. + * @memberof api + * @interface IResLobbyFresh + * @property {number|null} [tableNo] ResLobbyFresh tableNo + */ + + /** + * Constructs a new ResLobbyFresh. + * @memberof api + * @classdesc Represents a ResLobbyFresh. + * @implements IResLobbyFresh + * @constructor + * @param {api.IResLobbyFresh=} [properties] Properties to set + */ + function ResLobbyFresh(properties) { + if (properties) + for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * ResLobbyFresh tableNo. + * @member {number} tableNo + * @memberof api.ResLobbyFresh + * @instance + */ + ResLobbyFresh.prototype.tableNo = 0; + + /** + * Creates a new ResLobbyFresh instance using the specified properties. + * @function create + * @memberof api.ResLobbyFresh + * @static + * @param {api.IResLobbyFresh=} [properties] Properties to set + * @returns {api.ResLobbyFresh} ResLobbyFresh instance + */ + ResLobbyFresh.create = function create(properties) { + return new ResLobbyFresh(properties); + }; + + /** + * Encodes the specified ResLobbyFresh message. Does not implicitly {@link api.ResLobbyFresh.verify|verify} messages. + * @function encode + * @memberof api.ResLobbyFresh + * @static + * @param {api.IResLobbyFresh} message ResLobbyFresh message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResLobbyFresh.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.tableNo != null && Object.hasOwnProperty.call(message, "tableNo")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.tableNo); + return writer; + }; + + /** + * Encodes the specified ResLobbyFresh message, length delimited. Does not implicitly {@link api.ResLobbyFresh.verify|verify} messages. + * @function encodeDelimited + * @memberof api.ResLobbyFresh + * @static + * @param {api.IResLobbyFresh} message ResLobbyFresh message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ResLobbyFresh.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a ResLobbyFresh message from the specified reader or buffer. + * @function decode + * @memberof api.ResLobbyFresh + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {api.ResLobbyFresh} ResLobbyFresh + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResLobbyFresh.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + let end = length === undefined ? reader.len : reader.pos + length, message = new $root.api.ResLobbyFresh(); + while (reader.pos < end) { + let tag = reader.uint32(); + switch (tag >>> 3) { + case 1: { + message.tableNo = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a ResLobbyFresh message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof api.ResLobbyFresh + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {api.ResLobbyFresh} ResLobbyFresh + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ResLobbyFresh.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ResLobbyFresh message. + * @function verify + * @memberof api.ResLobbyFresh + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ResLobbyFresh.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.tableNo != null && message.hasOwnProperty("tableNo")) + if (!$util.isInteger(message.tableNo)) + return "tableNo: integer expected"; + return null; + }; + + /** + * Creates a ResLobbyFresh message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof api.ResLobbyFresh + * @static + * @param {Object.} object Plain object + * @returns {api.ResLobbyFresh} ResLobbyFresh + */ + ResLobbyFresh.fromObject = function fromObject(object) { + if (object instanceof $root.api.ResLobbyFresh) + return object; + let message = new $root.api.ResLobbyFresh(); + if (object.tableNo != null) + message.tableNo = object.tableNo | 0; + return message; + }; + + /** + * Creates a plain object from a ResLobbyFresh message. Also converts values to other types if specified. + * @function toObject + * @memberof api.ResLobbyFresh + * @static + * @param {api.ResLobbyFresh} message ResLobbyFresh + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ResLobbyFresh.toObject = function toObject(message, options) { + if (!options) + options = {}; + let object = {}; + if (options.defaults) + object.tableNo = 0; + if (message.tableNo != null && message.hasOwnProperty("tableNo")) + object.tableNo = message.tableNo; + return object; + }; + + /** + * Converts this ResLobbyFresh to JSON. + * @function toJSON + * @memberof api.ResLobbyFresh + * @instance + * @returns {Object.} JSON object + */ + ResLobbyFresh.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for ResLobbyFresh + * @function getTypeUrl + * @memberof api.ResLobbyFresh + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ResLobbyFresh.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/api.ResLobbyFresh"; + }; + + return ResLobbyFresh; + })(); + api.LobbyTable = (function() { /** diff --git a/data/config.toml b/data/config.toml index b557f79..c1599e3 100644 --- a/data/config.toml +++ b/data/config.toml @@ -1,8 +1,8 @@ [http] #host = "" -#host = "192.168.110.53" -host = "192.168.3.102" +host = "192.168.110.53" +#host = "192.168.3.102" port = 3999 [auth] diff --git a/internal/logic/table.go b/internal/logic/table.go index b9dc3c8..e3875bc 100644 --- a/internal/logic/table.go +++ b/internal/logic/table.go @@ -91,10 +91,19 @@ func HandleReqCreateTable(account *session.NetAccount, msg *api.ReqCreateTable) table.Robots[i] = &game.Robot{} } game.LobbyTables.SetDefault(table.TableNo, table) - //err := store.SaveNewTable(table) - //if err != nil { - // return &api.ResFail{Msg: err.Error()}, nil - //} + + // 通知在大厅的用户拉取最新桌面情况 + delayer.GameDelayer.Delay(time.Second, func() { + times := 0 + store.NetAccounts.ForEach(func(id string, account *session.NetAccount) { + if times < 100 { // 暂只通知100个用户 + if account.Client.IsOnline() && account.Player == nil { + account.Client.Write(&api.ResLobbyFresh{TableNo: table.TableNo}) + times++ + } + } + }) + }) return &api.ResCreateTable{TableNo: table.TableNo}, nil }